Entendendo “microsserviços”

“Microsserviços” é um trending topic. Grandes empresas estão tentando associar suas tecnologias com este conceito. Entretanto, é importante que se destaque que não é necessário usar nenhuma tecnologia em especial para criar microsserviços.

Neste post e nos próximos, vou compartilhar meu entendimento sobre microsserviços, com definições e um bocado de exemplos.

Vamos começar com o básico.

O que são Microsserviços?

Um microsserviço é um serviço pequeno e autônomo com uma, e somente uma, responsabilidade que uma API remota expõe para o resto do sistema. (Sam Newman)

Um microsserviço poderia ser distribuído como um serviço isolado na nuvem, ou ainda em um processo dedicado no sistema operacional. Não precisamos adotar nenhuma tecnologia em especial de hospedagem para trabalhar com microsserviços.

Microsserviços podem ser distribuídos individualmente e de forma rápida. Quando mudamos um microsserviço, devemos poder distribuir apenas ele, sem necessidade de mexer com nenhuma outra parte do sistema. Se você precisa reiniciar/distribuir outros serviços quando distribui um microsserviço, então está fazendo algo errado.

Para ser autônomo verdadeiramente, um microsserviço deve usar seu próprio mecanismo de armazenamento (banco de dados).

Um sistema com microsserviços é um sistema distribuído.

O que é Arquitetura de Microsserviços?

É um estilo de projetar sistemas altamente automatizado, baseado em microsserviços. É uma forma mais leve de SOA onde cada serviço foca em fazer uma coisa somente e fazer bem-feito.

Como cada microsserviço deve ser arquitetado?

Para criar microsserviços, recomendo fortemente a adoção do padrão hexagonal.

Na figura, temos representado dois microsserviços de um sistema de e-commerce: 1) ShoppingCart e 2) ProductCatalog. Cada um possui seu próprio banco de dados.

ShoppingCart usa um adaptador para comunicar com ProductCatalog.

ShoppingCart provê um adaptador HTTP para comunicar com consumidores – de qualquer forma, esta é uma decisão de design. É bastante frequente adotar outras tecnologias, como mensageria por exemplo, para comunicação.

Como um sistema com microsserviços deveria ser arquitetado?

Um sistema feito com microsserviços começa com um API Gateway. Trata-se de um microsserviço (por que não?!) que esconde a complexidade dos demais microsserviços da aplicação consumidora.

Cada microsserviço tem um processo separado e usa seus adaptadores para comunicar com os demais.

Por que adotar microsserviços?

Um sistema feito com microsserviços é robusto por design, sendo mais maleável, escalável e resiliente.

É mais simples praticar continuous delivering com sistemas baseados em microsserviços.

Por que não?

Sistemas baseados em microsserviços são sistemas distribuídos. Eles são mais difíceis de testar (de forma integrada) do que sistemas monolíticos. É justo considerar também que a comunicação através dos limites de um processo são mais lentas do que aquelas dentro do processo.

Microsserviços são desenvolvidos, distribuídos e gerenciados independentemente em produção. Em algum momento, um bocado de ferramentas de monitoramento será necessário.

Próximos passos

Agora que entendemos os conceitos fundamentais de arquiteturas baseadas em microsserviços, estamos prontos para escrever algum código…

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Uma dúvida comum e recorrente em minhas consultorias é “Como eu faço para manter a consistência de dados entre meus...
In the first post of this series, I explained how to produce an inverted index using C#. In the second...
O ano era 2001 ou 2002. Não lembro ao certo. Eu era um jovem programador, pai recente, tentando “encontrar meu...
Você ainda acredita em estimativas? Nós, não. Embora aceitemos que ter uma boa ideia de esforço e prazo sejam diferenciais...
Are you interested to know more about the internals of the .NET Runtime? So you should spend some time reading...
C++ é uma linguagem de programação velha, charmosa para os iniciados, assustadora para aqueles que conhecem pouco dela. Bjarne Stroustrup desenvolveu...
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

× Precisa de ajuda?