Continuous Delivery na SoundCloud

50
Continuous Delivery na SoundCloud Vitor Pellegrino Entregando software para milhões cada commit sem que a música pare

Transcript of Continuous Delivery na SoundCloud

Page 1: Continuous Delivery na SoundCloud

Continuous Delivery na SoundCloud

Vitor Pellegrino

Entregando software para milhões cada commit sem que

a música pare

Page 2: Continuous Delivery na SoundCloud
Page 3: Continuous Delivery na SoundCloud
Page 4: Continuous Delivery na SoundCloud

> 11 horas de novos audios a cada minuto

~ 300 milhões de pessoas a cada mês

Page 5: Continuous Delivery na SoundCloud

quanto tempo demoraria para entregar uma mudança de uma linha de código num projeto?

Page 6: Continuous Delivery na SoundCloud

Ideia-> Desenvolvimento -> Revisão -> Deploy

Page 7: Continuous Delivery na SoundCloud

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

Page 8: Continuous Delivery na SoundCloud

como chegamos até esse ponto?

Page 9: Continuous Delivery na SoundCloud

➜ ~ rails soundcloud

em algum momento de 2007

Page 10: Continuous Delivery na SoundCloud

SoundCloud, circa 2011

Page 11: Continuous Delivery na SoundCloud
Page 12: Continuous Delivery na SoundCloud

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)

Page 13: Continuous Delivery na SoundCloud
Page 14: Continuous Delivery na SoundCloud
Page 15: Continuous Delivery na SoundCloud

http://bit.ly/sc-microservices

Page 16: Continuous Delivery na SoundCloud

dev ops

Page 17: Continuous Delivery na SoundCloud

Continuous Delivery

Page 18: Continuous Delivery na SoundCloud
Page 19: Continuous Delivery na SoundCloud

Velocidade de desenvolvimento vs

Qualidade

Page 20: Continuous Delivery na SoundCloud

compilação empacotamento Testes Deploy

testing stable release

Page 21: Continuous Delivery na SoundCloud

10x

Page 22: Continuous Delivery na SoundCloud
Page 23: Continuous Delivery na SoundCloud

Feedback rápido através de testes automatizados

Feedback tardio e testes manuais

ao invés de

Page 24: Continuous Delivery na SoundCloud

Automação de testes usando ambientes isolados

Testes contra ambientes de produção

ao invés de

Page 25: Continuous Delivery na SoundCloud

Automação de deployment

Deployment manual

ao invés de

Page 26: Continuous Delivery na SoundCloud

Build pipelines para orquestrar teste e

deployment

Conhecimento tribal e builds manuais

ao invés de

Page 27: Continuous Delivery na SoundCloud

Ambientes de produção isolados e confiáveis

Ambientes de produção instáveis

ao invés de

Page 28: Continuous Delivery na SoundCloud

Técnicas

Page 29: Continuous Delivery na SoundCloud

Integração Contínua

Page 30: Continuous Delivery na SoundCloud

Trunk based development

Page 31: Continuous Delivery na SoundCloud

feature flags

Page 32: Continuous Delivery na SoundCloud

Testes de integração

Page 33: Continuous Delivery na SoundCloud
Page 34: Continuous Delivery na SoundCloud

> git

SquashFS

> make

unit tests integration tests

acceptance tests perf tests

> make

/dev/null

antes

Page 35: Continuous Delivery na SoundCloud

> make > gitunit tests integration tests

unit tests integration tests

acceptance tests perf tests

depois

Page 36: Continuous Delivery na SoundCloud
Page 37: Continuous Delivery na SoundCloud
Page 38: Continuous Delivery na SoundCloud

Debian packages

Page 39: Continuous Delivery na SoundCloud

Docker

Page 40: Continuous Delivery na SoundCloud
Page 41: Continuous Delivery na SoundCloud
Page 42: Continuous Delivery na SoundCloud
Page 43: Continuous Delivery na SoundCloud

Resultados até agora

Page 44: Continuous Delivery na SoundCloud

Comprometa a implementação, nunca a

visão.

Page 45: Continuous Delivery na SoundCloud

Nós iteramos. Um monte.

Page 46: Continuous Delivery na SoundCloud

Trabalho futuro

Page 47: Continuous Delivery na SoundCloud

Ambiente end-to-end integrado

Page 48: Continuous Delivery na SoundCloud

Dependências entre pipelines

Page 49: Continuous Delivery na SoundCloud

?

Page 50: Continuous Delivery na SoundCloud

Obrigado!