Do monolito aos microserviços com Docker (PHPSP+IMA)
Palestra ministrada no PHPSP+IMA em Campinas-SP em 20/08/2016. Abordamos como sair do monolito e ir para o microserviço conforme sua aplicação cresce e simulamos isso com containers Docker
Monolith First • http://martinfowler.com/bliki/ MonolithFirst.html • Começa rápido • Baixa complexidade entre desenvolvimento e a entrega • Baixo Custo
Monolith First • http://martinfowler.com/bliki/ MonolithFirst.html • Começa rápido • Baixa complexidade entre desenvolvimento e a entrega • Baixo Custo • Meta: MVP
Feedback Loop • PDCA - Plan, Do, Check, Act • Retomada de contexto é custosa • Testes diminuem o tempo de feedback loop • Continuous Integration e Continuous Deployment / Delivery • Muitos bugs - falta de confiança para colocar em produção
–Conway’s Law “Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”
Big Monolith • Aumento do sistema, mais pessoas para mantê-lo • The Mythical Man-Month do Frederick Brooks: "Adding manpower to a late software project makes it later"
Big Monolith • Aumento do sistema, mais pessoas para mantê-lo • The Mythical Man-Month do Frederick Brooks: "Adding manpower to a late software project makes it later” • 2 pizza team - tamanho dos times - Jeff Bezos da AWS
Big Monolith • Aumento do sistema, mais pessoas para mantê-lo • The Mythical Man-Month do Frederick Brooks: "Adding manpower to a late software project makes it later” • 2 pizza team - tamanho dos times - Jeff Bezos da AWS • O crescimento leva naturalmente na divisão de equipes
Microservice Journey • Microservice não escala software, escala pessoas • Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis: • horizontal: mais máquinas
Microservice Journey • Microservice não escala software, escala pessoas • Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis: • horizontal: mais máquinas • particionamento de dados: dividindo coisas similares
Microservice Journey • Microservice não escala software, escala pessoas • Art of scalability - Arquitetos do Ebay - 3 dimensões escaláveis: • horizontal: mais máquinas • particionamento de dados: dividindo coisas similares • decomposição funcional: dividir responsabilidades diferentes
Microservice Journey • Microservice diminui o contexto, permite serviço coeso, baixo acoplamento • APIs para comunicação entre serviços distintos • Permite utilizar as melhores tecnologias (liguagem, stack) para resolver cada problema
Microservice Journey • Problemas novos • aumento de complexidade • confiabilidade tem que estar no software (hardware falha) • sempre previnir falhas (de comunicação, rede)
Microservice Journey • Problemas novos • aumento de complexidade • confiabilidade tem que estar no software (hardware falha) • sempre previnir falhas (de comunicação, rede) • diversos pipelines de entrega (CI/CD) que se interdependem
Microservice Journey • Problemas novos • smart router - testes AB, deploys blue-green, cannary releases • log unificado das instâncias • dashboard central com status de todos os serviços
Microservice Journey • Problemas novos • smart router - testes AB, deploys blue-green, cannary releases • log unificado das instâncias • dashboard central com status de todos os serviços • monitoria e alarmes para cada serviço
Microservice Journey • Problemas novos • smart router - testes AB, deploys blue-green, cannary releases • log unificado das instâncias • dashboard central com status de todos os serviços • monitoria e alarmes para cada serviço • testes integrados mais difíceis de realizar
Microservice Journey • Estratégia • funções e serviços satélites • achar os limites do contexto da aplicação - se foi usado DDD fica mais fácil identificar
Microservice Journey • Estratégia • funções e serviços satélites • achar os limites do contexto da aplicação - se foi usado DDD fica mais fácil identificar • automatização de pipeline (devops)
Microservice Journey • Estratégia • funções e serviços satélites • achar os limites do contexto da aplicação - se foi usado DDD fica mais fácil identificar • automatização de pipeline (devops) • utilizar APIs, pontos de comunicação síncronos e assíncronos
Microservice Journey • Estratégia • CQRS • consistência eventual de dados • aplicar o 12 factor apps para a criação dos novos serviços • fazer um balanço de qual projeto geram mais valor e dão menos trabalho (geralmente 1 ou 2 semanas)
Microservice Journey • Estratégia • CQRS • consistência eventual de dados • aplicar o 12 factor apps para a criação dos novos serviços • fazer um balanço de qual projeto geram mais valor e dão menos trabalho (geralmente 1 ou 2 semanas) • com a evolução matamos o monólito por inanição