REL 3: Como você projeta sua arquitetura de serviços de carga de trabalho?
Use uma Service-Oriented Architecture (SOA – Arquitetura orientada por serviços) ou uma arquitetura de microsserviços para criar cargas de trabalho altamente escaláveis e confiáveis. A SOA é a prática de tornar componentes de software reutilizáveis por meio de interfaces de serviço. A arquitetura de microsserviços vai além para tornar os componentes menores e mais 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)
Melhores práticas:
-
Escolha como segmentar a carga de trabalho: A arquitetura monolítica deve ser evitada. Em vez dela, escolha entre SOA e microsserviços. Ao fazer cada escolha, analise os benefícios em relação às complexidades. O que é ideal para um novo produto a caminho do seu primeiro lançamento não se aplica a uma carga de trabalho que foi criada para escalabilidade a partir das necessidades iniciais. Os benefícios de usar segmentos menores incluem maior agilidade, flexibilidade organizacional e escalabilidade. As complexidades incluem maior latência potencial, depuração mais complexa e carga operacional aumentada
-
Crie serviços voltados a domínios e funcionalidades de negócios específicos: A SOA cria serviços com funções bem delineadas que seguem as necessidades dos negócios. Os microsserviços usam modelos de domínio e contexto controlado para maior limitação de modo que cada serviço execute apenas uma ação. O foco na funcionalidade específica permite diferenciar os requisitos de confiabilidade de serviços diferentes e direcionar os investimentos de forma mais distinta. Um problema de negócio conciso e uma equipe pequena associada a cada serviço também facilitam a escalabilidade organizacional.
-
Forneça contratos de serviço por API: Os contratos de serviço são acordos documentados entre as equipes que envolvem a integração dos serviços e incluem uma definição de API legível por máquina, limites de taxa e expectativas de performance. Uma estratégia de versionamento permite que os clientes continuem usando a API existente e migrem seus aplicativos para a API mais recente quando estiverem prontos. A implantação pode acontecer a qualquer momento, desde que o contrato não seja violado. A equipe do provedor de serviços pode usar a pilha de tecnologia de sua preferência para cumprir o contrato de API. Da mesma forma, o consumidor do serviço pode usar sua própria tecnologia.
Plano de melhoria
Escolha como segmentar a carga de trabalho
- A SOA e os microsserviços oferecem respectivamente segmentação menor, que é preferida por ser uma arquitetura moderna escalável e confiável. No entanto, se você tiver um bom motivo para escolher uma arquitetura monolítica, deverá garantir que ela seja modular e tenha capacidade de, em última análise, evoluir para SOA ou microsserviços à medida que o produto é escalado com a adoção dos usuários.
- A SOA pode ser o meio-termo ideal para alcançar uma segmentação menor e também evitar
algumas das complexidades dos microsserviços.
Microservice Trade-Offs - Se sua carga de trabalho aceitá-la e sua organização puder sustentá-la, use uma arquitetura
de microsserviços para obter a melhor agilidade e confiabilidade.
Implementing Microservices on AWS - É possível usar o AWS App Mesh com arquiteturas orientadas por serviços para oferecer
descoberta confiável e acesso a serviços.
What is AWS App Mesh?
Crie serviços voltados a domínios e funcionalidades de negócios específicos
- Execute a análise de domínio para mapear um Domain-Driven Design (DDD – Projeto orientado
por domínio) para sua carga de trabalho. Em seguida, você pode escolher um tipo de
arquitetura para atender às necessidades da sua carga de trabalho
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 a API para a carga de trabalho e os respectivos objetivos, limites e outras
considerações de uso do projeto.
- Defina a API.
- A definição da API deve permitir o crescimento e parâmetros adicionais.
- Defina as disponibilidades projetadas.
- Sua API pode ter vários objetivos de projeto para recursos diferentes.
- Estabeleça limites
- Use o teste para definir os limites dos recursos da sua carga de trabalho.
- Defina a API.
Forneça contratos de serviço por API
Amazon API Gateway: Configuring a REST API Using OpenAPI
- Uma estratégia de versionamento permite que os clientes continuem usando a API existente e migrem seus aplicativos para a API mais recente quando estiverem prontos.
- O Amazon API Gateway é um serviço totalmente gerenciado que facilita a criação de APIs em qualquer escala para os desenvolvedores. Ao usar a OpenAPI Specification (OAS), antes conhecida como Swagger Specification, você pode definir seu contrato de API e importá-lo para o API Gateway. Com o API Gateway, você pode controlar a versão e implantar as APIs.