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
Getting Into the Zero Downtime Deployment World
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tugberk Ugurlu
September 16, 2016
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Getting Into the Zero Downtime Deployment World
Dev Day 2016 (Krakow, Poland)
Tugberk Ugurlu
September 16, 2016
More Decks by Tugberk Ugurlu
See All by Tugberk Ugurlu
Redis Cluster for Write Intensive Workloads
tourismgeek
1
21k
Designing Towards Event Sourcing
tourismgeek
1
20k
Essentials for Building and Leading Highly Effective Development Teams
tourismgeek
0
610
Let the Uncertainty be Your Friend: Finding Your Path in a Wiggly Road
tourismgeek
0
680
Benefits of Managed Kubernetes in Azure (Azure Container Service, AKS)
tourismgeek
0
600
Levelling up to Become a Technical Lead
tourismgeek
2
28k
Benefits of Managed Kubernetes in Azure (Azure Container Service, AKS)
tourismgeek
0
280
GraphQL
tourismgeek
0
270
I Hated React too Soon, Reconciled with It Quickly Afterwards
tourismgeek
0
110
Other Decks in Programming
See All in Programming
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
1
170
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
5
760
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
210
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
570
dRuby over BLE
makicamel
2
400
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
330
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
360
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
630
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Tell your own story through comics
letsgokoyo
1
980
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
How to train your dragon (web standard)
notwaldorf
97
6.7k
The SEO identity crisis: Don't let AI make you average
varn
0
510
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Designing for Performance
lara
611
70k
Transcript
Getting Into the Zero Downtime Deployment World Tugberk Ugurlu Redgate
Software @tourismgeek tugberkugurlu.com #ABBDevDay https://flic.kr/p/fNTDM1
#ABBDevDay https://flic.kr/p/HLRTPW Software Dev @ Redgate Human in Cambridge, UK
MVP @ Microsoft
@tourismgeek tugberkugurlu.com github.com/tugberkugurlu stackoverflow.com/users/463785/tugberk
What is This? #ABBDevDay https://flic.kr/p/cdvAaj
#ABBDevDay Example HTTP APIs v1 Example Android iPhone Example Android
Client Example Web Client Example HTTP APIs v1.1
Should I Care? #ABBDevDay https://flic.kr/p/e7oMGm
#ABBDevDay https://flic.kr/p/49FHd3
#ABBDevDay https://flic.kr/p/CTxCx
https://twitter.com/tourismgeek/status/580270772402393088 #ABBDevDay
Continuous Delivery #ABBDevDay https://flic.kr/p/bzG7ds
#ABBDevDay http://bit.ly/2cstlDK
#ABBDevDay http://zleek.com
LB zleek-0 zleek-1 zleek-n mongodb neo4j elasticsearch rabbitmq recipe-generation-worker-0 recipe-sync-worker-0
food-sync-worker-0 store-sync-worker-0 recipe-generation-worker-1 recipe-generation-worker-n recipe-sync-worker-n recipe-sync-worker-0 #ABBDevDay
#ABBDevDay https://gist.github.com/revett/99d8a5143c0bfeddfc92 Our Target
Our Scope #ABBDevDay
Scope of the Talk #ABBDevDay HTTP Services Web Sites
#ABBDevDay https://flic.kr/p/mRRFdH The Path and Guidance
Write Down the Deployment Strategy #ABBDevDay https://flic.kr/p/pd4X4A
#ABBDevDay
Script out the Deployment Strategy https://flic.kr/p/79EVn6
#ABBDevDay
Release Management #ABBDevDay https://flic.kr/p/fCbQWb
#ABBDevDay Octopus Deploy http://bit.ly/2d2ivzU
#ABBDevDay Docker Cloud http://bit.ly/2d2ivzU #ABBDevDay
True Staging Environment #ABBDevDay
example-api-v0-6786234 example-api- process example-api-v0-6327638 example-api- process Router v0.example.com
Blue-green Deployment http://martinfowler.com/bliki/BlueGreenDeployment.html #ABBDevDay
Router v0.example.com #ABBDevDay example-api-v0-6327638 example-api- process example-api-v0-6786234 example-api- process
Drain Requests #ABBDevDay https://flic.kr/p/79A7Db
Router v0.example.com #ABBDevDay example-api-v0-6327638 example-api- process example-api-v0-6786234 example-api- process
Router v0.example.com #ABBDevDay example-api-v0-6327638 example-api- process example-api-v0-6786234 example-api- process
SemVer Your Software http://www.tugberkugurlu.com/archive/versioning-software-builds-based-on-git-tags-and-semantic-versioning-semver #ABBDevDay
SemVer (semver.org) #ABBDevDay Patch No user facing changes Major Introducing
incompatible changes Minor Add functionality in a backwards- compatible manner 2.4.6
SemVer as Way of Application Versioning • Support 2 Major
versions of the HTTP Service, not 1, not 3. • Define a support policy for support lifetime for versions #ABBDevDay
Minor-Patch Releases • No breaking changes #ABBDevDay
example-api-v0-6327638 example-api-v0-7814219 example-api-v0-9528392 LB v0.example.com example-api- process example-api- process example-api-
process example-api-v0-6786234 example-api-v0-3266280 example-api-v0-8429842 example-api- process example-api- process example-api- process
DEMO https://github.com/tugberkugurlu/AspNetCoreSamples/tree/abbdevday2016/haproxy-zero-downtime-sample #ABBDevDay
HAProxy Config Reload http://engineeringblog.yelp.com/2015/04/true-zero-downtime-haproxy-reloads.html #ABBDevDay
Internal LB-1 LB-1 Internal LB-2 server1 server2 server3 server4 server5
server6 server7 server8 server9 server10 client client client client client client #ABBDevDay
Multiple Load Balancer Nodes http://robert.penz.name/386/howto-setup-a-haproxy-as-fault-tolerant-high-available-load-balancer-for-multiple-caching-web-proxies-on-rhelcentossl/ #ABBDevDay
#ABBDevDay http://robert.penz.name/386/howto-setup-a-haproxy-as-fault-tolerant-high-available-load-balancer-for-multiple-caching-web-proxies-on-rhelcentossl/
Major Releases • Breaking Changes • First Major Release •
Non-first Major Releases #ABBDevDay
example-api-v0-6327638 example-api-v0-7814219 example-api-v0-9528392 LB v0.example.com example Products example Products example
Products example-api-v1-2276168 example-api-v1-5677802 example Products example Products LB v1.example.com example-api-v1-7182721 example Products
Prefer Fast-forward Database Changes #ABBDevDay https://flic.kr/p/54a6xY
#ABBDevDay v1 v2 Id Make Model Colour 1 Renault Clio
Red 2 Mercedes GLA Black 3 Volkswagen Polo White 4 Toyota Yaris Yellow Id Make Model Colour 1 Renault Clio Red 2 Mercedes GLA Black 3 Volkswagen Polo White 4 Toyota Yaris Yellow
Do Not Override Client Side Assets #ABBDevDay
#ABBDevDay v1 v1.1
#ABBDevDay v1 v1.1
Be Aware of the Context #ABBDevDay
Be Aware of the Context • Cookies • Sessions •
Authentication Tokens #ABBDevDay
Sticky Sessions http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/ #ABBDevDay
Helpful Tools • Git (https://git-scm.com) • Travis CI (https://travis-ci.org) •
Octopus Deploy (https://octopus.com) • HAProxy (http://haproxy.org) • node-semver CLI (http://bit.ly/1PO6hvR) • Docker (https://docker.com) • Docker Cloud (a.k.a. Tutum, http://bit.ly/1RYYtl2) • SQL Server Data Tools (SSDT, http://bit.ly/1P7qETh) • DLM Automation Tools from Redgate (http://bit.ly/1VQ2rDm) #ABBDevDay
@tourismgeek github.com/tugberkugurlu linkedin.com/in/tugberk https://flic.kr/p/edfM1R