O que são microsserviços?
São uma abordagem de arquitetura na qual o software consiste de pequenos serviços independentes que se comunicam entre si e são organizados de acordo com seus domínios de negócio.
Em arquiteturas monolíticas, os processos são extremamente acoplados e são executados como um único serviço , sendo assim se uma parte do sistema tiver a necessidade de escalar será necessário escalar o sistema todo.
Microsserviços são autônomos, cada serviço pode ser desenvolvido, implantado e escalado sem interferir em outros serviços.
Microsserviços são especialistas, cada serviço é desenhado para resolver um problema específico, se for necessário adicionar código de outras responsabilidades é recomendável separar em outro serviço.
Microsserviços são resilientes, a independência do serviço aumenta a resiliência a falhas na arquitetura, se um deles tiver problema , só afetará a parte do fluxo pela qual ele é responsável.
Microsserviços facilitam a reutilização de código, a divisão em módulos com responsabilidades bem definidas possibilita que funções específicas de um serviço possam ser utilizadas para complementar features sem outros sem a necessidade de escrever um código novo.
Microsserviços permitem ter liberdade na escolha da stack, pois n microsserviços de n linguagens diferentes podem se comunicar via endpoints sem problemas.
Spring Cloud
Fornece uma série de ferramentas que facilitam a criação de aplicações distribuídas e escaláveis.
Dentre as funcionalidades podemos citar:
Service Discovery
Que permite que outros serviços "descubram" facilmente a rota dos serviços que precisam acessar
Mais conhecidos do Spring Cloud:
Gateway
Tem o papel de ser um intermediário nas requisições para outros serviços.
Mais conhecidos do Spring Cloud:
Config server
Permite armazenar configurações de aplicações de modo centralizado fora da aplicação (por ex, em um repositório que centralize todas as configurações de todos os microsserviços.
Load Balancer
É responsável por distribuir de forma eficiente o tráfego de requisições dentre as instâncias de um mesmo serviço.
Mais conhecidos no Spring
Ribbon
Spring Cloud Load Balancer
Feign
Facilita a criação e utilização de Clients HTTP.
Circuit Breaker
Facilita o acompanhamento e controle de falhas e altas taxas de latências entre os serviços.
Mais conhecidos no Spring:
Referências e dicas de onde estudar mais sobre:
The Beginner’s Guide To Spring Cloud - Ryan Baxter
Introduction to Spring Cloud in 10 Minutes
Microservices com Spring Cloud
Spring Cloud | Introduction | Simple Programming
01 Agenda - Spring Boot Microservices Level
1 Agenda and prerequisites - Spring Boot Microservices Level 2
Microservices Architecture - What is Service Discovery with Eureka?
What is service discovery really all about? - Microservices Basics Tutorial
Spring Cloud Service Discovery: Netflix Eureka Server
Spring Cloud Netflix Eureka Baeldung
Service Discovery com o Eureka
How to configure SpringCloud Zuul – Routing and Filtering using SpringBoot | Java Techie
Spring Boot Microservices 03 - Service discovery Eureka e Gateway Zuul
Spring Cloud | Cloud Config Server | Simple Programming
What is Spring Cloud? | Tech Primers
Spring Cloud Feign - Declarative REST Client
11 Understanding the circuit breaker pattern - Spring Boot Microservices Level 2
Spring Tips: Spring Cloud Circuit Breaker
Alguma dúvida ou sugestão? Deixa aqui nos comentários :)
Top comments (2)
Essa divisão de responsabilidades dos microsserviços é bastante interessante, e além de ajudar a entender a arquitetura de microsserviços, ajuda a entender quando vale a pena usar microsserviços ou não.
Exato, pois às vezes aquele monolíto já está com uma responsabilidade bem definida e atende bem determinada demanda que migrar para uma arquitetura de microsserviços talvez deixasse mais complexo o desenvolvimento e não apresentasse tantas vantagens assim