Bird
Raised Fist0
Microservicessystem_design~12 mins

Blue-green deployment in Microservices - Architecture Diagram

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
System Overview - Blue-green deployment

Blue-green deployment is a technique to release new versions of software with minimal downtime and risk. It uses two identical environments (blue and green) where one serves live traffic while the other is updated. After testing the new version in the idle environment, traffic switches to it instantly.

Architecture Diagram
User
  |
  v
Load Balancer
  |
  +-------------------+
  |                   |
Blue Environment   Green Environment
(Service v1)       (Service v2)
  |                   |
Database (shared)
  |
Cache
Components
User
client
Sends requests to the system
Load Balancer
load_balancer
Routes user requests to either blue or green environment
Blue Environment
service
Current live version of the service handling requests
Green Environment
service
New version of the service deployed and tested before switching
Database
database
Stores persistent data shared by both environments
Cache
cache
Speeds up data access for both environments
Request Flow - 11 Hops
UserLoad Balancer
Load BalancerBlue Environment
Blue EnvironmentCache
CacheBlue Environment
Blue EnvironmentDatabase
DatabaseBlue Environment
Blue EnvironmentCache
Blue EnvironmentLoad Balancer
Load BalancerUser
DevOpsGreen Environment
Load BalancerGreen Environment
Failure Scenario
Component Fails:Load Balancer
Impact:All user requests fail as traffic cannot be routed to any environment
Mitigation:Use multiple load balancers with failover and health checks to avoid single point of failure
Architecture Quiz - 3 Questions
Test your understanding
Which component directs user traffic to either the blue or green environment?
ACache
BLoad Balancer
CDatabase
DUser
Design Principle
Blue-green deployment uses two identical environments to reduce downtime and risk during software updates. Traffic switches instantly between environments via a load balancer, allowing safe testing and rollback. Shared database and cache ensure data consistency across versions.

Practice

(1/5)
1. What is the main purpose of blue-green deployment in microservices?
easy
A. To improve database query speed
B. To increase the number of microservices in the system
C. To reduce downtime by switching traffic between two identical environments
D. To simplify the codebase by merging services

Solution

  1. Step 1: Understand blue-green deployment concept

    Blue-green deployment uses two identical environments to avoid downtime during updates.
  2. Step 2: Identify the main goal

    The main goal is to switch traffic between environments to keep the system available without interruption.
  3. Final Answer:

    To reduce downtime by switching traffic between two identical environments -> Option C
  4. Quick Check:

    Blue-green deployment = reduce downtime [OK]
Hint: Blue-green means two environments for zero downtime [OK]
Common Mistakes:
  • Confusing deployment with scaling
  • Thinking it improves database speed
  • Assuming it merges microservices
2. Which of the following is the correct sequence in a blue-green deployment?
easy
A. Deploy to green, test, switch traffic from blue to green
B. Deploy to blue, switch traffic, then test on green
C. Switch traffic first, then deploy to blue
D. Deploy to green, switch traffic, then test on blue

Solution

  1. Step 1: Recall deployment steps

    In blue-green deployment, new code is deployed to the inactive environment (green).
  2. Step 2: Test and switch traffic

    After testing green, traffic is switched from blue (active) to green (new).
  3. Final Answer:

    Deploy to green, test, switch traffic from blue to green -> Option A
  4. Quick Check:

    Deploy-test-switch = A [OK]
Hint: Deploy to inactive env, test, then switch traffic [OK]
Common Mistakes:
  • Switching traffic before testing
  • Testing on active environment
  • Deploying after switching traffic
3. Consider this simplified code snippet for switching traffic in blue-green deployment:
current_env = "blue"
new_env = "green"
if current_env == "blue":
    current_env = new_env
else:
    current_env = "blue"
print(current_env)
What will be the output?
medium
A. "blue"
B. None
C. SyntaxError
D. "green"

Solution

  1. Step 1: Analyze initial variables

    current_env starts as "blue", new_env is "green".
  2. Step 2: Evaluate the if condition

    Since current_env == "blue", it sets current_env = new_env, which is "green".
  3. Final Answer:

    "green" -> Option D
  4. Quick Check:

    Switching from blue to green prints green [OK]
Hint: If current is blue, switch to green [OK]
Common Mistakes:
  • Confusing assignment direction
  • Expecting original value to print
  • Thinking code has syntax error
4. A team uses blue-green deployment but users report downtime during the switch. What is the most likely cause?
medium
A. The old environment was not shut down
B. Traffic was switched before the new environment was fully ready
C. The database was not updated
D. The new environment was tested too long

Solution

  1. Step 1: Understand downtime cause in blue-green

    Downtime usually happens if traffic switches before the new environment is ready to serve requests.
  2. Step 2: Evaluate options

    Old environment running or database update issues don't cause immediate downtime during switch; testing too long delays deployment but not downtime.
  3. Final Answer:

    Traffic was switched before the new environment was fully ready -> Option B
  4. Quick Check:

    Premature traffic switch = downtime [OK]
Hint: Switch traffic only after new env is ready [OK]
Common Mistakes:
  • Assuming old env causes downtime
  • Ignoring readiness checks
  • Blaming database updates for switch downtime
5. You manage a critical microservices system using blue-green deployment. After switching traffic to green, you discover a severe bug. What is the best immediate action to minimize downtime?
hard
A. Switch traffic back to blue environment immediately
B. Fix the bug in green environment and keep traffic there
C. Restart both environments simultaneously
D. Deploy a new environment and switch traffic there

Solution

  1. Step 1: Understand rollback in blue-green deployment

    Blue-green allows quick rollback by switching traffic back to the previous stable environment (blue).
  2. Step 2: Evaluate options for minimizing downtime

    Fixing bug in green delays recovery; restarting both causes downtime; deploying new environment takes time.
  3. Final Answer:

    Switch traffic back to blue environment immediately -> Option A
  4. Quick Check:

    Rollback by switching traffic = minimize downtime [OK]
Hint: Rollback by switching traffic to old env fast [OK]
Common Mistakes:
  • Trying to fix bug before rollback
  • Restarting both environments causing downtime
  • Deploying new env wastes time