¿Qué son los microservicios? ¿Para qué sirven? Ejemplos
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.
Para considerar que un microservicio no tiene dependencia con otros, no debe de tener ninguna realación con otros, o pueden estar relacionados con claves, por ejemplo ID´s.
Un pedido tiene una composición de ID de productos, tiene una relación por ID, esto se considera una dependencia que haga que no se pueda separar?
Buenas Adrián mientras que la relación sea solo por clave identificativa y toda la interacción con otros microservicios sea por interfaz, entonces se puede considerar independiente de los demás.
Los microservicios tienen un patrón de diseño o arquitectura a seguir cuando se crean?
Yo uso la arquitectura hexagonal, que basicamente se basa en delegar todo a una entidad domínio. «La Arquitectura Hexagonal propone que nuestro dominio sea el núcleo de las capas y que este no se acople a nada externo. «