Vinted life embetterment

Preview:

Citation preview

Life Embetterment with Hundreds of Deployments

a Week

Friday, October 11, 13

Life Embetterment with Hundreds of Deployments

a Week Day

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Fall 2012

7 Developers

1 DevOps

150 M page views / month

Friday, October 11, 13

Using GitHub

Friday, October 11, 13

Abusing GitHub

Friday, October 11, 13

Friday, October 11, 13

Tests!

Friday, October 11, 13

Test coverage ~30%

Friday, October 11, 13

Friday, October 11, 13

Tests run 8-12 min

Friday, October 11, 13

Friday, October 11, 13

Deploying untested code

Friday, October 11, 13

Friday, October 11, 13

No concurrent deployments

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

One Friday night...

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Slow feedback

Fragile releases

Cumbersome process

Friday, October 11, 13

Slow feedback

Fragile releases

Cumbersome process

Friday, October 11, 13

statsd / graphite

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Slow feedback

Fragile releases

Cumbersome process

Friday, October 11, 13

Strange coincidence...

Friday, October 11, 13

When shipping new code

Friday, October 11, 13

When shipping new codeWhen shipping new code, always add tests

Friday, October 11, 13

When modifying old code

Friday, October 11, 13

When modifying old codeWhen modifying old code, always add tests

Friday, October 11, 13

Always add tests

Friday, October 11, 13

Eliminate random failures

Friday, October 11, 13

Pull Requests

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Release more often

Friday, October 11, 13

TextText

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Slow feedback

Fragile releases

Cumbersome process

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Prepare release: 2 min 43 sec

Install gems: 42 sec

Stop jobs: 58 sec

Migrate database: 15 sec

Sync translations: 3 min 20 sec

Start jobs: 23 sec

Restart app: 24 min 12 sec

Total: 32 min 33 sec

Friday, October 11, 13

Friday, October 11, 13

Build on steroids

Friday, October 11, 13

Split builds

Friday, October 11, 13

Parallel tests

Friday, October 11, 13

Build on fast hardware

Friday, October 11, 13

Friday, October 11, 13

Build on fast hardware

Friday, October 11, 13

GC tuning

Ruby 2

Friday, October 11, 13

Use better tools

Friday, October 11, 13

Thin -> Unicorn

10x faster deploys

Friday, October 11, 13

Online database migrations

Friday, October 11, 13

Friday, October 11, 13

Put your build server to work

Friday, October 11, 13

Prepare everything upfront

Friday, October 11, 13

Deploy with Jenkins

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Auto deploy

Friday, October 11, 13

Instant feedback

Reliable releases

Automatic process

Friday, October 11, 13

Fall 2013

12 Developers

2 DevOps

500 M page views / month

Friday, October 11, 13

[13:09:08] Vinc:

Inbox is not under HTTPS!

[13:25:38] Vinc:

Yes, I see HTTPS, Thanks!

Friday, October 11, 13

Friday, October 11, 13

Friday, October 11, 13

Mindaugas Mozūrasgithub.com/mmozuras@mmozuras

Tomas Varaneckasgithub.com/spajus@spajus

Friday, October 11, 13

We’re hiring!

Friday, October 11, 13

Thank You!

Friday, October 11, 13

Recommended