{"id":265,"date":"2025-10-25T05:55:00","date_gmt":"2025-10-25T05:55:00","guid":{"rendered":"https:\/\/harshad-sonawane.com\/blog\/?p=265"},"modified":"2025-09-09T13:18:31","modified_gmt":"2025-09-09T13:18:31","slug":"zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices","status":"publish","type":"post","link":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/","title":{"rendered":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<h3 data-start=\"125\" data-end=\"143\">Introduction<\/h3>\n<p data-start=\"144\" data-end=\"220\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">In today\u2019s fast\u2011moving digital world, <a href=\"https:\/\/harshad-sonawane.com\/blog\/reduce-cloud-costs-java-applications\/\">microservices<\/a> architectures demand frequent updates without interrupting service availability. Zero downtime deployments are essential for mission\u2011critical systems\u2014such as banking, e\u2011commerce, and high\u2011traffic consumer apps\u2014to ensure customer trust and operational resilience<\/span>.<\/p>\n<p data-start=\"222\" data-end=\"259\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">This article explores two established strategies\u2014<strong data-start=\"49\" data-end=\"63\">Blue\/Green<\/strong> and <strong data-start=\"68\" data-end=\"78\">Canary<\/strong> deployments\u2014along with technical considerations, pipeline integration, and best practices for implementing them effectively in microservices environments.<\/span><\/p>\n<hr data-start=\"261\" data-end=\"264\" \/>\n<h2 data-start=\"266\" data-end=\"290\">Blue\/Green Deployment<\/h2>\n<h3 data-start=\"292\" data-end=\"307\">What Is It?<\/h3>\n<p data-start=\"308\" data-end=\"384\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Blue\/Green deployment maintains two identical environments: one active (Blue) and one idle (Green). New releases are rolled out on Green. Once validated, production traffic switches from Blue to Green in an instant cutover<\/span><\/p>\n<h3 data-start=\"386\" data-end=\"398\">Benefits<\/h3>\n<ul data-start=\"399\" data-end=\"561\">\n<li data-start=\"399\" data-end=\"440\">\n<p data-start=\"401\" data-end=\"440\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"17\" data-is-only-node=\"\">Zero downtime<\/strong>: Traffic is switched instantly after validation.<\/span><\/p>\n<\/li>\n<li data-start=\"441\" data-end=\"521\">\n<p data-start=\"443\" data-end=\"521\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"20\" data-is-only-node=\"\">Instant rollback<\/strong>: If issues arise, you can revert to Blue immediately<\/span><\/p>\n<\/li>\n<li data-start=\"522\" data-end=\"561\">\n<p data-start=\"524\" data-end=\"561\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"27\" data-is-only-node=\"\">Full production testing<\/strong>: Enables production\u2011quality validation before directing live traffic.<\/span><\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"563\" data-end=\"577\">Trade\u2011offs<\/h3>\n<ul data-start=\"578\" data-end=\"748\">\n<li data-start=\"578\" data-end=\"662\">\n<p data-start=\"580\" data-end=\"662\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"17\" data-is-only-node=\"\">Resource cost<\/strong>: Running two full environments doubles infrastructure usage<\/span><\/p>\n<\/li>\n<li data-start=\"663\" data-end=\"706\">\n<p data-start=\"665\" data-end=\"706\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"23\" data-is-only-node=\"\">Database complexity<\/strong>: Schema updates must remain backward\u2011compatible across both environments.<\/span><\/p>\n<\/li>\n<li data-start=\"707\" data-end=\"748\">\n<p data-start=\"709\" data-end=\"748\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"28\" data-is-only-node=\"\">Configuration drift risk<\/strong>: Both environments must be kept in sync.<\/span><\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"750\" data-end=\"785\">Typical Implementation Workflow<\/h3>\n<ol data-start=\"786\" data-end=\"1049\">\n<li data-start=\"786\" data-end=\"871\">\n<p data-start=\"789\" data-end=\"871\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Provision Blue and Green environments behind a load balancer or proxy (e.g. <a href=\"https:\/\/harshad-sonawane.com\/blog\/monitoring-java-applications-prometheus-grafana-kubernetes\/\">Kubernetes<\/a> services, <a href=\"https:\/\/harshad-sonawane.com\/blog\/choosing-right-cloud-database-rds-dynamodb-aurora-documentdb\/\">AWS<\/a> ELB, Azure revisions)<\/span><\/p>\n<\/li>\n<li data-start=\"872\" data-end=\"916\">\n<p data-start=\"875\" data-end=\"916\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Deploy and validate the new version on Green.<\/span><\/p>\n<\/li>\n<li data-start=\"917\" data-end=\"961\">\n<p data-start=\"920\" data-end=\"961\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Perform automated health checks and optionally shadow live traffic for testing.<\/span><\/p>\n<\/li>\n<li data-start=\"962\" data-end=\"1006\">\n<p data-start=\"965\" data-end=\"1006\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Switch traffic via load balancer or DNS.<\/span><\/p>\n<\/li>\n<li data-start=\"1007\" data-end=\"1049\">\n<p data-start=\"1010\" data-end=\"1049\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Monitor, and if needed, rollback instantly by reversing the switch.<\/span><\/p>\n<\/li>\n<\/ol>\n<hr data-start=\"1051\" data-end=\"1054\" \/>\n<h2 data-start=\"1056\" data-end=\"1076\">Canary Deployment<\/h2>\n<h3 data-start=\"1078\" data-end=\"1093\">What Is It?<\/h3>\n<p data-start=\"1094\" data-end=\"1174\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">A Canary release deploys the new version to a small subset of users or servers first. Traffic is incrementally increased if no issues are detected; otherwise, the rollout is paused or rolled back<\/span>.<\/p>\n<h3 data-start=\"1176\" data-end=\"1188\">Benefits<\/h3>\n<ul data-start=\"1189\" data-end=\"1359\">\n<li data-start=\"1189\" data-end=\"1273\">\n<p data-start=\"1191\" data-end=\"1273\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"28\" data-is-only-node=\"\">Controlled risk exposure<\/strong>: Only a small \u201ccanary\u201d group encounters changes initially<\/span>.<\/p>\n<\/li>\n<li data-start=\"1274\" data-end=\"1317\">\n<p data-start=\"1276\" data-end=\"1317\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"17\" data-is-only-node=\"\">Live feedback<\/strong>: You can collect metrics and user behaviour data before full rollout.<\/span><\/p>\n<\/li>\n<li data-start=\"1318\" data-end=\"1359\">\n<p data-start=\"1320\" data-end=\"1359\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"27\" data-is-only-node=\"\">Lower resource overhead<\/strong>: No need for two full production environments.<\/span><\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1361\" data-end=\"1375\">Trade\u2011offs<\/h3>\n<ul data-start=\"1376\" data-end=\"1505\">\n<li data-start=\"1376\" data-end=\"1419\">\n<p data-start=\"1378\" data-end=\"1419\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"23\" data-is-only-node=\"\">Longer rollout time<\/strong>: Changes are introduced gradually.<\/span><\/p>\n<\/li>\n<li data-start=\"1420\" data-end=\"1463\">\n<p data-start=\"1422\" data-end=\"1463\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"26\" data-is-only-node=\"\">Operational complexity<\/strong>: Requires sophisticated routing, monitoring, and automation.<\/span><\/p>\n<\/li>\n<li data-start=\"1464\" data-end=\"1505\">\n<p data-start=\"1466\" data-end=\"1505\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"25\" data-is-only-node=\"\">Monitoring dependency<\/strong>: Requires robust observability to detect subtle issues early.<\/span><\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1507\" data-end=\"1527\">Typical Workflow<\/h3>\n<ol data-start=\"1528\" data-end=\"1791\">\n<li data-start=\"1528\" data-end=\"1572\">\n<p data-start=\"1531\" data-end=\"1572\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Deploy version V2 alongside V1 in the production cluster.<\/span><\/p>\n<\/li>\n<li data-start=\"1573\" data-end=\"1617\">\n<p data-start=\"1576\" data-end=\"1617\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Route a small percentage (e.g. 5\u202f%) of traffic to V2.<\/span><\/p>\n<\/li>\n<li data-start=\"1618\" data-end=\"1703\">\n<p data-start=\"1621\" data-end=\"1703\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Monitor key metrics\u2014response times, error rates, user behavior. Optionally use feature flags to activate features only for canaries<\/span><\/p>\n<\/li>\n<li data-start=\"1704\" data-end=\"1748\">\n<p data-start=\"1707\" data-end=\"1748\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Gradually increase traffic share (e.g. 25\u202f%, 50\u202f%, full).<\/span><\/p>\n<\/li>\n<li data-start=\"1749\" data-end=\"1791\">\n<p data-start=\"1752\" data-end=\"1791\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Full cutover if stable; otherwise rollback quickly by sending traffic back to V1.<\/span><\/p>\n<\/li>\n<\/ol>\n<hr data-start=\"1793\" data-end=\"1796\" \/>\n<h2 data-start=\"1798\" data-end=\"1841\">Blue\/Green vs. Canary: When to Use Which<\/h2>\n<div class=\"_tableContainer_16hzy_1\">\n<div class=\"_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table data-start=\"1843\" data-end=\"2772\" class=\"w-fit min-w-(--thread-content-width)\">\n<thead data-start=\"1843\" data-end=\"1942\">\n<tr data-start=\"1843\" data-end=\"1942\">\n<th data-start=\"1843\" data-end=\"1869\" data-col-size=\"sm\">Criteria<\/th>\n<th data-start=\"1869\" data-end=\"1904\" data-col-size=\"sm\">Blue\/Green<\/th>\n<th data-start=\"1904\" data-end=\"1942\" data-col-size=\"sm\">Canary<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2043\" data-end=\"2772\">\n<tr data-start=\"2043\" data-end=\"2169\">\n<td data-start=\"2043\" data-end=\"2069\" data-col-size=\"sm\"><strong data-start=\"2045\" data-end=\"2062\">Downtime risk<\/strong><\/td>\n<td data-col-size=\"sm\" data-start=\"2069\" data-end=\"2126\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Zero or near zero<\/span><\/td>\n<td data-col-size=\"sm\" data-start=\"2126\" data-end=\"2169\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Very low, but ramp\u2011up period longer<\/span><\/td>\n<\/tr>\n<tr data-start=\"2170\" data-end=\"2280\">\n<td data-start=\"2170\" data-end=\"2196\" data-col-size=\"sm\"><strong data-start=\"2172\" data-end=\"2190\">Rollback speed<\/strong><\/td>\n<td data-start=\"2196\" data-end=\"2231\" data-col-size=\"sm\">Instant cutover<\/td>\n<td data-start=\"2231\" data-end=\"2280\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">May require targeted rollback<\/span><\/td>\n<\/tr>\n<tr data-start=\"2281\" data-end=\"2399\">\n<td data-start=\"2281\" data-end=\"2307\" data-col-size=\"sm\"><strong data-start=\"2283\" data-end=\"2301\">Resource usage<\/strong><\/td>\n<td data-start=\"2307\" data-end=\"2356\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">High (full duplicate env)<\/span><\/td>\n<td data-start=\"2356\" data-end=\"2399\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Moderate (subset of servers\/users)<\/span><\/td>\n<\/tr>\n<tr data-start=\"2400\" data-end=\"2531\">\n<td data-start=\"2400\" data-end=\"2428\" data-col-size=\"sm\"><strong data-start=\"2402\" data-end=\"2427\">Feedback &amp; validation<\/strong><\/td>\n<td data-col-size=\"sm\" data-start=\"2428\" data-end=\"2476\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Limited real user exposure<\/span><\/td>\n<td data-col-size=\"sm\" data-start=\"2476\" data-end=\"2531\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Live feedback per stage<\/span><\/td>\n<\/tr>\n<tr data-start=\"2532\" data-end=\"2659\">\n<td data-start=\"2532\" data-end=\"2561\" data-col-size=\"sm\"><strong data-start=\"2534\" data-end=\"2560\">Operational complexity<\/strong><\/td>\n<td data-start=\"2561\" data-end=\"2611\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Simple conceptual model<\/span><\/td>\n<td data-col-size=\"sm\" data-start=\"2611\" data-end=\"2659\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Complex routing and monitoring<\/span><\/td>\n<\/tr>\n<tr data-start=\"2660\" data-end=\"2772\">\n<td data-start=\"2660\" data-end=\"2686\" data-col-size=\"sm\"><strong data-start=\"2662\" data-end=\"2678\">Suitable for<\/strong><\/td>\n<td data-start=\"2686\" data-end=\"2729\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Major releases, static services<\/span><\/td>\n<td data-start=\"2729\" data-end=\"2772\" data-col-size=\"sm\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">Feature releases, high\u2011risk changes<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sticky end-(--thread-content-margin) h-0 self-end select-none\">\n<div class=\"absolute end-0 flex items-end\"><span class=\"\" data-state=\"closed\"><button aria-label=\"Copy Table\" class=\"hover:bg-token-bg-tertiary text-token-text-secondary my-1 rounded-sm p-1 transition-opacity group-[:not(:hover):not(:focus-within)]:pointer-events-none group-[:not(:hover):not(:focus-within)]:opacity-0\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"icon\"><path d=\"M12.668 10.667C12.668 9.95614 12.668 9.46258 12.6367 9.0791C12.6137 8.79732 12.5758 8.60761 12.5244 8.46387L12.4688 8.33399C12.3148 8.03193 12.0803 7.77885 11.793 7.60254L11.666 7.53125C11.508 7.45087 11.2963 7.39395 10.9209 7.36328C10.5374 7.33197 10.0439 7.33203 9.33301 7.33203H6.5C5.78896 7.33203 5.29563 7.33195 4.91211 7.36328C4.63016 7.38632 4.44065 7.42413 4.29688 7.47559L4.16699 7.53125C3.86488 7.68518 3.61186 7.9196 3.43555 8.20703L3.36524 8.33399C3.28478 8.49198 3.22795 8.70352 3.19727 9.0791C3.16595 9.46259 3.16504 9.95611 3.16504 10.667V13.5C3.16504 14.211 3.16593 14.7044 3.19727 15.0879C3.22797 15.4636 3.28473 15.675 3.36524 15.833L3.43555 15.959C3.61186 16.2466 3.86474 16.4807 4.16699 16.6348L4.29688 16.6914C4.44063 16.7428 4.63025 16.7797 4.91211 16.8027C5.29563 16.8341 5.78896 16.835 6.5 16.835H9.33301C10.0439 16.835 10.5374 16.8341 10.9209 16.8027C11.2965 16.772 11.508 16.7152 11.666 16.6348L11.793 16.5645C12.0804 16.3881 12.3148 16.1351 12.4688 15.833L12.5244 15.7031C12.5759 15.5594 12.6137 15.3698 12.6367 15.0879C12.6681 14.7044 12.668 14.211 12.668 13.5V10.667ZM13.998 12.665C14.4528 12.6634 14.8011 12.6602 15.0879 12.6367C15.4635 12.606 15.675 12.5492 15.833 12.4688L15.959 12.3975C16.2466 12.2211 16.4808 11.9682 16.6348 11.666L16.6914 11.5361C16.7428 11.3924 16.7797 11.2026 16.8027 10.9209C16.8341 10.5374 16.835 10.0439 16.835 9.33301V6.5C16.835 5.78896 16.8341 5.29563 16.8027 4.91211C16.7797 4.63025 16.7428 4.44063 16.6914 4.29688L16.6348 4.16699C16.4807 3.86474 16.2466 3.61186 15.959 3.43555L15.833 3.36524C15.675 3.28473 15.4636 3.22797 15.0879 3.19727C14.7044 3.16593 14.211 3.16504 13.5 3.16504H10.667C9.9561 3.16504 9.46259 3.16595 9.0791 3.19727C8.79739 3.22028 8.6076 3.2572 8.46387 3.30859L8.33399 3.36524C8.03176 3.51923 7.77886 3.75343 7.60254 4.04102L7.53125 4.16699C7.4508 4.32498 7.39397 4.53655 7.36328 4.91211C7.33985 5.19893 7.33562 5.54719 7.33399 6.00195H9.33301C10.022 6.00195 10.5791 6.00131 11.0293 6.03809C11.4873 6.07551 11.8937 6.15471 12.2705 6.34668L12.4883 6.46875C12.984 6.7728 13.3878 7.20854 13.6533 7.72949L13.7197 7.87207C13.8642 8.20859 13.9292 8.56974 13.9619 8.9707C13.9987 9.42092 13.998 9.97799 13.998 10.667V12.665ZM18.165 9.33301C18.165 10.022 18.1657 10.5791 18.1289 11.0293C18.0961 11.4302 18.0311 11.7914 17.8867 12.1279L17.8203 12.2705C17.5549 12.7914 17.1509 13.2272 16.6553 13.5313L16.4365 13.6533C16.0599 13.8452 15.6541 13.9245 15.1963 13.9619C14.8593 13.9895 14.4624 13.9935 13.9951 13.9951C13.9935 14.4624 13.9895 14.8593 13.9619 15.1963C13.9292 15.597 13.864 15.9576 13.7197 16.2939L13.6533 16.4365C13.3878 16.9576 12.9841 17.3941 12.4883 17.6982L12.2705 17.8203C11.8937 18.0123 11.4873 18.0915 11.0293 18.1289C10.5791 18.1657 10.022 18.165 9.33301 18.165H6.5C5.81091 18.165 5.25395 18.1657 4.80371 18.1289C4.40306 18.0962 4.04235 18.031 3.70606 17.8867L3.56348 17.8203C3.04244 17.5548 2.60585 17.151 2.30176 16.6553L2.17969 16.4365C1.98788 16.0599 1.90851 15.6541 1.87109 15.1963C1.83431 14.746 1.83496 14.1891 1.83496 13.5V10.667C1.83496 9.978 1.83432 9.42091 1.87109 8.9707C1.90851 8.5127 1.98772 8.10625 2.17969 7.72949L2.30176 7.51172C2.60586 7.0159 3.04236 6.6122 3.56348 6.34668L3.70606 6.28027C4.04237 6.136 4.40303 6.07083 4.80371 6.03809C5.14051 6.01057 5.53708 6.00551 6.00391 6.00391C6.00551 5.53708 6.01057 5.14051 6.03809 4.80371C6.0755 4.34588 6.15483 3.94012 6.34668 3.56348L6.46875 3.34473C6.77282 2.84912 7.20856 2.44514 7.72949 2.17969L7.87207 2.11328C8.20855 1.96886 8.56979 1.90385 8.9707 1.87109C9.42091 1.83432 9.978 1.83496 10.667 1.83496H13.5C14.1891 1.83496 14.746 1.83431 15.1963 1.87109C15.6541 1.90851 16.0599 1.98788 16.4365 2.17969L16.6553 2.30176C17.151 2.60585 17.5548 3.04244 17.8203 3.56348L17.8867 3.70606C18.031 4.04235 18.0962 4.40306 18.1289 4.80371C18.1657 5.25395 18.165 5.81091 18.165 6.5V9.33301Z\"><\/path><\/svg><\/button><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2774\" data-end=\"2854\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\">You may choose to <strong data-start=\"18\" data-end=\"40\">combine strategies<\/strong>\u2014for instance, use a blue\/green setup internally and employ canary logic on a service\u2011by\u2011service basis within the Green environment<\/span><\/p>\n<hr data-start=\"2856\" data-end=\"2859\" \/>\n<h2 data-start=\"2861\" data-end=\"2910\">Best Practices (Applicable to Both Strategies)<\/h2>\n<ul data-start=\"2912\" data-end=\"3411\">\n<li data-start=\"2912\" data-end=\"2996\">\n<p data-start=\"2914\" data-end=\"2996\"><span class=\"relative -mx-px my-[-0.2rem] rounded px-px py-[0.2rem] transition-colors duration-100 ease-in-out\"><strong data-start=\"0\" data-end=\"20\" data-is-only-node=\"\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/technical-debt-assessment-legacy-java-systems\/\">CI\/CD<\/a> automation<\/strong>: Automated pipelines for build, test, deploy, and routing changes reduce human error<\/span> <span class=\"\" data-state=\"closed\"><span class=\"ms-1 inline-flex max-w-full items-center relative top-[-0.094rem] animate-[show_150ms_ease-in]\"><\/span><\/span><\/p>\n<\/li>\n<li data-start=\"2997\" data-end=\"3113\">\n<p data-start=\"2999\" data-end=\"3113\"><strong data-start=\"2999\" data-end=\"3021\">Stateless services<\/strong>: Ensure services are stateless, and databases support backward\u2011compatible schema changes.<\/p>\n<\/li>\n<li data-start=\"3114\" data-end=\"3241\">\n<p data-start=\"3116\" data-end=\"3241\"><strong data-start=\"3116\" data-end=\"3146\">Health checks &amp; monitoring<\/strong>: Automate readiness and liveness probes; monitor performance, user metrics, logs and errors.<\/p>\n<\/li>\n<li data-start=\"3242\" data-end=\"3344\">\n<p data-start=\"3244\" data-end=\"3344\"><strong data-start=\"3244\" data-end=\"3261\">Feature flags<\/strong>: Use feature toggles to gradually activate features and enable dynamic rollback.<\/p>\n<\/li>\n<li data-start=\"3345\" data-end=\"3411\">\n<p data-start=\"3347\" data-end=\"3411\"><strong data-start=\"3347\" data-end=\"3368\">Rollback strategy<\/strong>: Test scripted rollback paths regularly.<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"3413\" data-end=\"3416\" \/>\n<h3 data-start=\"3418\" data-end=\"3432\">Conclusion<\/h3>\n<p data-start=\"3434\" data-end=\"3868\">Both <strong data-start=\"3439\" data-end=\"3453\">Blue\/Green<\/strong> and <strong data-start=\"3458\" data-end=\"3468\">Canary<\/strong> strategies are proven ways to deliver zero\u2011downtime deployments in microservices. Blue\/Green offers simplicity and instant rollback, while Canary gives granular control and feedback\u2014perfect for iterative feature rollouts. Choose based on your infrastructure capacity, risk profile, and deployment complexity. Combining both often yields the best balance of reliability, control, and user experience.<\/p>\n<p data-start=\"3434\" data-end=\"3868\"><\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<a class=\"wp-block-read-more\" href=\"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/\" target=\"_self\">Read more<span class=\"screen-reader-text\">: Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies<\/span><\/a>\n\n\n<div class=\"wp-block-query is-layout-flow wp-block-query-is-layout-flow\"><ul class=\"wp-block-post-template is-layout-flow wp-block-post-template-is-layout-flow\"><li class=\"wp-block-post post-470 post type-post status-publish format-standard has-post-thumbnail hentry category-java-spring-boot-aws-microservices tag-backend-optimization tag-g1gc-tuning tag-gc-tuning tag-java-memory-optimization tag-java-performance tag-jvm-performance tag-jvm-tuning tag-low-latency-java tag-shenandoah-gc tag-zgc\">\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/jvm-tuning-low-latency-applications\/\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"How to Tune JVM for Low-Latency Applications\" style=\"object-fit:cover;\" srcset=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM.png 1536w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM-300x200.png 300w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM-1024x683.png 1024w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM-768x512.png 768w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-Apr-7-2026-03_39_22-PM-360x240.png 360w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/jvm-tuning-low-latency-applications\/\" target=\"_self\" >How to Tune JVM for Low-Latency Applications<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-457 post type-post status-publish format-standard has-post-thumbnail hentry category-java-spring-boot-aws-microservices tag-backend-development tag-cloud-native tag-distributed-systems tag-go-microservices tag-java-microservices tag-java-vs-go tag-microservices-architecture\">\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/java-microservices-vs-go-microservices-when-to-choose-what\/\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_pi1cdzpi1cdzpi1c.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Java Microservices vs Go Microservices: When to Choose What?\" style=\"object-fit:cover;\" srcset=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_pi1cdzpi1cdzpi1c.png 1024w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_pi1cdzpi1cdzpi1c-300x300.png 300w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_pi1cdzpi1cdzpi1c-150x150.png 150w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/04\/Gemini_Generated_Image_pi1cdzpi1cdzpi1c-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/java-microservices-vs-go-microservices-when-to-choose-what\/\" target=\"_self\" >Java Microservices vs Go Microservices: When to Choose What?<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><li class=\"wp-block-post post-449 post type-post status-publish format-standard has-post-thumbnail hentry category-java-spring-boot-aws-microservices tag-event-driven-architecture-2 tag-java-architecture tag-java-backend tag-kafka tag-netty tag-reactive-programming tag-real-time-java tag-webflux\">\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/building-real-time-applications-java-architecture-frameworks\/\" target=\"_self\"  ><img loading=\"lazy\" decoding=\"async\" width=\"1408\" height=\"736\" src=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_f4qhdcf4qhdcf4qh.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Building Real-Time Applications in Java: Architecture &amp; Framework Choices\" style=\"object-fit:cover;\" srcset=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_f4qhdcf4qhdcf4qh.png 1408w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_f4qhdcf4qhdcf4qh-300x157.png 300w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_f4qhdcf4qhdcf4qh-1024x535.png 1024w, https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_f4qhdcf4qhdcf4qh-768x401.png 768w\" sizes=\"auto, (max-width: 1408px) 100vw, 1408px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\"><h2 class=\"wp-block-post-title\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/building-real-time-applications-java-architecture-frameworks\/\" target=\"_self\" >Building Real-Time Applications in Java: Architecture &amp; Framework Choices<\/a><\/h2><\/div>\n<\/div>\n\n<\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In today\u2019s fast\u2011moving digital world, microservices architectures demand frequent updates without interrupting service availability. Zero downtime deployments are essential for mission\u2011critical systems\u2014such as banking, e\u2011commerce, and high\u2011traffic consumer apps\u2014to ensure customer trust and operational resilience. This article explores two established strategies\u2014Blue\/Green and Canary deployments\u2014along with technical considerations, pipeline integration, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":"","jetpack_publicize_message":"\ud83d\ude80 New Blog: Zero Downtime Deployments in Microservices: Blue\/Green vs Canary \ud83d\ude80\n\nIn this article, I explore how to ship updates without disrupting live users using two proven strategies: Blue\/Green and Canary Deployments. Learn when to use each method, technical trade\u2011offs, CI\/CD integrations, rollback safety nets, and best practices for microservices environments. Ideal for DevOps engineers and architecture leads aiming for seamless releases with minimal risk. Let\u2019s build systems that deliver updates confidently and reliably. #DevOps #Microservices #CI_CD #ZeroDowntime","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[113],"tags":[253,255,14,256,8,9,254],"class_list":["post-265","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-spring-boot-aws-microservices","tag-blue-green-deployment","tag-canary-release","tag-ci-cd","tag-continuous-delivery","tag-devops","tag-microservices","tag-zero-downtime-deployment"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;<\/title>\n<meta name=\"description\" content=\"Learn how to implement zero downtime deployments in microservices using Blue\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/harshad-sonawane.com\/blog\/zero\u2011downtime\u2011deployments\u2011microservices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement zero downtime deployments in microservices using Blue\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/harshad-sonawane.com\/blog\/zero\u2011downtime\u2011deployments\u2011microservices\/\" \/>\n<meta property=\"og:site_name\" content=\"&lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-25T05:55:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"HS\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"HS\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/\"},\"author\":{\"name\":\"HS\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"headline\":\"Zero Downtime Deployments in Microservices: Blue\\\/Green and Canary Strategies\",\"datePublished\":\"2025-10-25T05:55:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/\"},\"wordCount\":634,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"image\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png\",\"keywords\":[\"blue-green deployment\",\"canary release\",\"CI\\\/CD\",\"continuous delivery\",\"DevOps\",\"Microservices\",\"zero downtime deployment\"],\"articleSection\":[\"Java, Spring Boot, AWS, Microservices\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/\",\"name\":\"Zero Downtime Deployments in Microservices: Blue\\\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\\\/&gt;\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png\",\"datePublished\":\"2025-10-25T05:55:00+00:00\",\"description\":\"Learn how to implement zero downtime deployments in microservices using Blue\\\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#primaryimage\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png\",\"contentUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png\",\"width\":1024,\"height\":1024,\"caption\":\"Zero Downtime Deployments in Microservices: Blue\\\/Green and Canary Strategies\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zero Downtime Deployments in Microservices: Blue\\\/Green and Canary Strategies\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/\",\"name\":\"Harshad's Dev Diary\",\"description\":\"HARSHAD&#039;s Dev Diary\",\"publisher\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\",\"name\":\"HS\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"width\":400,\"height\":400,\"caption\":\"HS\"},\"logo\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\"],\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","description":"Learn how to implement zero downtime deployments in microservices using Blue\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/harshad-sonawane.com\/blog\/zero\u2011downtime\u2011deployments\u2011microservices\/","og_locale":"en_US","og_type":"article","og_title":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","og_description":"Learn how to implement zero downtime deployments in microservices using Blue\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.","og_url":"https:\/\/harshad-sonawane.com\/blog\/zero\u2011downtime\u2011deployments\u2011microservices\/","og_site_name":"&lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","article_published_time":"2025-10-25T05:55:00+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png","type":"image\/png"}],"author":"HS","twitter_card":"summary_large_image","twitter_misc":{"Written by":"HS","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#article","isPartOf":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/"},"author":{"name":"HS","@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"headline":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies","datePublished":"2025-10-25T05:55:00+00:00","mainEntityOfPage":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/"},"wordCount":634,"commentCount":0,"publisher":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"image":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png","keywords":["blue-green deployment","canary release","CI\/CD","continuous delivery","DevOps","Microservices","zero downtime deployment"],"articleSection":["Java, Spring Boot, AWS, Microservices"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/","url":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/","name":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","isPartOf":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#primaryimage"},"image":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#primaryimage"},"thumbnailUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png","datePublished":"2025-10-25T05:55:00+00:00","description":"Learn how to implement zero downtime deployments in microservices using Blue\/Green and Canary strategies. Understand technical workflows, trade\u2011offs, and best practices.","breadcrumb":{"@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#primaryimage","url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png","contentUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-Aug-5-2025-11_39_24-AM.png","width":1024,"height":1024,"caption":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies"},{"@type":"BreadcrumbList","@id":"https:\/\/harshad-sonawane.com\/blog\/zero%e2%80%91downtime%e2%80%91deployments%e2%80%91microservices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/harshad-sonawane.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Zero Downtime Deployments in Microservices: Blue\/Green and Canary Strategies"}]},{"@type":"WebSite","@id":"https:\/\/harshad-sonawane.com\/blog\/#website","url":"https:\/\/harshad-sonawane.com\/blog\/","name":"Harshad's Dev Diary","description":"HARSHAD&#039;s Dev Diary","publisher":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/harshad-sonawane.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e","name":"HS","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","contentUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","width":400,"height":400,"caption":"HS"},"logo":{"@id":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg"},"sameAs":["https:\/\/harshad-sonawane.com\/blog"],"url":"https:\/\/harshad-sonawane.com\/blog\/author\/admin\/"}]}},"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/comments?post=265"}],"version-history":[{"count":3,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":274,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/265\/revisions\/274"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/media\/267"}],"wp:attachment":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/media?parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/categories?post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/tags?post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}