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
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
• 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
• 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
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
baixo acoplamento • APIs para comunicação entre serviços distintos • Permite utilizar as melhores tecnologias (liguagem, stack) para resolver cada problema
confiabilidade tem que estar no software (hardware falha) • sempre previnir falhas (de comunicação, rede) • diversos pipelines de entrega (CI/CD) que se interdependem
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
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
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
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)
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