vantagens e desvantagens de uma arquitetura microservices

51
Fábio Rosato [email protected] @frosato Vantagens e desvantagens de uma arquitetura microservices

Upload: fabio-rosato

Post on 21-Feb-2017

1.973 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Vantagens e desvantagens de uma arquitetura microservices

Fábio [email protected] @frosato

Vantagens e desvantagens de uma arquitetura microservices

Page 2: Vantagens e desvantagens de uma arquitetura microservices

Fábio RosatoProfessional Services [email protected]@frosato

Page 3: Vantagens e desvantagens de uma arquitetura microservices

SOA, Microservices e APIs

Projetos bacanas e desafiadores

Plataformas sensacionais

Headquarter em Campinas, escritórios em SP, Rio e EUA

Page 4: Vantagens e desvantagens de uma arquitetura microservices

Alguns Clientes

Page 5: Vantagens e desvantagens de uma arquitetura microservices

Agenda

Cenário

Estratégia de evolução

Dicas

Vantagens e desvantagens

Page 6: Vantagens e desvantagens de uma arquitetura microservices

Cenário

Page 7: Vantagens e desvantagens de uma arquitetura microservices

Microservices estáno Hype

Page 8: Vantagens e desvantagens de uma arquitetura microservices

Hype

Page 9: Vantagens e desvantagens de uma arquitetura microservices

Hype?

Page 10: Vantagens e desvantagens de uma arquitetura microservices

CloudDomain-

driven design

Service-oriented

architecture

Continuous

delivery

Elementos chaves

para a ascensão dos

microservices…

Page 11: Vantagens e desvantagens de uma arquitetura microservices

Fazendo as comparações...

Page 12: Vantagens e desvantagens de uma arquitetura microservices

WEBUI

EMAILAdapter

URAAdapter

PagamentosAdapter

Clientes

Pacotes

Reservas

Avaliações

Recomendações

PagamentosNotificações

DBAdapter

RESTAPI

Monolítica

Arquitetura

http://alistair.cockburn.us/Hexagonal+architecture

Plataforma de Viagem

Page 13: Vantagens e desvantagens de uma arquitetura microservices

Clientes

Pacotes

Reservas

Avaliações

Recomendações

Pagamentos

Notificações

Microservices

Arquitetura

PagamentosAdapter

URAAdapter

EMAILAdapter

API

Gateway

RESTAPI

RESTAPI

RESTAPI

RESTAPI

RESTAPI

REST/AMPQAPI

REST/AMQPAPI

WEBUI

Plataforma de Viagem

Page 14: Vantagens e desvantagens de uma arquitetura microservices

Application #1 Application #2

Application #3 Application #n

CenárioReal

Page 15: Vantagens e desvantagens de uma arquitetura microservices

CenárioReal

Application #1 Application #2

Application #3 Application #n

Aplicações moníliticas nem sempre modularizadas

Comunicação interna e externa caso-a-caso sem padrão definido

Ciclos de entrega longos (meses)

Dificuldade para evoluir e implantar novas tecnologias

Obsolecência tecnológica

Grandes bases compartilhadas

Page 16: Vantagens e desvantagens de uma arquitetura microservices

Evolução

Page 17: Vantagens e desvantagens de uma arquitetura microservices

Manter e evoluir!

Page 18: Vantagens e desvantagens de uma arquitetura microservices

http://www.martinfowler.com/bliki/StranglerApplication.html

Strangler Application

Application #1 Strangler Application

1

Page 19: Vantagens e desvantagens de uma arquitetura microservices

http://www.martinfowler.com/bliki/StranglerApplication.html

Application #1 Strangler Application

Strangler Application1

Page 20: Vantagens e desvantagens de uma arquitetura microservices

Strangle Application

Domínios e sub-domínios2

Conceitos de negócio

Bounded Context

Domain Driven Design

Contexto A Contexto B

Page 21: Vantagens e desvantagens de uma arquitetura microservices

Strangle Application

Microservices3Microservice #n

Database

HTTP/REST

Page 22: Vantagens e desvantagens de uma arquitetura microservices

Governança4 Definições de padrões mínimos principalmente na fronteira externa da aplicação (contexto de conexão)

Informações para tomadas de decisões em tempo de design e runtime

