Compartir a través de


Arquitectura de microservicios

Sugerencia

Este contenido es un extracto del libro electrónico, ".NET Microservices Architecture for Containerized .NET Applications" (Arquitectura de microservicios de .NET para aplicaciones de .NET contenedorizadas), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Miniatura de la portada del libro electrónico 'Arquitectura de microservicios de .NET para aplicaciones .NET contenedorizadas'.

Como el nombre implica, una arquitectura de microservicios es un enfoque para crear una aplicación de servidor como un conjunto de servicios pequeños. Esto significa que una arquitectura de microservicios está orientada principalmente al back-end, aunque el enfoque también se usa para el front-end. Cada servicio se ejecuta en su propio proceso y se comunica con otros procesos mediante protocolos como HTTP/HTTPS, WebSockets o AMQP. Cada microservicio implementa una funcionalidad específica de dominio o negocio de un extremo a otro dentro de un determinado límite de contexto, y cada uno debe desarrollarse de forma autónoma e implementarse de forma independiente. Por último, cada microservicio debe poseer su modelo de datos de dominio relacionado y lógica de dominio (soberanía y administración descentralizada de datos) y podría basarse en diferentes tecnologías de almacenamiento de datos (SQL, NoSQL) y diferentes lenguajes de programación.

¿Qué tamaño debe tener un microservicio? Al desarrollar un microservicio, el tamaño no debe ser el punto importante. En su lugar, el punto importante debe ser crear servicios acoplados flexiblemente para que tenga autonomía de desarrollo, implementación y escalado para cada servicio. Por supuesto, al identificar y diseñar microservicios, debe intentar hacerlos lo más pequeños posible siempre que no tenga demasiadas dependencias directas con otros microservicios. Más importante que el tamaño del microservicio es la cohesión interna que debe tener y su independencia de otros servicios.

¿Por qué una arquitectura de microservicios? En resumen, proporciona agilidad a largo plazo. Los microservicios permiten una mejor capacidad de mantenimiento en sistemas complejos, grandes y altamente escalables, ya que permiten crear aplicaciones basadas en muchos servicios que se pueden implementar de forma independiente que cada uno tiene ciclos de vida pormenorizados y autónomos.

Como ventaja adicional, los microservicios se pueden escalar horizontalmente de forma independiente. En lugar de disponer de una sola aplicación monolítica que debe escalar horizontalmente como una unidad, puede escalar horizontalmente microservicios concretos. De este modo, puede escalar solo el área funcional que necesita más potencia de procesamiento o ancho de banda de red para admitir la demanda, en lugar de escalar horizontalmente otras áreas de la aplicación que no es necesario escalar. Así, puede ahorrar en costes porque necesita menos hardware.

Diagrama de las diferencias entre los dos métodos de implementación.

Figura 4-6. Implementación monolítica frente al enfoque de microservicios

Como se muestra en la figura 4-6, en el enfoque monolítico tradicional, la aplicación se escala mediante la clonación de toda la aplicación en varios servidores o máquinas virtuales. En el enfoque de microservicios, la funcionalidad se separa en servicios más pequeños, por lo que cada servicio puede escalar de forma independiente. El enfoque de microservicios permite cambios ágiles y iteración rápida de cada microservicio, ya que puede cambiar áreas específicas y pequeñas de aplicaciones complejas, grandes y escalables.

Diseñar la arquitectura de aplicaciones específicas basadas en microservicios habilita una integración continua y prácticas de entrega continua. También acelera la entrega de nuevas funciones en la aplicación. La composición específica de las aplicaciones también le permite ejecutar y probar microservicios de forma aislada y desarrollarlos de forma autónoma al tiempo que mantiene contratos claros entre ellas. Siempre y cuando no cambie las interfaces o los contratos, puede cambiar la implementación interna de cualquier microservicio o agregar nuevas funciones sin que ello interrumpa otros microservicios.

A continuación se muestran aspectos importantes para permitir el éxito en la producción con un sistema basado en microservicios:

  • Monitoreo y verificaciones de salud de los servicios y la infraestructura.

  • Infraestructura escalable para los servicios (es decir, en la nube y orquestadores).

  • Diseño e implementación de seguridad en varios niveles: autenticación, autorización, administración de secretos, comunicación segura, etc.

  • Entrega rápida de aplicaciones, normalmente con diferentes equipos centrados en diferentes microservicios.

  • Infraestructura y prácticas de DevOps y CI/CD.

De estos, solo se tratan o introducen los tres primeros en esta guía. Los dos últimos puntos, que están relacionados con el ciclo de vida de la aplicación, se tratan en el e-book adicional sobre el ciclo de vida de las aplicaciones Docker en contenedores, utilizando la plataforma y herramientas de Microsoft.

Recursos adicionales