Continuous Delivery na SoundCloud
Vitor Pellegrino
Entregando software para milhões cada commit sem que
a música pare
> 11 horas de novos audios a cada minuto
~ 300 milhões de pessoas a cada mês
quanto tempo demoraria para entregar uma mudança de uma linha de código num projeto?
Ideia-> Desenvolvimento -> Revisão -> Deploy
Tempo adicionando valor
Tempo
idéia dev revisão deploy
4 horas
2 semanas
10 minutos
1 semana
5 minutos
mudança de uma linha de código
como chegamos até esse ponto?
➜ ~ rails soundcloud
em algum momento de 2007
SoundCloud, circa 2011
Organizações que desenvolvem sistemas de
software tendem a produzir sistemas que são cópias das estruturas de
comunicação dessas organizações.
Melvin Conway (1968)
http://bit.ly/sc-microservices
dev ops
Continuous Delivery
Velocidade de desenvolvimento vs
Qualidade
compilação empacotamento Testes Deploy
testing stable release
10x
Feedback rápido através de testes automatizados
Feedback tardio e testes manuais
ao invés de
Automação de testes usando ambientes isolados
Testes contra ambientes de produção
ao invés de
Automação de deployment
Deployment manual
ao invés de
Build pipelines para orquestrar teste e
deployment
Conhecimento tribal e builds manuais
ao invés de
Ambientes de produção isolados e confiáveis
Ambientes de produção instáveis
ao invés de
Técnicas
Integração Contínua
Trunk based development
feature flags
Testes de integração
> git
SquashFS
> make
unit tests integration tests
acceptance tests perf tests
> make
/dev/null
antes
> make > gitunit tests integration tests
unit tests integration tests
acceptance tests perf tests
depois
Debian packages
Docker
Resultados até agora
Comprometa a implementação, nunca a
visão.
Nós iteramos. Um monte.
Trabalho futuro
Ambiente end-to-end integrado
Dependências entre pipelines
?
Obrigado!
Top Related