Microsserviços: Arquitetura de banco de dados

Lauan Guermandi
3 min readJan 26, 2024

--

Introdução

Algumas consultas podem incluir dados de vários serviços, por isso é importante saber de estratégias para obtenção desses dados, seja por consulta no serviço, consultando diretamente no banco de dados, propagando um evento de domínio, entre outros estratégias.

Saber qual estratégia você vai utilizar impacta na arquitetura da sua aplicação.

Banco de dados compartilhado

Esse padrão consiste em compartilhar o banco de dados em serviços.

Um dos maiores pontos positivos é a facilitação da consulta de atualização de dados. Mas utilizar esse padrão não significa que uma aplicação não pode ter um banco de dados exclusivo, mas sim que as regras do tipo ‘essa aplicação não pode acessar esse banco de dados’ não vão existir.

Isso parece ótimo a principio, mas utilizar uma banco de dados compartilhado, diminui a resiliência da sua aplicação, tornando o banco de dados um ponto de falha, já que se ele cair, vários fluxos param de funcionar. Também diminui a possibilidade de escalar, já que sua base pode ficar sobrecarregada.

Esse pontos vão contra os principios dos microsserviços, por isso minha recomendação é não utilizar, embora tenha algumas exceções. E após tomada essa decisão, fica dificil separar futuramente caso haja a necessidade.

Banco de dados por serviço

Esse padrão consiste em que cada serviço tenha seu próprio banco de dados e vide regra, não possa acessar bancos de dados de outros serviços.

Esse padrão é o mais recomendado, na minha opinião, pois temos maior resiliência, se um banco para, somente aquele fluxo valor estára com problema.

Fica mais facil de escalar, pois já que cada serviço acessa um único banco de dados, ele fica menos sobrecarregado, então você escala somente a aplicação de forma automática.

Também o acomplamento se torna menor, pois um único serviço é responsável por gerir seus dados.

Uma das questões complicadas de trabalhar dessa forma, é como acessar dados de outros serviços.

Quando você pode trabalhar com consistência eventual destes dados, recomento que seja gerado um evento de domínio quando houver uma alteração de estado, e utilizar para replicar esse dados, em outros bancos dados. Mas caso a consistência eventual seja um problema, você possivelmente terá que consultar as informações chamando a API proprietária dos dados.

Conclusão

Utilizar o padrão de Banco de dados por serviço é a melhor opção, pois vai de acordo com os beneficios que a arquitetura de microsserviços oferece.

--

--