Vantagens e desvantagens de uma arquitetura microservices
-
Upload
fabio-rosato -
Category
Software
-
view
1.973 -
download
3
Transcript of Vantagens e desvantagens de uma arquitetura microservices
Fábio [email protected] @frosato
Vantagens e desvantagens de uma arquitetura microservices
Fábio RosatoProfessional Services [email protected]@frosato
SOA, Microservices e APIs
Projetos bacanas e desafiadores
Plataformas sensacionais
Headquarter em Campinas, escritórios em SP, Rio e EUA
Alguns Clientes
Agenda
Cenário
Estratégia de evolução
Dicas
Vantagens e desvantagens
Cenário
Microservices estáno Hype
Hype
Hype?
CloudDomain-
driven design
Service-oriented
architecture
Continuous
delivery
Elementos chaves
para a ascensão dos
microservices…
Fazendo as comparações...
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
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
Application #1 Application #2
Application #3 Application #n
CenárioReal
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
√
√
√
√
√
√
Evolução
Manter e evoluir!
http://www.martinfowler.com/bliki/StranglerApplication.html
Strangler Application
Application #1 Strangler Application
1
http://www.martinfowler.com/bliki/StranglerApplication.html
Application #1 Strangler Application
Strangler Application1
Strangle Application
Domínios e sub-domínios2
Conceitos de negócio
Bounded Context
Domain Driven Design
Contexto A Contexto B
Strangle Application
Microservices3Microservice #n
Database
HTTP/REST
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!
Cultura Devops5
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)
Dicas
Alguns Fatores
• Microservices não são necessariamente mais fáceis de escalar
• Você pode aplicar mecanismos distintos de segurança para os 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
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
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
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.
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)
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
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
Vantagens e desvantagens
benefícios e consequências
Módulos com Fronteiras Fortes
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”
Distribuição
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
Implantação Independente
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
Consistência Eventual
#sqn
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
Diversidade Tecnológica
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
Complexidade Operacional
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
Complexidade Operacional
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
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
Obrigado!
Fábio [email protected] @frosato
www.slideshare.net/frosato/
Vantagens e desvantagens de uma arquitetura microservices