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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
130
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
110
BBM Wallet
kmklabs
0
540
Analytics
kmklabs
0
660
BBM Call Out 101
kmklabs
0
720
Introduction to GRPC
kmklabs
1
690
Other Decks in Technology
See All in Technology
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
120
「AIエージェントで変わる開発プロセス―レビューボトルネックからの脱却」
lycorptech_jp
PRO
0
120
FastMCP OAuth Proxy with Cognito
hironobuiga
3
200
QA組織のAI戦略とAIテスト設計システムAITASの実践
sansantech
PRO
1
140
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
440
Laravelで学ぶOAuthとOpenID Connectの基礎と実装
kyoshidaxx
4
1.8k
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
140
非同期・イベント駆動処理の分散トレーシングの繋げ方
ichikawaken
1
110
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
120
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
190
Phase03_ドキュメント管理
overflowinc
0
2.5k
AIエージェント×GitHubで実現するQAナレッジの資産化と業務活用 / QA Knowledge as Assets with AI Agents & GitHub
tknw_hitsuji
0
230
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
490
Making Projects Easy
brettharned
120
6.6k
How to Talk to Developers About Accessibility
jct
2
160
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Code Review Best Practice
trishagee
74
20k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
100
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
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