Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How To Make Our Staging Deployment 3x Faster
Search
KMKLabs
February 17, 2016
Technology
0
2k
How To Make Our Staging Deployment 3x Faster
Bagaimana proses improvement di KMK, bagaimana tim devops meng-improve proses deployment ke staging
KMKLabs
February 17, 2016
Tweet
Share
More Decks by KMKLabs
See All by KMKLabs
Understanding (a bit of) G1 GC
kmklabs
0
120
WebSocket Authentication on VIDIO.COM
kmklabs
0
1.4k
AudioVisual Assets in Vidio App
kmklabs
0
1.5k
Daily in the life of a TE in Vidio
kmklabs
0
670
Test Engineering - Life of a TE in BBM
kmklabs
0
90
BBM Wallet
kmklabs
0
520
Analytics
kmklabs
0
640
BBM Call Out 101
kmklabs
0
690
Introduction to GRPC
kmklabs
1
660
Other Decks in Technology
See All in Technology
EKS Pod Identity における推移的な session tags
z63d
1
200
2025新卒研修・Webアプリケーションセキュリティ #弁護士ドットコム
bengo4com
3
10k
AIと描く、未来のBacklog 〜プロジェクト管理の次の10年を想像し、創造するセッション〜
hrm_o25
0
120
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
4
450
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.4k
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
2
20k
Mackerel in さくらのクラウド
cubicdaiya
1
410
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
6
580
夏休みWebアプリパフォーマンス相談室/web-app-performance-on-radio
hachi_eiji
1
290
AIが住民向けコンシェルジュに?Amazon Connectと生成AIで実現する自治体AIエージェント!
yuyeah
0
250
Backboneとしてのtimm2025
yu4u
3
1.2k
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
4
1.4k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Building Adaptive Systems
keathley
43
2.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
770
Measuring & Analyzing Core Web Vitals
bluesmoon
9
560
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building an army of robots
kneath
306
45k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Transcript
HOWTO MAKE OUR STAGING DEPLOYMENT 3x FASTER KMKLABS TechTalk
STAGING DEPLOYMENTS
STAGING DEPLOYMENTS Vidio-child-SCM-Poll VIDIO-TEST-PARENT Vidio Vidio-child-Tag-Rev staging_deploy_vidio
None
Hydra • 68% Ansible • Python Script, Bash Script, Doc,
Config
./hydra/canary/canary.py ENVIRONMENT
update_bastion list_migration_updates provision webserver deploy webserver update webserver canary_test tunnel_canary
elb disable_worker_cron_jobs autoscaling deploy workerserver update workerserver start_worker_cron_jobs canary_terminate
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver deploy webserver update webserver canary_test tunnel_canary elb disable_worker_cron_jobs autoscaling deploy workerserver update workerserver start_worker_cron_jobs canary_terminate
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary elb disable_worker_cron_jobs autoscaling deploy workerserver update workerserver start_worker_cron_jobs canary_terminate
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary test by QA elb test using real traffic/users disable_worker_cron_jobs autoscaling deploy workerserver update workerserver start_worker_cron_jobs canary_terminate
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary test by QA elb test using real traffic/users disable_worker_cron_jobs temporary remove cron jobs autoscaling create autoscaling group deploy workerserver install services & dependencies update workerserver update code start_worker_cron_jobs re-activate cron jobs canary_terminate terminate canary instance
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary test by QA elb test using real traffic/users disable_worker_cron_jobs temporary remove cron jobs autoscaling create autoscaling group deploy workerserver install services & dependencies update workerserver update code start_worker_cron_jobs re-activate cron jobs canary_terminate terminate canary instance
staging deployment automated using jenkins
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary test by QA elb test using real traffic/users disable_worker_cron_jobs temporary remove cron jobs autoscaling create autoscaling group deploy workerserver install services & dependencies update workerserver update code start_worker_cron_jobs re-activate cron jobs canary_terminate terminate canary instance Deployment using Canary script
update_bastion git pull, peru sync list_migration_updates list all db migration
provision webserver launch ec2 instance deploy webserver install services & dependencies update webserver update code, compile assets canary_test check port 80 ready or not tunnel_canary test by QA elb test using real traffic/users disable_worker_cron_jobs temporary remove cron jobs autoscaling create autoscaling group deploy workerserver install services & dependencies update workerserver update code start_worker_cron_jobs re-activate cron jobs canary_terminate terminate canary instance Staging Deployment using Jenkins
seconds minutes update_bastion 32.56 0.54 provision webserver 65.55 1.09 provision
workerserver 3.19 0.05 deploy webserver 370.92 6.18 deploy workerserver 167.82 2.80 update webserver 1045.03 17.42 update workerserver 70.99 1.18 autoscaling 163.62 2.73 sleep 600.00 10.00 canary_terminate 11.87 0.20 others 168.45 2.81 TOTAL 2700.00 45.00 Staging Deployment using Jenkins
#1 Provision using daily base image (5 Jan 2016)
seconds minutes second s minutes update_bastion 32.56 0.54 31.82 0.53
provision webserver 65.55 1.09 78.39 1.31 provision workerserver 3.19 0.05 2.80 0.05 deploy webserver 370.92 6.18 244.69 4.08 deploy workerserver 167.82 2.80 160.84 2.68 update webserver 1045.03 17.42 407.35 6.79 update workerserver 70.99 1.18 65.41 1.09 autoscaling 163.62 2.73 78.68 1.31 sleep 600.00 10.00 600.00 10.00 canary_terminate 11.87 0.20 11.91 0.20 others 168.45 2.81 178.11 2.97 TOTAL 2700.00 45.00 1860.00 31.00 Staging Deployment using Jenkins #1
#2 Remove “sleep” before canary_terminate (6 Jan 2016)
seconds minutes seconds minutes update_bastion 32.56 0.54 31.43 0.52 provision
webserver 65.55 1.09 82.70 1.38 provision workerserver 3.19 0.05 3.26 0.05 deploy webserver 370.92 6.18 243.48 4.06 deploy workerserver 167.82 2.80 180.27 3.00 update webserver 1045.03 17.42 392.55 6.54 update workerserver 70.99 1.18 70.87 1.18 autoscaling 163.62 2.73 142.41 2.37 sleep 600.00 10.00 0.00 0.00 canary_terminate 11.87 0.20 11.83 0.20 others 168.45 2.81 221.00 3.68 TOTAL 2700.00 45.00 1380.00 23.00 Staging Deployment using Jenkins #2
#3 Skip deploy webserver, deploy workerserver, if there
is no change in Hydra (11 Jan 2016)
seconds minutes seconds minutes update_bastion 32.56 0.54 31.08 0.52 provision
webserver 65.55 1.09 85.52 1.43 provision workerserver 3.19 0.05 2.95 0.05 deploy webserver 370.92 6.18 0.00 0.00 deploy workerserver 167.82 2.80 0.00 0.00 update webserver 1045.03 17.42 448.88 7.48 update workerserver 70.99 1.18 72.30 1.21 autoscaling 163.62 2.73 72.37 1.21 sleep 600.00 10.00 0.00 0.00 canary_terminate 11.87 0.20 11.81 0.20 others 168.45 2.81 235.09 3.92 TOTAL 2700.00 45.00 960.00 16.00 Staging Deployment using Jenkins #3
• Staging deployment vidio, before speedup process: 40 min ~
50 min • After speedup process: 12 min ~ 18 min • That’s 3x faster!
Ansible / Jenkins Code Demo
Any Question?
None