At QCon San Francisco today, Matt Ranney, chief architect at Uber, detailed the chaotic internal workings of the company’s software stack. The talk included references to three of Uber’s open-source projects, but also highlighted the utter chaos going on inside the organization.
When Uber was created, said Ranney, it was little more than an outsourced PHP and MySQL application. By 2010, the system was being reworked into what would eventually become the two primary services within the organization: dispatch, and the API, which was used to build applications for phones.
Once these two systems were built, however, Ranney said the team quickly found it was difficult building out two large services and maintaining them at scale. The journey into microservices began as a way to break up those large systems.
(Related: How to get everyone to help scale agile)
Ranney said that the Uber philosophy on microservices was to encourage them entirely. As a result, new developers could join the company and work on a completely fresh project that would then become another microservice.
Since 2011, when before the company had only two services, Uber has added more than 698 services to its retinue, and Ranney admitted that this was a tad much to deal with. In order to help make sense of the chaos of more than 700 moving parts, he advocated stopping as many as possible from moving at all.
“This is a crazy, very chaotic situation,” said Ranney. “I don’t know that microservices are the answer to all problems, but they’re the answer to a lot of problems if you put them in the right context. The idea I want to propose is that I think a microservice architecture works best if you have immutable infrastructure.
“Netflix showed us that once your infrastructure is immutable, you can count on it more. I think the same is true for microservices: After some point, every time you change them is when you risk breaking them.”