La arquitectura de microservicios está pensada para modularizar nuestra aplicación y poder escalar ciertas funcionalidades de nuestro proyecto que van a tener más sobrecarga.
Concepto de microservicio
Un microservicio es un módulo con funcionalidad propia el cual interacciona con otros microservicios o servicios a través de una interfaz o una API.
Cada microservicio tiene su base de datos independiente y no tiene dependencias con otros microservicios. Esta forma de desarrollar pensando en módulos independientes se basa en crear un sistema facilmente escalable solo en los microservicios que tengan mayor carga, optimizando así los recursos y facilitando la reutilización de código en futuros proyectos.
Las principales características de un microservicio son:
- Base de datos independiente y propia
- Sin dependencias con otros microservicios
- Interfaz en la que se define su interacción con otros microservicios.
Ejemplo para identificar microservicios
Para explicar como identificar los microservicios posibles en un sistema, vamos a poner de ejemplo una tienda online.
Los microservicios posibles en una tienda online podrían ser:
- Microservicio de gestión de usuarios
- Microservicio de gestión de pedidos
- Microservicio de gestión de productos
- Microservicio de gestión de pagos
- Microservicio de gestión de facturación
Cada microservicio tendrá su propia base de datos con sus tablas y entre estos solo se podrán comunicar a través de su interfaz pública.
De esta forma si en el sistema tenemos un uso muy alto del microservicio de pedidos pero en cambio de gestión de usuarios es muy bajo, podremos montar un balanceador de carga con varios despliegues en servidores nuevos de unicamente del microservicio de pedidos para optimizar su rendimiento.
De esta forma solo escalamos las partes con mayor uso y así solo gastamos recursos en las partes que se necesitan.