DEV Community

Kamila Santos Oliveira for WoMakersCode

Posted on • Updated on

Microsserviços com Spring Cloud: Introdução

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.

Config Server

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.

Feign

Circuit Breaker

Facilita o acompanhamento e controle de falhas e altas taxas de latências entre os serviços.

Mais conhecidos no Spring:

Hystrix

Resilience4J

Referências e dicas de onde estudar mais sobre:

O que são microsserviços?

Spring Cloud

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 Gateway Baeldung

Spring Cloud Gateway DevGlan

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)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

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.

Collapse
 
kamilacode profile image
Kamila Santos Oliveira

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