Desde seu início o Snap CI buscou uma arquitetura enxuta, que atendesse as demandas do momento, mas que fosse simples o bastante para ser evoluída. O número de builds simultâneas cresceu e tivemos que evoluir nossa arquitetura. Nessa palestra vamos apresentar a arquitetura do Snap CI, apresentar os problemas de escalabilidade que sofremos e os caminhos que trilhamos para evoluí-la.
23. ARQUITETURA EVOLUTIVA
“An evolutionary architecture designs for
incremental change in an architecture
as a first principle”
- Neal Ford & Rebecca Parsons
- Definição ainda em progresso -
https://www.thoughtworks.com/radar/techniques/evolutionary-architecture
24. CARACTERÍSTICAS DE ARQUITETURA EVOLUTIVA
• Suporte a modularidade
• Mudanças não quebram o sistema
• Organizada em torno do domínio de negócio
• Inspirado em DDD (Domain Driven Design)
• Permite experimentação
• Através da troca de componentes
• Entregas Canário, Testes A/B
• Desenvolvimento guiado por hipóteses
25. PRINCÍPIOS DE ARQUITETURA EVOLUTIVA
• Trazer a dor para mais perto
• “Se doer, faça mais vezes”
• Praticar automação
• Last Responsible Moment
• Decisões feitas somente quando necessário
• Funções Fitness
• Radar com características importantes do sistema
https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture
35. SNAP CI
Github
www
BuildHO que acontece quando
fazemos deploy?
•Esperar todos os builds
terminarem
•Colocar a aplicação em
modo de manutenção
•Implantar e esperar por
migrações
60. LA GRANDE FINALE!
• Arquitetura Evolutiva
• Bring the pain forward
• Last responsible moment
• Automação do provisionamento da infraestrutura
• Implantações Blue/Green
• Decisões mais conscientes, certas ou erradas
• Feature Toggles