Deployment Strategies
Progressive rollouts and rollbacks
This guide explores the various deployment strategies available in Aperture, explaining not just how to implement them but why and when each strategy is most effective for your business goals.
Understanding Deployment Risk
Before choosing a deployment strategy, it’s essential to understand what’s at stake:
- User Experience Impact - Updates can disrupt user flows if not carefully managed, leading to confusion or frustration.
- Brand Reputation - Buggy deployments damage trust and satisfaction, potentially impacting your relationship with users.
- Revenue Implications - Issues affecting checkout or core features directly impact revenue and business operations.
- Support Burden - Problematic deployments increase support tickets and costs, straining your resources.
The right deployment strategy mitigates these risks while enabling you to ship updates quickly and confidently.
Progressive Rollouts
A progressive rollout gradually increases the percentage of users who receive an update, allowing you to monitor for issues before affecting your entire user base.
Why Use Progressive Rollouts?
A progressive rollout helps you minimize risk by gradually exposing your new functionality to an increasing proportion of users. This approach is especially valuable when you’re making significant changes to core features, as it gives your team the opportunity to watch how real users interact and how the system performs under actual load. By starting with a small subset, you can validate that your server infrastructure supports the changes, detect performance regressions, and catch edge cases that didn’t surface in testing.
How to Implement a Progressive Rollout
-
Plan your rollout phases
Example timeline:
- Phase 1: 5% of users for 4 hours
- Phase 2: 20% of users for 12 hours
- Phase 3: 50% of users for 24 hours
- Phase 4: 100% of users
-
Configure in Aperture
Navigate to: Your web application → Deployments → New Deployment, then:
- Select: Progressive Rollout strategy
- Configure each phase with percentage of users
- Set duration before next phase
- Define automatic advancement conditions
-
Set safety thresholds
Configure automatic rollback conditions:
- Error rate threshold: e.g., >2% error rate triggers rollback
- Performance degradation threshold: e.g., >30% slower page loads
- Custom metrics: Application-specific thresholds
Real-World Example
When Spotify deployed their redesigned home screen, they used a progressive rollout starting with 5% of users for two days, then gradually increased to 100% over a week. This allowed them to identify and fix several edge cases before most users encountered them.
Canary Deployments
Canary deployments are a specialized form of progressive rollout where you test with a small subset before wider release.
Why Use These Approaches?
These strategies are most useful when you need the flexibility to ship code ahead of activation, giving you control over when new functionality actually becomes available. They also provide a fast way to disable features that start causing problems, helping you respond quickly without redeploying. Beyond safety, they enable low-risk testing directly in production and make it easy to deliver different feature sets to specific user segments—all without complicating your deployment process.
Rollback Strategies
Rollback strategies are pre-defined plans for quickly reverting to a previous stable state when issues are detected.
Why Prepare Rollback Strategies?
Robust rollback processes are essential because issues can still surface even after extensive testing, and the ability to recover quickly helps minimize the impact on users. Some problems only become visible at scale or under real-world conditions, so having a reliable rollback path ensures you can respond rapidly and reduce negative feedback or poor ratings.
How to Implement Effective Rollbacks
-
Preserve previous versions
- Configure Aperture to maintain the previous 3-5 stable builds
- Ensure proper versioning and tagging of all deployments
-
Define automatic rollback triggers
Navigate to: Your web application → Deployment Settings → Rollback Configuration, then set thresholds for:
- Error rates (e.g., JavaScript exceptions)
- Performance metrics (e.g., page load time)
- Custom business metrics (e.g., conversion rate)
-
Practice and document manual rollback procedures
- Document the exact steps for manual rollback
- Conduct periodic drills to ensure team familiarity
- Assign clear responsibilities during incidents
Real-World Example
When Cloudflare deployed a configuration that caused a global outage, their well-practiced rollback procedures allowed them to restore service within 27 minutes of the initial problem—far faster than diagnosing and fixing the root cause would have taken.
Deployment Schedule Best Practices
When planning your deployments, consider these best practices:
Timing Considerations
- Avoid peak usage hours unless deploying critical fixes
- Consider geographic distribution of your user base when scheduling
- Align with support team availability for faster response to issues
- Schedule progressive phases to ensure observation during business hours
Deployment Frequency
Different approaches work for different organizations:
- Continuous Deployment: Multiple small deployments daily (low risk, fast iteration)
- Regular Scheduled Releases: Weekly or bi-weekly deployments (balanced approach)
- Major Release Cycles: Monthly or quarterly releases (traditional approach)
The right frequency depends on your team size, application complexity, and business requirements.