Micro-serviços
Alexandre Fonsttret
Arquitetura com Micro-serviços
Evolução da Arquitetura orientada a serviços
Arquitetura monolítica
Arquitetura SOA
Arquitetura de micro-serviços
Desafios dos micro-serviços
Design Patterns para micro-serviços
Deployment
Virtualização e Containers
1990s and earlier
Tight coupling
2000s
Looser coupling
2010s
Decoupled
1990s and earlier
Tight coupling
2000s
Looser coupling
2010s
Decoupled
2000s and earlier
Monolithic Approach - 1º Platform
2000-2010
Service-oriented - 2º Platform
2010 and after
Microservices - 1º Platform
Deployment
Desenvolvimento
Escalabilidade horizontal
Testabilidade
Gerenciamento de configuração
Novas tecnologias
Linguagem e/ou framework
Escalabilidade e resiliência
Acoplamento
Continuous Deployment
Complexidade
Greater modularity, loose
coupling, and reduced
dependencies
A think-small approach
for rapid development
Fine-grained, stateless,
self-contained nature
Decoupling between
different parts of a code
base.
Easy to update, replace,
remove, or augment.
I. Codebase
II. Dependencies
III. Config
IV. Backing services
V. Build, release, run
VI. Processes
VII. Port binding
VIII. Concurrency
IX. Disposability
X. Dev/prod parity
XI. Logs
XII. Admin processes
Linguagem e/ou framework
Novas tecnologias
Acoplamento
Escalabilidade e resiliência
Complexidade
Continuous Deployment
Roteamento
Monitoramento
Gerenciamento de configuração
Registro e descoberta dos
serviços
Balanceamento de carga
Tolerância à falhas
Sincrono ou Assíncrono
Confiabilidade
Desacoplamento
Synchronous Messaging -
REST, Thrift
Asynchronous Messaging -
AMQP, STOMP, MQTT
Message Formats - JSON, XML,
Thrift, ProtoBuf, Avro
Service Contracts - Defining
the Service Interfaces -
Swagger, RAML, Thrift IDL
Pode implementar uma camada de
serviços assíncrona “Single entry point
for the service clients”
Requisições podem ser apenas
repassadas, ou modificadas
Dedicated private database
Confiabilidade
Desacoplamento
Client-side discovery
Server-side discovery
Stateless
Distribuído
OAuth Centralizado
Fallback
Resiliência
Caos
Unico ponto de
entrada
CORS
Facilita o registro
no frontend
Client is blocked
Requests different
Not too long.
Compartilhar
dados
Cache distribuído
Exceção
Separa a aplicação, command
(write) e query (read)
Compartilhamento e a junção de
dados
Sistemas com requisitos de
relatórios
N serviços == N logs
Agregação
Padronização
Centralização
Independently
Scale at microservices level
Failure must not affect
other
Monolito Microservice
Virtuel MachineVirtuel Machine
App App App
Linux Kernel
Hardware Infrastructure Hardware Infrastructure
Linux Kernel
Container
App App
App App
Container
App App
App App
Container
App App
App App
VirtualMachines
Containers and Applications
Container
App App App
Container
App App App
Container
App App App
Container
App App App
Container
App App App
Container
App App App
Virtual Machine
Composition
Virtual Machine
Alexandre Fonsttret

Microservices Overview - TIJGS Universidade Catolica