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
Speaker
Javier Fernandez-Ivern
Senior Software Engineer @Netflix
Javier Fernandez-Ivern is a member of the Playback Experience team at Netflix, where he is responsible for ensuring that customers always enjoy their favorite shows with the best video, audio, text, and other features available. His services fill a key role in enabling Netflix to stream amazing content to more than 220M members on thousands of devices worldwide. Prior to Netflix, Javier spent a few years working at a competitive programming startup before moving into a consulting role where he built web applications for a variety of clients. After trying out management at Capital One, he returned to his software engineering roots and joined Netflix. Javier enjoys developing and operating highly available services, and the scale at Netflix has been a unique and exciting challenge. Javier received a MS in Computer Science from Eastern Washington University.