Customer Journey Mapping for Bookings: Find Where Enquiries Drop Off

11 min read 2,100 words
Customer Journey Mapping for Booking: Identifying Where Enquiries Drop Off featured image

What Blue-Green Deployment Actually Means in Practice

Blue-green deployment is a release strategy that runs two identical production environments side by side. One environment, called blue, handles live traffic while the other, green, sits idle. When you want to deploy a new version of your software, you push it to the green environment first, test it thoroughly while blue continues serving your users, and then switch traffic over once everything looks healthy.

The appeal is straightforward: your users experience no downtime during a deployment. There is no maintenance window, no 503 errors, and no frustrated customers watching a loading spinner while you push code. For businesses where availability matters, this approach removes one of the most stressful moments in the release cycle.

This strategy sits alongside other deployment approaches like canary releases and rolling updates. Each has its place depending on your infrastructure, risk tolerance, and how quickly you need to roll back if something goes wrong. Blue-green deployment works particularly well when you have infrastructure that can run two full production environments and when your application state is relatively straightforward to manage.

How the Traffic Switch Actually Works

The core mechanism involves your load balancer or DNS configuration pointing user traffic to one environment or the other. When green is ready and tested, you update the routing so that all new requests go to green instead of blue. Existing connections on blue can drain naturally, or you can force them to complete within a timeout window.

The switch itself can happen in different ways depending on your setup. Some teams use DNS changes, pointing the production domain to the green environment's IP address. Others use load balancer rules that add or remove green from the pool of healthy servers. The method matters less than having a clear, tested procedure that your team can execute confidently when a deployment needs to happen.

One thing that catches people out is DNS TTL. If your DNS records have a long time-to-live value, the switch might take longer than expected because caches around the internet hold onto the old IP address. For this reason, many teams lower the TTL before a blue-green switch and restore it afterward. This is a small detail that can make the difference between a smooth transition and a confusing period where some users see the old version and others see the new one.

Testing on Green Before Any User Sees It

The real value of maintaining an idle environment is having a safe space to validate your deployment. Before any user traffic touches green, you run your checks. This might include automated tests, manual smoke tests, and checks against specific business logic that your automated suite does not cover.

Some teams configure their staging environment to actually be the green environment, which blurs the line between staging and production. Others keep green completely separate until deployment day and run their full test suite against it. Either approach works, as long as your testing is rigorous enough to catch the issues that matter to your users and your business.

A practical point worth considering: if your application integrates with external services like payment gateways, email providers, or third-party APIs, you need to decide whether green should hit the real services or sandbox environments during testing. Using real services for testing is more accurate but risks sending actual emails or processing test transactions. Using sandboxes is safer but can miss integration issues that only appear with live credentials.

Database Changes and the Hard Part of Blue-Green Deployments

Application code changes are usually the straightforward part of a blue-green deployment. Database changes are where things get complicated. If your deployment includes schema changes, data migrations, or updates to stored procedures, you need a strategy that works when two versions of your code might be running simultaneously.

The safest approach is to treat database changes as a separate concern from code deployments. Make your database changes backward-compatible first, deploy that version, and then deploy code changes that rely on the new schema. This way, if you need to roll back to blue, the old code can still work against the updated database because you have not removed anything the old code needs.

Common patterns include adding new columns without removing old ones, introducing new tables alongside existing ones, and avoiding direct column renames in favour of copy-and-sync approaches. These patterns add a little complexity to your deployment process but give you the flexibility to roll back safely when something unexpected happens.

If your application uses a database that supports it, you might also consider running separate database instances for blue and green environments. This eliminates the problem entirely but adds infrastructure cost and makes cross-environment data synchronisation your responsibility. It is a valid trade-off for high-stakes applications where absolute isolation matters.

Rolling Back Quickly When Something Goes Wrong

The flip side of switching to green is switching back to blue. If your monitoring detects problems after the switch, you need to reverse the traffic routing and get your users back onto the healthy version without delay.

A rollback should be a deliberate, practiced procedure, not an improvised scramble. Define what conditions trigger a rollback before you start. This might include specific error rate thresholds, unusual latency patterns, or alerts from your monitoring system. When those conditions are met, someone on your team should know exactly what to run to point traffic back at blue.

One consideration that surprises people: if your blue-green switch involved a DNS change, rolling back means updating DNS again, which means dealing with TTL caching on the way back. Some teams keep the load balancer approach for this reason, since updating a load balancer rule takes effect immediately without waiting for DNS propagation.