Importante na medida certa!

Page 23: Vantagens e desvantagens de uma arquitetura microservices

Cultura Devops5

Page 24: Vantagens e desvantagens de uma arquitetura microservices

Cultura Devops5

Times de desenvolvimento e operação atuando juntos

Time de desenvolvimento criando scripts de automação

Ciclos de entregas mais curtos (diários)

Page 25: Vantagens e desvantagens de uma arquitetura microservices

Dicas

Page 26: Vantagens e desvantagens de uma arquitetura microservices

Alguns Fatores

• Microservices não são necessariamente mais fáceis de escalar

• Você pode aplicar mecanismos distintos de segurança para os microservices

Page 27: Vantagens e desvantagens de uma arquitetura microservices

Integração

• Acertar a integração é o aspecto mais importante da tecnologia associada a microservices.

• Prefira integrações direitas para aumentar a autonomia

• Evitar de fazer alterações que mudem o contrato

Page 28: Vantagens e desvantagens de uma arquitetura microservices

Integração

• Mantenha sua tecnologia de APIs agnóstica (REST HTTP / AMQP)

• Faça seus serviços simples para os consumidores– De nada adianta ter um microservice bacana se ele é

difícil de ser utilizado

• Esconda os detalhes de implementação internos

Page 29: Vantagens e desvantagens de uma arquitetura microservices

Composição - Coreografia

Microservice #1 Microservice #2 Microservice #n

Banco Relacional Documentos Key/Store Data Base

API API API

Microservice #cCamada de coreografia

Camada de dados

Page 30: Vantagens e desvantagens de uma arquitetura microservices

DRY – don’t repeat yourself

Código repetitivo você pode colocar em

um componente (library), mas

cuidado! Evoluções nos componentes

impactam todos os microservices que dependem deles.

Page 31: Vantagens e desvantagens de uma arquitetura microservices

Client Library ou SDKs

• Criar um client library facilita o consumo do microservices e mitiga o uso indevido

• O problema é a diversidade tecnológica e a manutenção dos Client Library

• Cuidado: não deixe vazar lógicas que deveriam estar no servidor para dentro do client da API. (Acoplamento)

Page 32: Vantagens e desvantagens de uma arquitetura microservices

Uso de múltiplas versões de serviços concorrentes

• Manter instâncias de serviços novos e velhos e rotear para um ou outro– Utilize nas situações que alterar os consumidores

mais velhos tem um custo muito alto

– Ou em situações de um curto período de tempo com implantações blue/greenn

• Coexistir diferentes endpoint

Page 33: Vantagens e desvantagens de uma arquitetura microservices

Architectural Safety

• Proteja-se dos serviços laranjas podres: aqueles que estragam todos os outros

• Os butterflies são potencialmente mais danosos. Monitore!

Microservice #1 Microservice #2 Microservice #3RESTAPI

RESTAPI

RESTAPI

Microservice #4RESTAPI butterfly

Page 34: Vantagens e desvantagens de uma arquitetura microservices

Vantagens e desvantagens

benefícios e consequências

Page 35: Vantagens e desvantagens de uma arquitetura microservices

Módulos com Fronteiras Fortes

Page 36: Vantagens e desvantagens de uma arquitetura microservices

Fortes Fronteiras de módulos• Microservices

– A dissociação modular de microservices funcionam melhor porque os limites dos módulos são uma barreira para referências entre os módulos

– Você até pode ter um grande acoplamento com microservices, mas o esforço certamente será maior

– O desafio é definir o domínios e sub-domínios

– Funciona bem para equipes isoladas (esquadrões)

• Monolítica– É perfeitamente possível ter

limites firmes de módulos em sistemas monolíticos, mas requer disciplina e acompanhamento

– É mais fácil bular as fronteiras, e esse atalho feito amplamente minam a estrutura modular do sistema e o tornam um “lixo”

Page 37: Vantagens e desvantagens de uma arquitetura microservices

Distribuição

Page 38: Vantagens e desvantagens de uma arquitetura microservices

Distribuição

• Grande desvantagem:– Ser muito distribuído

– Desempenho• Latência de rede

• Custo de serialização e deserialização

• Falácias da computação distribuída*

