Topics

Featured in Development

Peter Alvaro talks about the reasons one should engage in language design and why many of us would (or should) do something so perverse as to design a language that no one will ever use. He shares some of the extreme and sometimes obnoxious opinions that guided his design process.

Featured in AI, ML & Data Engineering

Today on The InfoQ Podcast, Wes talks with Katharine Jarmul about privacy and fairness in machine learning algorithms. Jarul discusses what’s meant by Ethical Machine Learning and some things to consider when working towards achieving fairness. Jarmul is the co-founder at KIProtect a machine learning security and privacy firm based in Germany and is one of the three keynote speakers at QCon.ai.

Featured in Culture & Methods

Organizations struggle to scale their agility. While every organization is different, common patterns explain the major challenges that most organizations face: organizational design, trying to copy others, “one-size-fits-all” scaling, scaling in siloes, and neglecting engineering practices. This article explains why, what to do about it, and how the three leading scaling frameworks compare.

Uber's Chief Systems Architect on their Architecture and Rapid Growth

In this week's podcast QCon chair Wesley Reisz talks to Matt Ranney who is the Chief Systems Architect at Uber, where he's helping build and scale everything he can. Previously, Matt was a founder and CTO of Voxer, probably the largest and busiest deployment of Node.js.

Key Takeaways

Expanding a company and team at this rate is genuinely hard. Lots of mistakes have been made along the way.

Microservices allow companies to grow rapidly but have a cost in terms of aggregate velocity.

Uber is gradually moving its marketplace development from Node.js to Go and Java. Java is used for the map services.

Aggressive failure testing is used extensively in Uber.

Some early design choices - like using JSON over HTTP - make formal verification basically impossible.

Related Sponsor

Show Notes

1m 42s - Having been to a lot of conferences, started to reflect on "if I was going to pick a conference to attend what would I want to get out of it?" And a lot of architecture talks at QCon and other events left me feeling inadequate; like other people- like Google for example - had it all figured out but not me.

2m 54s - I want to question that because as I’ve talked to a lot of people I’ve realised that whilst they may have finally figured it out, a lot of their architecture is actually various shades of legacy shambles.

3m 21s - So let’s acknowledge this is really hard but also try to give you some ways to save yourself some pain.

3m 55s - Microservices have a lot of trade-offs, not all of which are obvious.

4m 41s - Adopting Microservices allows you to write your software in different programming languages; so you could have some written in Node.js, some in Python, some in Go and some in Java. Uber has this - and some Scala.

5m 22s - Microservices bring lots of benefits, like teams owning their own release cycles and being responsible for their own uptime.

5m 46s - Because each team does their own thing, the aggregate velocity would in many cases be slower; the Java people had to figure out how to talk to the metrics system, as did the Node people and the Go people.

6m 05s - A hard-fought bug on one platform also has to be battled on another platform.

6m 19s - I hadn’t expected the cost of multiple languages to be as high as it was.

Uber's architecture

7m 21s - Uber is in many different data centres around the world, to get the data closer to customers and for availability reasons.

7m 43s - At the front end we do TLS termination and we are trying to push that as close to the end users as we can, so we’re using some cloud providers for that.

8m 03s - We then have the Node.js dispatch system, now called Marketplace, as Uber expands into other sorts of logistics beyond transportation.

8m 50s - This is the part of the system that actually has to be up so this is where we do aggressive failure testing and require the highest level of scrutiny about all the changes we make.

9m 14s - Uses Riak clusters to manage the state of all the jobs that are in progress.

9m 31s - Completed jobs are moved out of the Marketplace system and into various other business logic systems, a lot of which go through Kafka.

9m 58s - Various other queues also execute workflow to, for example, prompt you to get a receipt and rate the trip.

10m 27s - The map services compute the ETAs and routes for the trip. These are some of the highest throughput systems and are mostly written in Java.

11m 07s - All the Kafka streams go to Hadoop for analytics processing.

Managing team growth and culture

12m 44s - Such a huge team and product growth rate would not be possible without being able to hire really good engineers. It would be much more efficient if we hired more slowly, but the competition is fierce and we have to work hard to stay ahead.

13m 51s - One of the interesting things is that because we were adding people so quickly it wouldn’t have been possible if we weren’t building things as lots of tiny services.

People mentioned

Companies mentioned

Languages mentioned

Products mentioned

About QCon

QCon is a practitioner-driven conference designed for technical team leads, architects, and project managers who influence software innovation in their teams. QCon takes place 8 times per year in London, New York, San Francisco, Sao Paolo, Beijing, Guangzhou & Shanghai. QCon New York is at its 8th Edition and will take place Jun 24-26, 2019. 140+ expert practitioner speakers, 1000+ attendees and 18 tracks will cover topics driving the evolution of software development today. Visit qconnewyork.com to get more details.

More about our podcasts

You can keep up-to-date with the podcasts via our RSS Feed, and they are available via SoundCloud and iTunes. From this page you also have access to our recorded show notes. They all have clickable links that will take you directly to that part of the audio.