[ARTIGO] Arquitetura de Microsserviços
Conceitos
Segundo Martin Fowler, a "Arquitetura de Microsserviços" surgiu para descrever uma maneira de projetar aplicativos de software como conjuntos de serviços independentes.
Para mim, iniciante na área de tecnologia, microsserviços é criar ou transformar as aplicações dividindo-as em diversos serviços independentes. Dessa forma, cada um dos serviços é responsável por realizar tarefas diferentes e poderá se comunicar com outros serviços por meio de API's para resolver demandas de negócios maiores e mais complexas.
Algumas vantagens da arquitetura de microsserviços
Alta Escalabilidade: A separação da aplicação por domínio permite que ela se adapte às diversas mudanças do mercado rapidamente, podem crescer e continuar entregando serviços sem perder qualidade.
Deploys Independentes: As implantações podem ser realizadas sem que aja impactos em outros serviços não relacionados.
Persistência Poliglota: Ou seja, pode-se utilizar diferentes tipos de bancos de dados em uma mesma aplicação.
Alta Diversidade Tecnológica: Pode-se utilizar diferentes tipos de linguagem de programação.
Alto Desempenho: as operações e respostas são mais rápida, pois o trafego de dados em cada serviço é menor.
Algumas desvantagens da arquitetura de microsserviços
Complexidade: Conforme novos serviços são criados maior é a necessidade de gerenciar e monitorar todos os serviços.
Aumento dos custos: Manter vários serviços disponíveis não é barato, pois demanda mais recursos computacionais, investimento em segurança, dentre outros.
Diferença entre o monólito e o microsserviço
Em um monólito, todas as partes da aplicação são construídas com uma única unidade. Já em microsserviços, a aplicação é dividida em diversos serviços independentes e que se comunicam entre si. Mas, a diferença mais marcante esta na escalabilidade. No monólito, crescer de forma sustentável é bem mais difícil, pois todas as partes estão fortemente acopladas. Em relação aos microsserviços, é possível aumentar o tamanho da aplicação, pois os serviços são desenvolvidos para serem mais independentes.
Quando devo usar uma arquitetura em monólito ou em microsserviços?
Quando o time é pequeno e composta por desenvolvedores com pouca experiência, a aplicação possui poucos serviços e o desempenho da aplicação é bom para a quantidade de requisições atual, é mais viável usar a arquitetura monolítica. Agora, quando temos varias equipes formada por diversos profissionais de TI (Programadores, Tester e outros), a aplicação tende a crescer bastante e ela espera receber um grande número de requisições com alto desempenho, então já podemos construir uma arquitetura de microsserviços ao invés de uma arquitetura monolítica. Vale ressaltar que não há uma regra bem definida dizendo por qual arquitetura deve-se iniciar a aplicação, sempre haverá inúmeras variáveis que podem influenciar na escolha da arquitetura da aplicação.
Alguns padrões de arquitetura e comunicação de microsserviços
- API Gateway: É uma porta de entrada que facilita a comunicação entre clientes e microsserviços, gerenciando rotas, autenticação e erros.
- Load Balancing: Distribui solicitações entre servidores para aumentar a disponibilidade e a escalabilidade em microsserviços.
- Circuit Breaker: Protege microsserviços interrompendo as solicitações a serviços com problemas e evitam a propagação de falhas.
- Health Check: Verifica periodicamente a saúde dos microsserviços, garantindo a disponibilidade e o desempenho adequado dos serviços.
- Conteinerização: Permite que os microsserviços sejam executados em containers isolados, fornecendo uma plataforma portátil e consistente para o desenvolvimento, implantação e gerenciamento.
Sobre o autor
Nome: Michel Wesley Lima Fernandes 🙋♂️
Idade: 36 anos🎂
Formação: Estudante 3º Semestre Ciências da Computação📚
Objetivos🎯
- Aprender e aprimorar conhecimentos.
- Compartilhar conhecimentos adquirido com outros.