Chapter 1. Introduction

In early summer of 2011 a group of technologists was assembled to build infrastructure and applications to help reelect The President of the United States of America. At the onset, the technology team at Obama for America (OFA) had just shy of 18 months to bring together a team of 40 odd technologists, define the technical direction, build out the infrastructure, and develop and deploy hundreds of applications. These applications all needed to be in place as soon as possible and would be vital to helping the campaign organize in some way.

With that in mind we pulled together a team of amazing engineers (most with non-political backgrounds) and started the process of building on top of what the previous presidential cycle had started. In large part the main task was to refactor an existing infrastructure in order to unify several disparate vendor applications into a well-defined and consistent application programming interface (API) that could enable brand new applications. These were as disparate as new vendor integrations to the tools that would help our more than 750,000 volunteers organize, fundraise, and talk directly to voters (along with hundreds of other backend and user-facing applications) to be built on top of it. In addition to building the core API, we also had to actually build the aforementioned applications, most of which were expected to scale to sustained traffic on the order of thousands of requests per second. All this while an organization the size of a fortune 500 company is being built up around you and needs to use those applications to help it grow.

No big deal.

All of this needed to be functional as soon as possible because at the scale of volunteering we were talking about, transitioning people to a new tool too late in the game was not a realistic option, no matter how clean it was coded or how nicely designed. And so, working with our product management team and the rest of the campaign we spent the lion’s share of the next year and a half building out the basic infrastructure and all features that would allow organizers and other staff to benefit from these applications.

As election day neared, it became clear that the focus the team had maintained for the "building" phase of the campaign needed to change. Performance and features had been the guiding principles up to this point; stability had been an important, but secondary goal. But for us to truly succeed on the four days that mattered most, we had to focus our efforts on making our applications and core infrastructure rock-solid in ways that the team had not fathomed before.