Professional Cloud DevOps Engineer
Site Reliability Engineering (SRE) is about finding a balance between making changes quickly and keeping a service stable and reliable. The goal is to move fast without breaking things for users. This is managed by using an error budget, which is the amount of acceptable unreliability a service can have over a period of time. Teams can spend this budget on deploying new features or making changes. If the service uses up its error budget, the focus must shift from new changes to improving stability. This creates a clear, data-driven rule for when to prioritize reliability over velocity, ensuring the team can innovate while protecting the user experience.
Managing a service's lifecycle involves planning for its entire existence, from initial design and launch through ongoing operation and eventual retirement. A key practice is designing for failure, meaning the service should be built to handle component outages without a total failure. This is done by using patterns like redundancy, where multiple copies of a component run, and graceful degradation, where the service reduces functionality instead of crashing. The lifecycle also includes regular updates and maintenance. Automated processes, like CI/CD pipelines, are used to safely roll out changes in stages, such as to a small percentage of users first, to catch problems early before they affect everyone.
When an incident happens, the immediate priority is to reduce its effect on users. The first step is to quickly detect the problem using monitoring and alerting systems. Once an issue is confirmed, the focus shifts to containment—stopping the problem from spreading. This might involve redirecting user traffic away from a broken component or rolling back a recent change. Clear, pre-defined runbooks or playbooks guide engineers through these steps to restore service. The goal is to get the system back to a working state, even if at a reduced capacity, as fast as possible. After the incident is resolved, a post-mortem analysis is conducted to understand the root cause and prevent it from happening again.
Prepare and test your skills
Prepare and test your skills
An error budget is the amount of acceptable unreliability a service can have over a period of time, which teams can spend on deploying new features or making changes. It provides a data-driven rule for when to prioritize reliability over velocity, shifting focus to improving stability if the budget is used up.
Designing for failure means building a service to handle component outages without total failure by using patterns like redundancy and graceful degradation. This approach, along with automated CI/CD pipelines for staged rollouts, helps manage the service through its entire lifecycle from launch to eventual retirement.
The key steps are quickly detecting the problem using monitoring, then focusing on containment to stop it from spreading, such as by redirecting traffic or rolling back a change. Engineers follow pre-defined runbooks to restore service, and a post-mortem analysis is conducted after resolution to prevent recurrence.