Fiz uma rápida apresentação sobre microsserviços no Peixe Urbano Tech Talk – uma iniciativa interna da empresa para compartilhamento de conhecimento técnico entre os engenheiros de software. Abaixo o slide utilizado na apresentação:
[slideshare id=62916656&doc=microservices-160610023149]
Sobre o Evento
O Peixe Urbano Tech Talk é uma iniciativa de compartilhamento técnico entre os engenheiros da empresa. Nele abordamos diferentes tópicos relevantes ao dia-a-dia dos times.
Embora seja um evento fechado, os slides da palestra estão compartilhados no componente acima.
Sobre Microsserviços
Os microsserviços são uma abordagem de arquitetura de software que consiste em dividir uma aplicação em componentes menores e independentes, chamados de serviços. Estes componentes podem ser facilmente combinados para formar uma aplicação maior.
Cada serviço é responsável por realizar uma tarefa específica e pode ser desenvolvido, testado e implementado de maneira independente.
Quando usar microsserviços?
Você deve considerar o uso de microsserviços quando:
- Sua aplicação é muito grande e complexa, o que torna difícil manter e alterar o código.
- Precisa dar aos times de desenvolvimento a flexibilidade de usar linguagens e ferramentas diferentes para implementar cada serviço.
- Precisa escalar partes específicas da sua aplicação de maneira independente.
- Precisa ter alta disponibilidade e tolerância a falhas, pois os microsserviços permitem que você faça atualizações e correções sem interromper o funcionamento da aplicação como um todo.
No entanto, é importante lembrar que a implementação de microsserviços também pode ser complexa e exigir uma arquitetura de rede mais sofisticada para gerenciar todos os serviços separados.
Portanto, é importante avaliar cuidadosamente se os benefícios de um modelo de microsserviços valem a pena para o seu caso de uso específico.
Microsserviços versus Monolitos, qual usar?
A escolha entre eles depende das necessidades e da natureza da sua aplicação.
Um monolito é uma aplicação tradicional que é construída como um único conjunto de código que realiza todas as tarefas necessárias. Isso pode ser então uma opção viável para aplicações menores e mais simples que não exigem escalabilidade ou flexibilidade para alterações futuras.
Entretanto, os microsserviços são uma opção mais adequada para aplicações maiores e mais complexas que precisam de maior flexibilidade e escalabilidade. Com os microsserviços, você precisa então dividir a aplicação em componentes menores e independentes que são desenvolvidos, testados e implementados de maneira mais fácil.
Isso também permite que você faça atualizações e correções sem interromper o funcionamento da aplicação como um todo.
No entanto, é importante lembrar que a implementação de microservices pode ser mais complexa do que a de um monolito, pois certamente exige uma arquitetura de rede mais sofisticada para gerenciar todos os serviços separados.
Portanto, é importante avaliar cuidadosamente as necessidades da sua aplicação e decidir qual abordagem é mais adequada para o seu caso de uso.
Quais são as desvantagens de Microsserviços?
A implementação de microsserviços pode ser mais complexa do que a de uma aplicação monolítica, pois exige uma arquitetura de rede mais sofisticada para gerenciar todos os serviços separados.
Isso pode exigir mais tempo e esforço para configurar e manter a aplicação. Além disso, o gerenciamento de múltiplos serviços pode ser mais desafiador do que o gerenciamento de um único conjunto de código, especialmente em termos de depuração e monitoramento.
Outra desvantagem é que os microsserviços podem ter uma latência mais alta do que um monolito, pois as chamadas entre os serviços podem exigir mais tempo devido à natureza distribuída da aplicação.
Isso pode afetar a performance da aplicação e a experiência do usuário.
Além disso, a separação da aplicação em vários serviços pode tornar mais difícil manter a consistência dos dados, pois pode ser necessário garantir que as alterações em um serviço sejam refletidas em todos os outros serviços.
Em resumo, as desvantagens de um modelo de microsserviços incluem a complexidade adicional da arquitetura, a possível latência mais alta e a dificuldade de manter a consistência dos dados.
No entanto, essas desvantagens podem ser mitigadas com uma boa planejamento e implementação.