DEV Community

loading...

Como modelar um serviço

thierrysantos profile image Thierry Santos ・2 min read

Características de um bom serviço

Uma das características que precisamos buscar quando estamos modelando nossos serviços é alta coesão e baixo acoplamento.

Baixo acoplamento está relacionado a conseguir modificar um serviço sem a necessidade de mudar os demais, o ideal é saber o menos possível dos outros serviços.

Alta coesão está relacionada a manter comportamentos relacionados juntos, então quando for necessário modificar ou adicionar um comportamento está tudo em um único local, quando isso não ocorre fazer mudanças em diferentes lugares é demorado e arriscado, então temos que evitar esse tipo de problema.

Definindo os limites

O domínio de uma aplicação possui diversos contextos e cada um tem sua responsabilidade bem como a interação com outros contexto.

Para definir os serviços precisamos identificar esses contextos e para que tenhamos uma alta coesão.

Então se os nossos serviços estiverem alinhados ao nosso domínio, estamos em um início excelente que nos diz que nosso serviço é coeso e desacoplado.

Decomposição prematura

Começar uma aplicação como microserviços pode ser ser custoso, especialmente se você estiver conhecendo sobre o domínio da aplicação. Decompor uma aplicação existente acaba sendo mais fácil do que já começar com microserviços do zero.

Projeto

Como foi comentado no primeiro artigo dessa série de artigos, vamos modelar o domínio da nossa aplicação.

A nossa aplicação é um gerenciador de newsletter, então se formos mapear algumas funcionalidades da nossa aplicação conseguimos identificar algumas entidades: 

  • Criar uma conta para acessar o sistema
  • Fazer login
  • Criar newsletter
  • Adicionar usuários a newsletter
  • Adicionar conteúdo a newsletter
  • Notificar usuários do newsletter de novos conteúdos

Essas palavras em negrito são os nossos serviços.

Repositório: https://github.com/thierrysantos/microservice-example

Discussion (0)

pic
Editor guide