Descomposición de monolitos en microservicios - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Descomposición de monolitos en microservicios

Tabby Ward y Dmitry Gulin, Amazon Web Services (AWS)

abril de 2023 (historial de documentos)

La migración a la nube de Amazon Web Services (AWS) ofrece muchas ventajas, como una mayor agilidad técnica y empresarial, nuevas oportunidades de ingresos y reducción de costos. Para aprovechar al máximo estas ventajas, debe modernizar constantemente el software de su organización refactorizando sus aplicaciones monolíticas en microservicios. Este proceso consta de tres pasos principales:

La modernización suele implicar dos tipos de proyectos:

  • Los proyectos de implementación sobre infraestructura existente implican el desarrollo y la implementación de un nuevo sistema de software en el contexto de sistemas existentes o heredados.

  • Los proyectos de implementación desde cero implican la creación de un sistema desde cero para un entorno completamente nuevo, sin necesidad de utilizar ningún código heredado.

En el caso de los proyectos de implementación sobre infraestructura existente, uno de los primeros pasos del proceso de modernización de las aplicaciones consiste en descomponer los monolitos de su cartera en microservicios.

La mayoría de las aplicaciones comienzan siendo monolitos diseñados para un caso de uso empresarial específico. Si la arquitectura del monolito no impone un diseño modular, dicho monolito puede seguir siendo una opción válida en casos de aplicaciones sin responsabilidades claramente definidas dentro de los límites de un dominio bien establecido. La característica principal de un monolito como unidad de implementación única también puede ayudar a mitigar defectos de diseño como el acoplamiento ajustado o la falta de estructura interna.

Si bien un monolito puede ser una opción válida en algunos casos de uso, no suele ser adecuado para una aplicación moderna. Las estructuras internas mal definidas de un monolito pueden dificultar el mantenimiento del código, lo que crea una curva de aprendizaje pronunciada para los nuevos desarrolladores e implica un aumento de los costos de soporte. Un alto grado de acoplamiento y una baja cohesión pueden aumentar considerablemente el tiempo que se tarda en añadir nuevas características, y es posible que no pueda escalar componentes individuales en función de los patrones de tráfico. Los monolitos también requieren que varios equipos se coordinen para lanzar una versión de gran tamaño, lo que aumenta la carga de colaboración y transferencia de conocimientos. Por último, la adición de nuevas características o la creación de nuevas experiencias de usuario puede volverse más difícil a medida que crece su empresa o su base de usuarios.

Para evitarlo, puede usar patrones de descomposición para dividir aplicaciones monolíticas, convertirlas en varios microservicios y migrarlas a una arquitectura de microservicios. La arquitectura de microservicios estructura una aplicación como una serie de servicios con acoplamiento flexible. Los microservicios están diseñados para acelerar el desarrollo de software facilitando los procesos de implementación y entrega continuas (CI/CD).

Antes de comenzar el proceso de descomposición, debe evaluar qué monolitos desea descomponer. Asegúrese de incluir los monolitos que presenten problemas de fiabilidad o rendimiento. También puede incluir varios componentes de una arquitectura estrechamente acoplada. También es recomendable que comprenda al detalle el caso de uso empresarial del monolito, su tecnología y sus interdependencias con otras aplicaciones.

Esta guía es útil para propietarios de aplicaciones, propietarios de empresas, arquitectos, líderes técnicos y directores de proyecto. En ella se analizan los siguientes seis patrones nativos en la nube que se usan para descomponer los monolitos, y se describen las ventajas y desventajas de cada uno de ellos:

La guía forma parte de una serie de contenido que cubre el enfoque de modernización de las aplicaciones recomendado por AWS. La serie también incluye:

Resultados empresariales específicos

La descomposición de los monolitos en microservicios facilitará los siguientes resultados:

  • Una transición eficiente de su aplicación monolítica a una arquitectura de microservicios.

  • Adaptaciones rápidas a la fluctuante demanda empresarial sin interrumpir las actividades principales, como alta escalabilidad, mejora de la resiliencia, entrega continua y aislamiento de fallos.

  • Innovación más rápida, ya que cada microservicio se puede probar e implementar de forma individual.