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. Por meio do artigo acima, podemos recomendar os vestidos mais recentes, em uma variedade de comprimentos, cores e estilos para cada ocasião, de suas marcas favoritas.

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:

In these days, performance is a feature! So, you should start, right now, to refactor your code to achieve better...
Há algum tempo aponto o “abuso” do GC é uma das principais causa para problemas de performance em produção. Nesse...
Write code is not a simple task. It is easy to make mistakes that result in bad performance. The last...
Quando estamos desenvolvendo aplicações distribuídas, não devemos nos perguntar se teremos problemas de conectividade. No lugar disso, devemos nos perguntar...
Gosto bastante da abordagem de Caitie McCaffrey para explicar sagas. Neste post, me inspiro na linha de raciocínio dela para...
The example which motivated this post comes from the excellent book Designing Distributed Systems by Brendan Burns (co-founder of the...
× Precisa de ajuda?