• Dicas (Mitigações):– Aumentar a granularidade

das chamadas

– Usar chamadas assíncronas• melhoria de desempenho

• Porém é:– Difícil de acertar

– Difícil de depurar

– Confiabilidade• Programa-se para o fracasso e

suas consequências

* Falácias da computação distribuída: http://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Page 39: Vantagens e desvantagens de uma arquitetura microservices

Implantação Independente

Page 40: Vantagens e desvantagens de uma arquitetura microservices

Implantação Independente

• Simplicidade– A unidade microservice é

mais simples, em tese é mais fácil de implantar

– Problemas no microservice, se ele for bem desenhado, tendem a propagar menos impacto no ambiente todo

• Scripts de automatização– Quase um pré-requisito: é

difícil ser ágil fazendo implantações manuais

• Entrega contínua– Redução do tempo de ciclo

entre uma ideia e o software em execução

– Respostas mais rápida as mudanças do mercado

– Vantagem competitiva

• Feedbacks mais rápidos– E ciclo de correções mais

rápidos

Page 41: Vantagens e desvantagens de uma arquitetura microservices

Consistência Eventual

#sqn

Page 42: Vantagens e desvantagens de uma arquitetura microservices

Consistência Eventual• Causa: descentralização de

dados da abordagem

• É um efeito colateral para garantir a disponibilidade– Tradeoff entre

disponibilidade e consistência dos dados

• Cache é importante!– Invalidação de cache é difícil

– Dica: Utilize eventos para invalidar cache

• Tolerância a inconsistência (teorema de CAP)– Consistency

– Availability

– Tolerance to network partitions

http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf

Page 43: Vantagens e desvantagens de uma arquitetura microservices

Diversidade Tecnológica

Page 44: Vantagens e desvantagens de uma arquitetura microservices

Diversidade Tecnológica• Liberdade

– Fortalece a as escolhas independentes de tecnologia

– Algumas linguagens e tipos de armazenamento de dados são mais adequados para determinados tipos de problemas

– O objetivo é resolver o problema através das escolhas mais inteligentes

– Experimentações de novas tecnologias

• Padronização– As questões de interface

(HTTP/REST, AMQP), ferramentas de ambiente e monitoração

• Bibliotecas– Mais controle no

versionamento de bibliotecas

Page 45: Vantagens e desvantagens de uma arquitetura microservices

Complexidade Operacional

Page 46: Vantagens e desvantagens de uma arquitetura microservices

Complexidade Operacional• Produtividade

– Para algumas equipes pode ser um fardo que mina a produtividade

• Tensão– Pequenos módulos

independentes e implantações rápidas traz uma pressão adicional para operação

• Agilidade– É praticamente impossível

garantir um ambiente operacional de dezenas de serviços sem automação

• Responsabilidade– A uma tendência da

complexidade subir para a camada de interconexões dos serviços

• Skills e Ferramentas– Requer algumas competências,

habilidades e ferramental

• Colaboração– Introduzir uma cultura DevOps:

uma maior colaboração entre os desenvolvedores, operações e pessoal de infraestrutura

Page 47: Vantagens e desvantagens de uma arquitetura microservices

Complexidade Operacional

Page 48: Vantagens e desvantagens de uma arquitetura microservices

Application #1 Application #2

Application #3 Application #n

CenárioInicial - pós adoção de microservices

Microservice #1 Microservice #2 Microservice #n

Banco Relacional Documentos Key/Store Data Base

REST API REST API REST API

API Gateway

Page 49: Vantagens e desvantagens de uma arquitetura microservices

API Gateway

Service aggregationRate Limiting Monitoring & AlertsAuthentication Models Policy EnforcementException handlingAnalytics on API Consumption

Endereça questões como: Atenção:

Não despreze a latênciaGateway não resolve tudo mas

ajuda em várias questões não funcionaisRate Limiting Policy

JSON Threat PolicyPayload Size PolicyIP Filtering Policy

Page 50: Vantagens e desvantagens de uma arquitetura microservices

Obrigado!

Page 51: Vantagens e desvantagens de uma arquitetura microservices

Fábio [email protected] @frosato

www.slideshare.net/frosato/

Vantagens e desvantagens de uma arquitetura microservices