Getting started with microservices

“Microservices” is a trending topic. Big companies are trying to associate their technologies with this concept – but, it is important to know that you don’t need to use any particular technology to follow the microservices way.

In this and some future posts, I will share my understanding about Microservices with definitions and a lot of examples.

Let’s start with the basics.

What are Microservices?

A microservice is a small and autonomous service with one, and only one, very focused capability that a remote API exposes to the rest of the system. (Sam Newman)

A Microservice could be delivered as an isolated service on a platform as a service (PAAS), or it might be its own operating system process. You don’t need to adopt any particular host technology to work with microservices.

A Microservice is individually and quickly deployable. When you change a microservice, you should be able to deploy only that changed microservice to the production environment without touching any other part of the system.  If you need to restart/deploy other services when you deploy a microservice, you are doing it wrong.

To be autonomous, a Microservice owns its data store.

A system with Microservices is a distributed system.

What is a Microservice Architecture?

It is a style of engineering highly automated; evolvable software systems made up of microservices. Microservices architecture is a lightweight form of SOA where each service focuses on doing one thing and doing it well.

How should each microservice be architected?

When creating Microservices, I recommend adopting the Hexagonal Architecture Pattern.

In the figure, we have represented two microservices of an e-commerce system: 1) ShoppingCart and 2) ProductCatalog. Each one owns its own database.

ShoppingCart microservice uses an adapter to communicate with ProductCatalog.

ShoppingCart provides HTTP adapters to communicate with consumers – anyway; it is a design choice. It is pretty frequent to adopt other technologies like message queues, for example, for communication.

How should a system with microservices be architected?

A system built with microservices starts with an API gateway microservice.  The idea is to hide the microservices complexity of the customer application.

Each microservice is a separate process that uses their adapters to communicate with the other.

Why adopt a microservices architecture style?

A system built with microservices is robust by design being more malleable, scalable, and resilient.

It is simpler to practice continuous delivering with a microservices architected system.

Why NOT?

Microservice systems are distributed systems. They are harder to test than monolithic systems. It is also fair to remember that communication across process boundaries is slower than in-process method calls.

Microservices are developed, deployed and managed independently in production. At some point, a lot of monitoring tools will be necessary.

Next steps

Now that we understand the basics of the Microservices architecture style, we are ready to write some code…

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 desta série, tratamos da “Lei do Retorno Acelerado”. Sabemos que negócios digitais tem crescimento potencialmente exponencial. Neste...
Como você pode se considerar um profissional se você não sabe se todo seu código funciona? Como você pode saber...
I talked about microservices at two conferences last week. In both opportunities, the attendees asked me about how to implement...
Anualmente, como Microsoft MVP & RD, participo de uma conferência global, organizada pela Microsoft, na sede da empresa em Redmond....
Um erro imperdoável, na implementação de microsserviços é considerar que a conexão é estável e confiável. Por razões variadas, a...
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...
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?