⬅️ DevOps

🔗 YT

1. Big Bang Deployment

  • like ripping of the band-aid
  • we push all of our changes at once which causes a bit of downtime
  • needs to have a solid rollback plan

2. Rolling Deployment

  • update incrementally (aka staged roll-out)
  • for example if we have 10 servers running our code, we update a server one at a time
  • no downtime
  • you can spot and mitigate any issues early during the rollout
  • it’s generally a slower process
    • doesn’t support targeted rollouts

3. Blue-Green Deployment

  • we maintain two identical production systems (one is active and visible to the users, the other is idle)
  • the blue is live and the green is our playground where we can test our new version
  • when ready, we switch the users to the green deployment (with a load balancer)
  • no downtime
  • easy rollback
  • there’s no targeted rollout, all users switched at once
  • resource intensive - doubles our prod environment

4. Canary Deployment

  • deploy your change to a subset of the servers/users
  • easy rollbacks
  • targeted rollouts (can be user-specific: geographical area or device type)
  • somewhat complex (especially when db migrations or API compatibility are involved) Often combined with rolling deployment

5. Feature Toggle

  • manages specific new features within the application
  • can be used in combination with any of the other deployment strategies (e.g. turn the feature toggle on for just the canary users)
  • great for a/b testing or gradual roll-outs
  • but toggles can add complexity and make testing more difficult
  • make sure to clean-up to prevent toggle debt!