Continuous Delivery na SoundCloud

Preview:

Citation preview

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!

Recommended