An error budget is essentially the permissible limit of risk or failure that a service can tolerate while still meeting its objectives. It is closely tied to Service Level Objectives, which define the expected level of service reliability. For instance, if an SLO dictates 99.9% uptime, the error budget allows for a 0.1% margin of error or downtime.
Balancing Innovation and Reliability
It's important to keep balance between releasing new features and maintaining a stable service:
- Too much reliability slows down innovation - if a team focuses solely on maintaining 100% reliability, they may become overly cautious, avoiding any changes that could potentially disrupt the service. This "gatekeeping" approach can prevent the introduction of new features that could benefit users.
- Moving fast can reduce reliability - on the contrary, constantly pushing out new features and changes without adequate testing or consideration for stability can lead to frequent outages or degraded user experiences.
There are times when moving quickly takes priority - such as when launching a brand new product ahead of competitors. Getting to market fast is often vital, even if doing so means sacrificing some stability early on. The key is to preserve reliability for the core platform while giving new initiatives more room to maneuver.
For example, a ride sharing company might push the envelope with experimental features, but the reliability of the established ride app that millions rely on daily should not be impacted.
3 Operating Principals
It's essential to start with a clear understanding of your SLOs. They should reflect both user needs and your system's capabilities. The error budget, derived as the difference between your SLO target and 100% perfection. In certain situation the error budget is defined by other metrics such as the number of incidents or scope/impact of those incidents. Make sure your organization is aligned on these terms.
Managing your error budget wisely involves continuous monitoring. By keeping a close eye on how much of the budget has been consumed, you can make informed decisions about deploying new features or focusing on stability. I hope no SREs see this - but if you never spend your error budget, you aren't innovative enough.
Setting up alerts for when the error budget reaches certain thresholds can help in proactively managing the risk of service degradation. With that said, when situation arise you should be empowered to sacrifice some reliability. After all we write software to solve a business needs, and business dictates how fast should we be moving.
As always, communication is key. Communicate with your customers when rolling out new features (e.g. by marking them as "experimental" or "beta"); communicate with product stakeholders and leadership to manage expectations around service reliability and feature development velocity.
The error budget is effective mechanism for balancing velocity and reliability. Take intelligent risks based on data-driven decisions, recognizing that the error budget is not just a cap on allowable failures, but a dynamic tool for managing the rate of change.