Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Deploy vs Release: Why Downtime Happens and a Map of Deployment Strategies
A deploy installs code in an environment, a release is when users see the new behavior; teams that can separate the two split the risk. In a single-container recreate deploy behind Nginx, 12 requests failed within 2.5 seconds. The five sources of downtime, a map of recreate, rolling, blue-green, canary, shadow, A/B and feature flags, a decision table, and the risk = blast radius × detection time calculation.
Blue-Green Deployment: Two Environments with Nginx, App Service Slots and Instant Switchback
Blue-green installs the new version on the idle environment, runs a smoke test and switches traffic with a single reload; going back is the same reload. A preview port in Nginx, a smoke test with a version check, an error-free probe through switch and switchback, a 4 s request finishing on blue during the reload; App Service slot swap warm-up and slot setting pitfalls, a Service selector switch in Kubernetes, and the limit a shared database imposes.
End-to-End Zero Downtime: Deploying Bookstore with Blue-Green and Canary via GitHub Actions
All pieces of the series in a single GitHub Actions workflow: build the image once, a migration gate and an expand migration bundle, deploy to the idle color, a smoke test through the preview, 10% and 50% canary gates, a full switch and a manual rollback job. Run locally with act, the pipeline failed four times before succeeding: a gate scanning Down(), act's artifact v7 incompatibility, a preview pointing at the old color, and too little canary traffic.