continuous deployment at scale, phpconfasia 2016
TRANSCRIPT
![Page 1: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/1.jpg)
Scale
Deploymentcontinuous
at
@premshree
![Page 2: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/2.jpg)
![Page 3: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/3.jpg)
1.7 million active sellers
26.1 million active buyers
$2.39 billion GMS (2015)
921 employees
![Page 4: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/4.jpg)
Premshree PillaiSr. Engineer, Etsy
![Page 5: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/5.jpg)
hello!
![Page 6: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/6.jpg)
principles
q & a
tooling + culture
![Page 7: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/7.jpg)
principles
![Page 8: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/8.jpg)
just ship
![Page 9: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/9.jpg)
enable innovation
![Page 10: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/10.jpg)
enable innovation(you are creating products, not code)
![Page 11: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/11.jpg)
optimize for purpose
![Page 12: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/12.jpg)
optimize for purpose
![Page 13: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/13.jpg)
optimize for autonomy
![Page 14: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/14.jpg)
optimize for mastery
![Page 15: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/15.jpg)
experimentation
![Page 16: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/16.jpg)
experimentationA/B testing
![Page 17: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/17.jpg)
quick iteration
![Page 18: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/18.jpg)
quick iteration(improving products/features)
![Page 19: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/19.jpg)
quick iteration(fail fast > stagnant code)
![Page 20: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/20.jpg)
continuous improvement
![Page 21: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/21.jpg)
low MTTR
![Page 22: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/22.jpg)
continuous deployment
continuous delivery/
![Page 23: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/23.jpg)
commit
![Page 24: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/24.jpg)
commit build
![Page 25: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/25.jpg)
commit build tests
![Page 26: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/26.jpg)
commit build tests user tests
![Page 27: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/27.jpg)
commit build tests user tests release
![Page 28: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/28.jpg)
commit build tests user tests release
![Page 29: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/29.jpg)
commit build tests user tests release
![Page 30: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/30.jpg)
tooling
![Page 31: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/31.jpg)
frequent check-ins
![Page 32: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/32.jpg)
frequent check-ins(to master!)
![Page 33: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/33.jpg)
frequent check-insbranching in code
![Page 34: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/34.jpg)
Feature
![Page 36: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/36.jpg)
$server_config['my_feature'] = [ 'enabled' => 'on'];
![Page 37: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/37.jpg)
$server_config['my_feature'] = [ 'enabled' => 'off'];
![Page 38: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/38.jpg)
$server_config['my_feature'] = [ 'enabled' => 1];
![Page 39: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/39.jpg)
$server_config['my_feature'] = [ 'enabled' => 1, 'bucketing' => 'user'];
![Page 40: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/40.jpg)
if (Feature::isEnabled('my_feature') {
}
![Page 41: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/41.jpg)
if (Feature::isEnabledFor('my_feature', $user) {
}
![Page 42: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/42.jpg)
Experimentation
![Page 43: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/43.jpg)
ExperimentationA/B testing
![Page 44: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/44.jpg)
$server_config['my_feature'] = [ 'enabled' => 'on'];
![Page 45: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/45.jpg)
$server_config['my_feature'] = [ 'enabled' => [ 'layout1' => 1, 'layout2' => 3, 'layout3' => 3 ]];
![Page 46: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/46.jpg)
if (Feature::isEnabled('my_feature')) { switch (Feature::variant('my_feature')) { case 'layout1': // layout1 code break; case 'layout2': // layout2 code break; }}
![Page 47: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/47.jpg)
continuous integration
![Page 48: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/48.jpg)
continuous integration(and automated tests)
![Page 49: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/49.jpg)
keep the build green
![Page 50: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/50.jpg)
![Page 51: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/51.jpg)
ready to release
![Page 52: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/52.jpg)
ready to releaseanytime
![Page 53: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/53.jpg)
commit build tests user tests release
try
![Page 54: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/54.jpg)
Try
![Page 55: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/55.jpg)
Try(before you commit)
![Page 56: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/56.jpg)
TryLib
![Page 58: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/58.jpg)
![Page 59: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/59.jpg)
commit build tests user tests release
try deployinator
![Page 60: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/60.jpg)
Deployinator
![Page 62: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/62.jpg)
![Page 63: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/63.jpg)
commit build tests user tests release
try deployinator ci/jenkins
![Page 64: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/64.jpg)
![Page 65: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/65.jpg)
commit build tests user tests release
try deployinator ci/jenkins manual tests
![Page 66: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/66.jpg)
commit build tests user tests release
try deployinator ci/jenkins manual tests deploy
![Page 67: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/67.jpg)
![Page 68: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/68.jpg)
![Page 69: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/69.jpg)
commit build tests user tests release
![Page 70: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/70.jpg)
commit build tests user tests princess prod
![Page 71: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/71.jpg)
anybody can push
![Page 73: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/73.jpg)
be anxious
![Page 74: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/74.jpg)
… but do not fear
![Page 75: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/75.jpg)
dev /
ops
![Page 76: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/76.jpg)
♥dev /
ops
![Page 77: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/77.jpg)
dark changes
![Page 78: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/78.jpg)
template changes css tweaks unreferenced code
![Page 79: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/79.jpg)
![Page 80: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/80.jpg)
config pushes
![Page 81: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/81.jpg)
$server_config['my_feature'] = [ 'enabled' => 1, 'bucketing' => 'user'];
![Page 82: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/82.jpg)
$server_config['my_feature'] = [ 'enabled' => 50, 'bucketing' => 'user'];
![Page 83: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/83.jpg)
push train
![Page 84: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/84.jpg)
![Page 85: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/85.jpg)
![Page 86: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/86.jpg)
premshree> .join
john
![Page 87: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/87.jpg)
john + premshree
premshree>
![Page 88: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/88.jpg)
john + premshree
premshree> .good
![Page 89: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/89.jpg)
john + premshree
premshree> .bueno
![Page 90: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/90.jpg)
john + premshree*
premshree>
![Page 91: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/91.jpg)
john + premshree*
sally> .join
![Page 92: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/92.jpg)
john + premshree* | sally
sally>
![Page 93: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/93.jpg)
push train(with PushBot)
![Page 95: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/95.jpg)
post-deploy
![Page 96: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/96.jpg)
post-deploy(gaining confidence)
![Page 97: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/97.jpg)
supergrep
![Page 99: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/99.jpg)
![Page 100: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/100.jpg)
![Page 101: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/101.jpg)
dashboards
![Page 102: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/102.jpg)
dashboards(deploy)
![Page 103: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/103.jpg)
![Page 104: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/104.jpg)
![Page 105: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/105.jpg)
push
![Page 106: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/106.jpg)
dashboards(app)
![Page 107: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/107.jpg)
![Page 108: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/108.jpg)
StatsD + Graphite
![Page 110: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/110.jpg)
summary
![Page 111: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/111.jpg)
pre-flight check
ready to push
ready to deploy
testing/verification
confidence
![Page 112: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/112.jpg)
pre-flight check
ready to push
ready to deploy
testing/verification
confidence
try/git hooks
push train/irc
deployinator
user testing
supergrep/dashboards
![Page 114: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/114.jpg)
poka-yoke
![Page 115: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/115.jpg)
culture
![Page 116: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/116.jpg)
![Page 117: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/117.jpg)
assume best intentions
![Page 118: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/118.jpg)
cultivate empathy
![Page 119: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/119.jpg)
open
![Page 120: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/120.jpg)
failure is an option
![Page 121: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/121.jpg)
failure is an option(but not our intention)
![Page 122: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/122.jpg)
failure is an option(we strongly want NOT to fail)
![Page 123: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/123.jpg)
failure is an opportunity
![Page 124: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/124.jpg)
post-mortems
![Page 125: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/125.jpg)
blameless post-mortems
![Page 126: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/126.jpg)
+ remediation
![Page 127: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/127.jpg)
morgue
![Page 128: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/128.jpg)
![Page 129: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/129.jpg)
![Page 131: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/131.jpg)
![Page 132: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/132.jpg)
mixer
![Page 134: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/134.jpg)
culture + tooling
deploy
fail ok
post-mortem
remediationstimulii
![Page 135: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/135.jpg)
![Page 136: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/136.jpg)
deploys
![Page 137: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/137.jpg)
30+ deploys
![Page 138: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/138.jpg)
30+ config deploys
![Page 140: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/140.jpg)
fin
![Page 141: Continuous Deployment at Scale, PHPConfAsia 2016](https://reader031.vdocuments.us/reader031/viewer/2022030205/58aad7631a28ab27178b4c3d/html5/thumbnails/141.jpg)
thank you!