Continuous deployment has proven to be a successful and even addicting part of Etsy's engineering culture. See where it's applicable, some of the tools that make it easy, and the kind of architectural change that it makes possible.
11. MTTR vs MTTF
● Cheaper for ● Cheaper for
electrons protons & neutrons
12. MTTR vs MTTF
● Cheaper for ● Cheaper for
electrons protons & neutrons
● Cost prohibitive
for humans
13. MTTR vs MTTF
● Cheaper for ● Cheaper for
electrons protons & neutrons
● Cost prohibitive
for humans
● Necessitates low
MTTD
14. The Case of Electrons
● Consider a project that has 6 bugs
● continuous deployment testing misses 4
& deploys fixes in 4 hours
● monthly release testing misses only 2
& deploys fixes in 24 hours
● 16 hours of broken < 48 hours of broken
70. From Twisted to PHP
● Run Apache/PHP on a new port
● Implement one service in PHP
71. From Twisted to PHP
● Run Apache/PHP on a new port
● Implement one service in PHP
● Ramp up users on new service
72. From Twisted to PHP
● Run Apache/PHP on a new port
● Implement one service in PHP
● Ramp up users on new service
● Repeat for remaining services
73. From Twisted to PHP
● Run Apache/PHP on a new port
● Implement one service in PHP
● Ramp up users on new service
● Repeat for remaining services
● Shut down Twisted version
76. PostgreSQL to MySQL Shards
● Migrate table by table
● Teed writes to MySQL
● Backfill old data from PostgreSQL
77. PostgreSQL to MySQL Shards
● Migrate table by table
● Teed writes to MySQL
● Backfill old data from PostgreSQL
● Verify data matches in both DBs
78. PostgreSQL to MySQL Shards
● Migrate table by table
● Teed writes to MySQL
● Backfill old data from PostgreSQL
● Verify data matches in both DBs
● Ramp up users reading from MySQL
79. PostgreSQL to MySQL Shards
● Migrate table by table
● Teed writes to MySQL
● Backfill old data from PostgreSQL
● Verify data matches in both DBs
● Ramp up users reading from MySQL
● Stop Postgres writes & drop tables
82. Continuous Deploy Pattern
● Change in small steps
● Dark launch placeholder via config
● Deploy to production while dark
83. Continuous Deploy Pattern
● Change in small steps
● Dark launch placeholder via config
● Deploy to production while dark
● Maintain old & new in parallel
84. Continuous Deploy Pattern
● Change in small steps
● Dark launch placeholder via config
● Deploy to production while dark
● Maintain old & new in parallel
● Ramp up to new architecture
85. Continuous Deploy Pattern
● Change in small steps
● Dark launch placeholder via config
● Deploy to production while dark
● Maintain old & new in parallel
● Ramp up to new architecture
● Remove old architecture