We're putting the finishing touches on our newest whitepaper, A Foundational Guide to Site Reliability Engineering, Service Level Objectives, and Service Level Indicators (whew, that's a mouthful!), but we thought we'd entice you, our dear readers, with a sneak peek of some of the SRE & SLO goodness that this brand-new resource contains in spades. In particular, we break down a frequently-discussed concept in DevOps and SRE, that of the shift left vs. shift right testing approaches in software development.
Your Left, Your Left, Your Left...Right...Left
Did your mother tell you that "an ounce of prevention is always better than a pound of cure?" Yep, ours did, too. And while it's important to understand that, yes, preventing issues is easier than resolving them, these issues—even critical ones—will undoubtedly arise because no system is inherently perfect. Even though monitoring Service Level Indicators (SLIs) helps organizations identify issues before they happen, they must invest effort into systems and processes that both minimize issues and simplify resolving them efficiently. Using an SRE approach, the reliability of a system should include both building reliability directly into the applications themselves early on, and evaluating backend metrics once the software is released. The concepts of shift left and shift right are critical to achieving this flexibility.
Like Beyonce Says, Shift Left...to the Left...to the Left
Shift left refers to the software development practice of focusing on quality in the initial development process in order to prevent issues, streamline testing, and ensure a better customer experience when the software is deployed. It is exactly how it sounds, in that it shifts the testing process to the left—or the beginning—of the development process. The overarching goal of shift left is to mitigate risk and reduce defects that might impact customer satisfaction by being proactive early on.
Using the mantra, “Test early and often,” shift left embraces a culture of shared responsibility—it prioritizes building the development pipeline so that the software is as close to “perfect” as possible in the initial release. This approach moves away from focusing exclusively on speed, passing the code off to the testing team, and letting them sort out the issues. Shift left also prioritizes continuous integration and continuous delivery (CI/CD). In CI/CD, building, testing and deployment are automated, and manual effort is minimized so testing can be done quickly, early, and often.
Shift Right Here, Right Now
The goal of shift left’s lesser-known counterpart, shift right, enables you to test in production, and prepare for the undefined, unknown, and unexpected. The term refers to the practice of doing more thorough testing after the software is released, and continuing to test post-release. The reason for this is that, while staging environments can approximate production environments, they can never truly duplicate them, so post-release testing is necessary to truly understand what users are experiencing, to identify problems that might only exist in that real-life environment, and to get a better understanding of system dependencies.
A benefit of shifting right is that it creates a continuous feedback loop from actual user experience directly back into the development process. Teams are constantly shifting—meaning that they’re going through agile transformations and transitions all the time. Likewise, their feedback will shift and evolve, thus creating an ongoing channel for real-world feedback is imperative to the development process, and ultimately, the success of the software being deployed.
Enough with Your Pop Music References, Please Give me a One-Sentence Explanation
Fair enough. To boil it all down into one, cohesive sentence: Shift left emphasizes prevention and risk reduction as the keys to an eventual positive customer experience, whereas shift right emphasizes the overall user experience as critical information in the feedback loop, which spurs ongoing improvements, which therefore leads to satisfied customers.
And, if you're left asking yourself, "What the shift do I do with this information?" Well, it's time for a dose of reality. You will never be able to truly shift everything left or right, so you need a balanced, pragmatic approach that allows you to embrace Shifting Left and Shifting Right.