-
Notifications
You must be signed in to change notification settings - Fork 53
Swapping Slots
Our deployments operate in a staged rollout. Each environment has a staging slot and an active slot. When a deployment action takes place, the following steps occur:
- The CI/CD pipeline runs initial code and structure tests.
- Terraform changes are applied to the environment.
- The new version of the app service is deployed to the
staging
slot. - The
staging
slot is checked for health and stability. - When stable, the
staging
slot is swapped with theactive
slot. This means that thestaging
slot, with the new code, becomes theactive
slot and receives all traffic.
As a beneficial side effect of this procedure, the known-good production configuration remains active in the staging
slot until another deployment is made. If a malfunctioning feature or some other code problem prevents proper application startup, the change can be quickly reverted by executing a manual slot swap.
This process has been automated using our GitHub actions. To perform a slot swap, go to the workflow corresponding to the environment you're having issues with and click to run the workflow using the main branch. The slow swap job swaps the staging slot with the production slot and checks the environment's readiness.
- Production slot swap workflow
- Stg slot swap workflow
- Training slot swap workflow
- Demo slot swap workflow
- Test slot swap workflow
- Dev slot swap workflow
If this job fails or you need additional information, consult Microsoft's official documentation.
- Getting Started
- [Setup] Docker and docker compose development
- [Setup] IntelliJ run configurations
- [Setup] Running DB outside of Docker (optional)
- [Setup] Running nginx locally (optional)
- [Setup] Running outside of docker
- Accessing and testing weird parts of the app on local dev
- Accessing patient experience in local dev
- API Testing with Insomnia
- Cypress
- How to run e2e locally for development
- E2E tests
- Database maintenance
- MailHog
- Running tests
- SendGrid
- Setting up okta
- Sonar
- Storybook and Chromatic
- Twilio
- User roles
- Wiremock
- CSV Uploader
- Log local DB queries
- Code review and PR conventions
- SimpleReport Style Guide
- How to Review and Test Pull Requests for Dependabot
- How to Review and Test Pull Requests with Terraform Changes
- SimpleReport Deployment Process
- Adding a Developer
- Removing a developer
- Non-deterministic test tracker
- Alert Response - When You Know What is Wrong
- What to Do When You Have No Idea What is Wrong
- Main Branch Status
- Maintenance Mode
- Swapping Slots
- Monitoring
- Container Debugging
- Debugging the ReportStream Uploader
- Renew Azure Service Principal Credentials
- Releasing Changelog Locks
- Muting Alerts
- Architectural Decision Records
- Backend Stack Overview
- Frontend Overview
- Cloud Architecture
- Cloud Environments
- Database ERD
- External IDs
- GraphQL Flow
- Hibernate Lazy fetching and nested models
- Identity Verification (Experian)
- Spring Profile Management
- SR Result bulk uploader device validation logic
- Test Metadata and how we store it
- TestOrder vs TestEvent
- ReportStream Integration
- Feature Flag Setup
- FHIR Resources
- FHIR Conversions
- Okta E2E Integration
- Deploy Application Action
- Slack notifications for support escalations
- Creating a New Environment Within a Resource Group
- How to Add and Use Environment Variables in Azure
- Web Application Firewall (WAF) Troubleshooting and Maintenance
- How to Review and Test Pull Requests with Terraform Changes