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
680
Test Engineering - Life of a TE in BBM
kmklabs
0
97
BBM Wallet
kmklabs
0
520
Analytics
kmklabs
0
640
BBM Call Out 101
kmklabs
0
700
Introduction to GRPC
kmklabs
1
670
Other Decks in Technology
See All in Technology
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
1
340
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
380
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
110
Building a cloud native business on open source
lizrice
0
180
[VPoE Global Summit] サービスレベル目標による信頼性への投資最適化
satos
0
240
オブザーバビリティと育てた ID管理・認証認可基盤の歩み / The Journey of an ID Management, Authentication, and Authorization Platform Nurtured with Observability
kaminashi
1
670
AI機能プロジェクト炎上の 3つのしくじりと学び
nakawai
0
110
初めてのDatabricks Apps開発
taka_aki
1
390
AI時代、“平均値”ではいられない
uhyo
8
2.6k
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
400
Azure Well-Architected Framework入門
tomokusaba
1
130
オブザーバビリティが育むシステム理解と好奇心
maruloop
2
1.1k
Featured
See All Featured
Scaling GitHub
holman
463
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Language of Interfaces
destraynor
162
25k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
For a Future-Friendly Web
brad_frost
180
10k
Done Done
chrislema
185
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
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