Speaker
Abstract
How do you gain confidence that a system modification does what it’s supposed to do? A refactoring should not cause a functional change, whereas a feature modification should cause a specific kind of change. Tests are great for validating assertions one has already thought of, but for sufficiently complex systems it is infeasible or cost-prohibitive to verify the long tail of possible outcomes through testing. Without high confidence in our code changes, it is difficult to move quickly without breaking things.
I built a framework at Netflix that allows our engineers to define basic characteristics of a service API, and then replays pairs of identical requests against two versions of the service looking for differences in the responses. When changes are found, the framework filters out noise using a variety of techniques which effectively bring noise down to zero. I will share examples of how this has helped accelerate development by unlocking stress-free refactoring in my team’s most critical service, and how we’ve used it to perform large technical debt migrations in record time.
Key Takeaways
- Why we need a high confidence change process for maintainable code bases
- How zero-noise diffs help close the confidence gap left by tests and canaries
- Recommended practices for building a diff system that controls for non-idempotent dependencies and (some) side effects
Interview
Topics
QCon San Francisco 2022 is a three day conference for senior software engineers, architects and team leads. An international program committee of working engineers selects every session. Patterns and practices, not products and pitches.
Part of the track
Architecting for Change at Scale Hosted by Haley Tucker Retired Principal Software Engineer for Platform Engineering @NetflixFrom the same track
Monday 24 October
10:35 Ballroom A Session Architecture Adopting Continuous Deployment at Lyft Tom Wanielista Senior Staff Software Engineer @Lyft All organizations, regardless of size, need to be able to make rapid changes and improvements in their constantly growing systems. How can we handle all this change while maintaining a reliable product? 11:50 Ballroom A Session Enabling Change @ Scale Roundtable Tom Wanielista, Mykyta Protsenko, Tapabrata Pal, Javier Fernandez-Ivern Increasing the safe delivery of change has immense business value across a number of dimensions, so how can we improve our ability to manage change at scale? 13:40 Seacliff D Session Unconference: Architecting for Change Shane Hastie Global Delivery Lead for SoftEd and Lead Editor for Culture & Methods at InfoQ.com What is an unconference? At QCon SF, we’ll have unconferences in most of our tracks. 14:55 Ballroom A Session Architecture Dark Side of DevOps Mykyta Protsenko Senior Software Engineer @Netflix Topics like “you build it, you run it” and “shifting testing/security/data governance left” are popular: moving things to the earlier stages of software development, empowering engineers, shifting control definitely sounds good. 16:10 Ballroom A Session Architecture Stress Free Change Validation at Netflix Javier Fernandez-Ivern Staff Software Engineer @Netflix with Over 24 Years in Software Engineering How do you gain confidence that a system modification does what it’s supposed to do? A refactoring should not cause a functional change, whereas a feature modification should cause a specific kind of change. 17:25 Bayview Session Architecture Log4Shell Response Patterns & Learnings From Them Tapabrata Pal Vice President of Architecture @Fidelity In early December 2021, rumors about a remote code execution (RCE) vulnerability in Log4j began circulating on social media, dubbed Log4Shell. Over the next three days, those rumors were confirmed and the immense scope of the vulnerability became clear.