Talk by Jesse Toth and Nathan Witmer, given at OSCON 2015.
At GitHub, we recently replaced a large subsystem of our application – the permissions code – with a faster and more flexible version. In our talk, we’ll share our approach to this large-scale rewrite of a critical piece of our Rails application, and how we accomplished this feat while both preserving the performance of our app and proving the new technology over the course of the project.
We’ll go over these general themes:
* An explanation of the challenge, including a brief overview of the permissions models, both old and new
* Our approach to testing, validating, and then changing our codebase to use a new system for authorization, using a Ruby library we created to help us with this task
* How we used production traffic and data to verify the correctness of our changes and reveal data quality issues
* How we used metrics and gradual rollouts to track performance and errors as we integrated the new permissions system
* Examples of the user interface we built to control and visualize our experiments
* Some stories about what went wrong (and right!) as we made these modifications.
After this session, we hope the attendees will gain a new perspective on ways to tackle a large-scale refactoring project with confidence.
While code examples will be in Ruby, no Ruby knowledge is required.