REL 3: ¿Cómo diseña su arquitectura de servicios para cargas de trabajo?
Cree cargas de trabajo sumamente escalables y confiables a través de una arquitectura orientada a servicios (SOA) o una arquitectura de microservicios. La arquitectura orientada a servicios (SOA) es la práctica de crear componentes de software reutilizables a través de las interfaces de servicios. La arquitectura de microservicios ha avanzado en la creación de los componentes proporcionando componentes más pequeños y simples.
Recursos
Amazon API Gateway: Configuring a REST API Using OpenAPI
Implementing Microservices on AWS
Microservices on AWS
Microservices - a definition of this new architectural term
Microservice Trade-Offs
Bounded Context (a central pattern in Domain-Driven Design)
Prácticas recomendadas:
-
Elija cómo segmentar su carga de trabajo: Se debe evitar la arquitectura monolítica. En su lugar, debe elegir entre la SOA y los microservicios. Cuando tome cada decisión, equilibre los beneficios con las complejidades, lo que se considera correcto en el caso de un nuevo producto que compite para ser lanzado en primer lugar es diferente de lo que necesita una carga de trabajo creada para escalar desde el comienzo. Los beneficios que resultan de utilizar segmentos más pequeños incluyen escalado, mayor agilidad y flexibilidad organizacional. Por otro lado, las complejidades incluyen un posible aumento de la latencia, una depuración más compleja y una mayor carga operativa
-
Desarrolle servicios centrados en funcionalidades y dominios empresariales específicos: La SOA crea servicios con funciones bien definidas por las necesidades del negocio. Los microservicios utilizan modelos de dominio y de contexto delimitado para limitar las funciones aún más, de modo que cada servicio se encarga de satisfacer solo una necesidad. Enfocarse en la funcionalidad específica le permite diferenciar los requisitos de fiabilidad de los diferentes servicios, además de dirigir las inversiones más específicamente. Un problema empresarial conciso y contar con un equipo pequeño asociado con cada servicio también le permitirán llevar a cabo un escalado organizativo más sencillo.
-
Proporcione contratos de servicios por API: Los contratos de servicios son acuerdos documentados entre los equipos sobre la integración de servicios e incluyen una definición de la API legible por máquina, los límites de las tasas y las expectativas de rendimiento. Contar con una estrategia de control de versiones permite a los clientes seguir utilizando la API existente y migrar sus aplicaciones a la API más nueva cuando estén listas. La implementación se puede llevar a cabo en cualquier momento, siempre y cuando no se incumpla el contrato. El equipo del proveedor de servicios puede utilizar el componente tecnológico que desee para cumplir con el contrato de API. Del mismo modo, el consumidor del servicio puede utilizar su propia tecnología.
Plan de mejora
Elija cómo segmentar su carga de trabajo
- La SOA y los microservicios ofrecen una segmentación más pequeña, los cuales se prefieren ya que representan una arquitectura moderna escalable y confiable. Sin embargo, si tiene una buena razón para elegir una arquitectura monolítica, debe asegurarse de que sea modular y que tenga la capacidad para evolucionar finalmente hacia la SOA o los microservicios a medida que su producto escala con la adopción de los usuarios.
- La SOA puede ser un buen compromiso para lograr una segmentación más pequeña y evitar
algunas de las complejidades de los microservicios.
Microservice Trade-Offs - Si su carga de trabajo es adecuada y su organización lo admite, debe usar una arquitectura
de microservicios para lograr más agilidad y confiabilidad.
Implementing Microservices on AWS - AWS App Mesh se puede usar con arquitecturas orientadas a servicios para proporcionar
descubrimiento y acceso confiables a los servicios.
What is AWS App Mesh?
Desarrolle servicios centrados en funcionalidades y dominios empresariales específicos
- Realice el análisis de dominio para definir un diseño controlado por dominio (DDD)
para su carga de trabajo. Luego, puede elegir un tipo de arquitectura para satisfacer
las necesidades de su carga de trabajo
How to break a Monolith into Microservices
Getting Started with DDD when Surrounded by Legacy Systems
Eric Evans “Domain-Driven Design: Tackling Complexity in the Heart of Software”
Implementing Microservices on AWS
- Defina la API para la carga de trabajo y sus objetivos de diseño, límites y cualquier
otra consideración para su uso.
- Defina la API.
- La definición de la API debería permitir el crecimiento y parámetros adicionales.
- Defina las disponibilidades diseñadas.
- Su API puede tener múltiples objetivos de diseño para diferentes funciones.
- Establezca límites
- Utilice las pruebas para definir los límites de las capacidades de su carga de trabajo.
- Defina la API.
Proporcione contratos de servicios por API
Amazon API Gateway: Configuring a REST API Using OpenAPI
- Contar con una estrategia de control de versiones permite a los clientes seguir utilizando la API existente y migrar sus aplicaciones a la API más nueva cuando estén listas.
- Amazon API Gateway es un servicio totalmente administrado que facilita a los desarrolladores crear API en cualquier escala. A través de la especificación de OpenAPI (OAS), conocida anteriormente como especificación Swagger, puede definir el contrato de API e importarlo en API Gateway. Con API Gateway, puede designar versiones e implementar las API.