

# REL03-BP02 Criar serviços voltados a domínios e funcionalidades de negócios específicos
<a name="rel_service_architecture_business_domains"></a>

 A arquitetura orientada por serviços (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. 

 Ao projetar uma arquitetura de microsserviços, é útil usar o Design orientado por domínio (DDD) para modelar o problema de negócios usando entidades. Por exemplo, para o site Amazon.com, entidades podem incluir pacote, entrega, programação, preço, desconto e moeda. Em seguida, o modelo é dividido em modelos menores usando o [https://martinfowler.com/bliki/BoundedContext.html](https://martinfowler.com/bliki/BoundedContext.html), onde entidades que compartilham recursos e atributos semelhantes são agrupadas. Portanto, usar o pacote, a entrega e a programação de exemplo da Amazon.com seria parte do contexto de envio, enquanto preço, desconto e moeda fazem parte do contexto de definição de preço. Com o modelo dividido em contextos, surge um modelo de como delimitar microsserviços. 

![\[Modelo de como limitar microsserviços\]](http://docs.aws.amazon.com/pt_br/wellarchitected/2022-03-31/framework/images/building-services.png)


 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Alto 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Projete a workload de acordo com os domínios de negócios e as respectivas funcionalidades. 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. 
  +  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 workload. 
    +  [Como dividir uma monolítica em microsserviços](https://martinfowler.com/articles/break-monolith-into-microservices.html) 
    +  [Conceitos básicos do DDD quando cercado por sistemas herdados](https://domainlanguage.com/wp-content/uploads/2016/04/GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf) 
    +  [Eric Evans “Design Orientado por Domínio: Lidando com a Complexidade no Coração do Software”](https://www.amazon.com/gp/product/0321125215) 
    +  [Implementação de microsserviços na AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/introduction.html) 
+ Decomponha os serviços nos menores componentes possíveis. Com a arquitetura de microsserviços, você pode separar sua carga de trabalho em componentes com a funcionalidade mínima para permitir escalabilidade e agilidade organizacionais. 
  +  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 de seus recursos de carga de trabalho. 

## Recursos
<a name="resources"></a>

 **Documentos relacionados:** 
+  [Amazon API Gateway: configurar uma API REST usando o OpenAPI](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api.html) 
+  [Contexto delimitado (um padrão central no design orientado por domínio)](https://martinfowler.com/bliki/BoundedContext.html) 
+  [Eric Evans “Design Orientado por Domínio: Lidando com a Complexidade no Coração do Software”](https://www.amazon.com/gp/product/0321125215) 
+  [Conceitos básicos do DDD quando cercado por sistemas herdados](https://domainlanguage.com/wp-content/uploads/2016/04/GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf) 
+  [Como dividir uma monolítica em microsserviços](https://martinfowler.com/articles/break-monolith-into-microservices.html) 
+  [Implementação de microsserviços na AWS](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/introduction.html) 
+  [Compensações de microsserviços](https://martinfowler.com/articles/microservice-trade-offs.html) 
+  [Microsserviços - uma definição desse novo termo de arquitetura](https://www.martinfowler.com/articles/microservices.html) 
+  [Microsserviços na AWS](https://aws.amazon.com/microservices/) 