After a rollback, you have a green environment with a broken deployment and a blue environment back in production. Investigate what went wrong on green before your next deployment cycle. Fix the issue, test it thoroughly, and treat your next green deployment as a fresh attempt rather than a quick retry of what failed before.

Infrastructure Cost and When Two Environments Make Sense

Running two production environments doubles your infrastructure cost. This is not a trivial consideration, especially for smaller teams or businesses with tight budgets. The question is whether the benefits justify the expense for your situation.

For applications where availability directly affects revenue, the calculation is often straightforward. An ecommerce site that loses sales during downtime, a booking system that customers cannot access, or a service that users expect to be always available, these applications often benefit from the investment in blue-green infrastructure.

For internal tools, development environments, or applications where brief downtime during deployments is acceptable, simpler deployment approaches might serve you better. A rolling deployment that takes a few minutes of reduced capacity might be perfectly adequate. The goal is to match your deployment strategy to your actual requirements rather than adopting the most sophisticated approach by default.

Cloud environments have made blue-green deployments more accessible by allowing you to scale environments up and down as needed. Some teams run green at minimal capacity until deployment time, scale it up for testing and the switch, and then decommission the old blue environment after a settling period. This approach reduces the ongoing cost while still giving you the blue-green capability when you need it.

Blue-Green Deployment and Your Version Control Workflow

The deployment strategy you use connects naturally to how your team manages code changes. A consistent branching and merging workflow makes blue-green deployments smoother because you always know exactly what code is going into each environment. When your version control is chaotic, your deployments tend to be chaotic too.

If your team is working on a web development project and you want a structured approach to managing deployments, it is worth looking at how your branching strategy supports your release process. A clear workflow where features are merged into a release branch only when they are ready, tested, and approved, makes blue-green deployment more predictable and easier to manage.

Disaster Recovery Testing and Blue-Green as a Safety Net

Blue-green deployment is not just about zero-downtime releases. It is also a form of disaster recovery readiness. The fact that you have a tested, ready environment that can take over production traffic means you have a built-in fallback if your primary environment suffers an unexpected failure.

This connects to a broader point about testing your recovery procedures. Many teams have backup systems and failover configurations that nobody has ever tested in a real scenario. If your infrastructure includes a green environment that can take over, it makes sense to treat that capability as something worth testing regularly rather than assuming it will work when you need it.

A practical exercise is to simulate a failure scenario where you manually trigger a switch to green. Walk through the procedure, time how long it takes, identify bottlenecks, and document anything that went differently than expected. Doing this periodically means the procedure is familiar when it becomes urgent rather than being something you figure out under pressure.

Related practical reading

These related guides can help you connect this topic with the wider website, server, security, and support decisions around it.

Frequently Asked Questions

What is the difference between blue-green deployment and canary deployment?
Blue-green deployment switches all traffic from one environment to another at once. Canary deployment routes a small percentage of traffic to the new version while the majority stays on the old version. Canary deployments let you test with real users on a small scale before committing fully, while blue-green gives you a clean instant switch but requires you to be more confident in your pre-deployment testing.
Do I need special infrastructure to use blue-green deployment?
You need the ability to run two separate production environments and a way to route traffic between them. This could be two virtual machines, two container clusters, two cloud instances, or two bare-metal servers. You also need a load balancer or DNS configuration that supports switching. For many teams, cloud infrastructure makes this more accessible because you can provision environments on demand rather than maintaining idle hardware.
How do I handle database migrations in a blue-green deployment?
The safest approach is to make database changes backward-compatible and deploy them separately from code changes. Add new columns or tables without removing old ones that the current production code depends on. Once the database change is live and the old code still works against it, you can deploy code that uses the new schema.
When should I choose blue-green deployment over a simpler approach?
Blue-green deployment makes sense when downtime during deployments is costly or disruptive, when you have infrastructure that can support two environments, and when your application state is manageable with the approach. It is worth the overhead for production systems that users depend on. For internal tools, development projects, or applications where brief downtime is acceptable, a simpler deployment strategy like rolling updates may be more appropriate.
How long should I keep the old environment running after a successful switch?
Many teams keep the old environment running for a period after a successful switch, typically anywhere from a few hours to a few days, before decommissioning it. This gives you a quick fallback option if problems emerge that were not obvious during testing. The exact period depends on your risk tolerance, how quickly you can bring a new environment online if needed, and how confident you are in your testing process.
Can blue-green deployment help with disaster recovery?
Yes. Having a tested, production-ready environment that can take over traffic is a valuable disaster recovery capability beyond its use during normal deployments. The key is to treat it as a tested capability rather than assuming it will work when needed. Regularly walking through your switch and rollback procedures helps identify gaps before they become real problems.