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:

No último post, solicitei uma explicação para o resultado da execução do código que segue: using System; using System.Threading.Tasks; using...
Um de meus temas de estudo preferidos no campo de desenvolvimento é design patterns. Isso sempre me levou a refletir...
A pergunta do título, embora simples, não é fácil de responder. De qualquer forma, o conhecimento necessário para respondê-la é...
So, I decided to learn how to code using R. That’s something I wrote: ## defining a function makeCacheMatrix <-...
In this post, I’m going to share with you one of the RavenDB 4 features that I like the most:...
Neste post, gostaria de compartilhar a estrutura que venho adotando em meus projetos com microsserviços. São algumas ideias que tenho...
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?