Entendendo microserviços

microserviços

Microserviços são uma abordagem arquitetônica para desenvolver software onde uma aplicação é composta por pequenos serviços independentes que se comunicam entre si. Além disso, cada serviço é executado como um processo separado e se comunica através de APIs bem definidas. Essa abordagem contrasta com a arquitetura monolítica tradicional, onde todas as funcionalidades de uma aplicação são integradas em um único código.

estrutura_microservicos

 

Monolitos e Microserviços

Antes de começar a entender microserviços, vamos realizar algumas comparações entre monolitos e microserviços.

Primeiramente, a arquitetura monolitica é um modelo tradicional no desenvolvimento de sistemas. Assim, dentre as características dessa arquitetura, estão a base de código centralizada, componentes interdependentes e uma maior demora na modificação da arquitetura dado que uma mudança afeta toda a base de código.

Pontos positivos Pontos negativos
Início do desenvolvimento simples Maior coordenação necessária conforme o projeto e a equipe aumenta.
Latencia baixa na comunicação entre os processos Modularidade é afetada
Única base de código Escalonamento fraco e demora na construção da aplicação
Recomendado para inicio de um projeto onde requisitos não estão totalmente estabelecidos Manutenção pode se tornar complexa

Fonte: Manual do Devops: Como obter agilidade, confiabilidade e segurança em organizações tecnológicas. 

Enquanto isso, os microserviços são uma abordagem focada em criar serviços independentes e pequenos, possuindo um contexto bem definido e se comunicando com outros serviços a partir de uma interface bem definida.

Pontos positivos Pontos negativos
Unidades são simples Latência de rede
A escala e o desempenho são independentes Gestão de múltiplas pequenas unidades
Testes independentes Necessário ferramentas sofisticadas para gerenciamento

Fonte: Manual do Devops: Como obter agilidade, confiabilidade e segurança em organizações tecnológicas. 

Características os Microserviços

Os microserviços possuem algumas características que iremos abordar a seguir.

Gestão de dados descentralizada

A gestão de dados descentralizada distribui os dados entre vários pontos de controle ou nós em uma rede, em vez de armazená-los ou gerenciá-los por uma única entidade centralizada.

database

 

Escalabilidade

Um dos principais motivos que levam as organizações a adotarem microserviços é a capacidade de escalá-los horizontalmente. Isso significa que você pode aumentar o número de instâncias de um serviço específico que requer mais recursos. No entanto, essa vantagem vem acompanhada de uma gestão mais complexa de orquestração e coordenação de microserviços.

escalabilidade

Organização entorno das capacidades de negócio

Em vez de organizar os serviços com base em funcionalidades técnicas ou camadas tecnológicas, a abordagem baseada em capacidades de negócio foca em decompor a aplicação de acordo com as funções e processos de negócio essenciais. Uma capacidade de negócio é uma função ou processo específico que a organização precisa para atingir seus objetivos. Exemplos incluem gestão de clientes, processamento de pedidos, faturamento, etc.

Inspirado no conceito de “bounded context” do Domain-Driven Design (DDD), cada microserviço representa um contexto delimitado de um domínio de negócio, com suas próprias regras e modelos de dados.

business

Automação

A automação de CI/CD (Continuous Integration/Continuous Delivery) é essencial para a eficácia e eficiência do desenvolvimento de software, especialmente em uma arquitetura de microserviços. Implementar CI/CD em microserviços envolve uma série de práticas e ferramentas que garantem a integração contínua de código, testes automáticos, entrega e implantação contínuas, permitindo que novas funcionalidades e correções de bugs sejam entregues rapidamente e com alta qualidade.

pipeline

 

Desafios dos Microserviços

Existem diversos desafios ao usar microserviços. Abaixo há uma lista de alguns desafios.

1. Complexidade: Gerenciar uma grande quantidade de serviços pode se tornar complicado. É necessário um bom sistema de orquestração e monitoramento.

2. Comunicação entre Serviços: A comunicação entre microserviços pode introduzir latência e complexidade adicional, requerendo soluções robustas para gerenciamento de APIs e mensagens.

3. Transações Distribuídas: Garantir a consistência de dados através de múltiplos serviços pode ser desafiador, exigindo estratégias como sagas ou compensações.

4. DevOps e Automação: A abordagem de microserviços exige uma cultura DevOps madura, com processos de CI/CD bem estabelecidos para gerenciar o deploy contínuo e a integração de serviços.

5. Monitoramento e Debugging: Ferramentas e práticas eficazes de monitoramento e rastreamento são cruciais para detectar e resolver problemas em um ambiente de microserviços.

Padrões de Microserviços

Por fim, existem diversos padrões ao usar microserviços. Abaixo há uma lista de alguns deles.

1. API Gateway: Um ponto de entrada unificado para todas as solicitações que vão para os microserviços. Ele gerencia a autenticação, autorização, roteamento de solicitações e agregação de respostas.

microserviços - api_gateway

2. Circuit Breaker: Um padrão para aumentar a resiliência de microserviços, impedindo que falhas em um serviço causem falhas em cascata no sistema. Implementações populares incluem Hystrix e Resilience4j.

microserviços - circuit_breaker

3. Saga: Um padrão para gerenciar transações distribuídas que coordena uma série de transações locais em diferentes serviços.

microserviços - saga

Conclusão

Portanto, a arquitetura de microserviços oferece uma maneira poderosa e flexível de construir e escalar aplicações modernas. Embora apresente desafios, os benefícios de agilidade, escalabilidade e resiliência fazem dela uma escolha popular para muitas organizações. Adotar microserviços exige uma mudança de mentalidade e práticas de desenvolvimento, mas pode resultar em sistemas mais robustos e adaptáveis às necessidades de negócio em constante evolução.

Para mais artigos como esse, clique aqui.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima