14 ms·
The Uber Engineering Tech Stack, Part I: The Foundation
- creatine_lizard 10y agoIf it is easy, it'd be nice to edit this the title to be not in all caps.
- marcoperaza 10y ago
- minimaxir 10y agoIn fairness, the title of the original article is in ALL CAPS (due to text-transform: uppercase), so don't assume malice on the OP's part.
- deleted 10y ago[deleted]
- scrollaway 10y agoIn Firefox, copypasting text-transform:uppercased text retains its pre-transform case. I'm a little sad that feature isn't in Chrome.
- ben_jones 10y agoI find it funny that they bothered doing all caps for an article demonstrating a (sophisticated and well engineered) mostly boring architecture.
- dang 10y agoSometimes this happens because people use the HN bookmarklet to submit a post and the original article uses all-caps typography for its title (as this one does). But it's so rare for such cases to make the front page that I don't think we need to worry much about it. If it ever becomes a problem it shouldn't be hard to deal with. All: it's fixed now, so please let's talk about the article rather than title mishaps.
- deleted 10y ago[deleted]
- stickfigure 10y agoI've been sitting on the sidelines of the "Uber is great!" vs "Uber are a bunch of dicks!" war for quite some time now. I always figure every company of reasonable size contains elements of both. But geezus... this was posted with the title in all caps "THE UBER ENGINEERING TECH STACK, PART I: THE FOUNDATION". Presumably by someone at Uber. Is their corporate culture that arrogant?
- praneshp 10y agoCould you explain what is arrogant about it? The all caps doesn't come across as arrogant or weird to me on the blogpost.
- stickfigure 10y agoWhen I saw the story, it stood distinctly apart on the HN homepage as the only story title with ALL CAPS LOOK AT ME. It was definitely a HN culture faux-pas. Alone by itself this is not a serious indictment, but coming from a company with a reputation for arrogance it seemed to be in particularly poor taste. The title of the story on HN has since been corrected to normal case. I'm not an Uber hater, if anything I'm inclined to defend the company. But posting ALL CAPS to HN is either arrogance or carelessness or (most likely) some combination of both. I would not normally pay attention except this is a company which already has a reputation, so maybe it's actually part of the corporate culture? Or maybe I'm overthinking it.
- skylark 10y agoI think you're massively overthinking it. The poster probably just copy pasted the headline directly from the blog when submitting the link. "All caps" is sorta the Uber aesthetic and looks totally normal in the context of the blog post itself.
- mandeepj 10y agoI know all caps is a hindrance in reading but I will focus on their tech stack and try to learn the good stuff
- mikecke 10y agoFor those of you complaining about the title being all caps, it was done so for aesthetic purposes. Which means somehow the submitter went through the time to uppercase each character of the HN title before submitting. text-transform: uppercase;
- cynicalkane 10y agoWhat are you talking about? If you copy-paste the title you get all caps.
- mikecke 10y agoOops, I didn't know the behavior persists.
- adamnemecek 10y agoI think that this is new though. I don't think it used to be like this (?). I'm on Chrome.
- deleted 10y ago[deleted]
- thesimpsons1022 10y agodifferent for chrome and firefox :)
- dang 10y ago> What are you talking about? Please don't be rude in comments here.
- marcoperaza 10y agoQuite an intricate architecture. I can't help but wonder if all of the complexity and different moving parts are worth it. Does it really make more sense than throwing more resources at a monolithic web service? Clearly the folks at Uber think it does, and they've obviously thought about the problem more than me, but I'd love to understand the reasoning.
- UK-AL 10y agoThere's only so far throwing more resources at a monolithic app can take you. At a certain scale you have to turn distributed. Uber is at a large scale
- deleted 10y ago[deleted]
- sixo 10y agoThis is just about all the tech there is, right?
- deleted 10y ago[deleted]
- e1g 10y agoI'd love to know how many people are responsible for devops/operations/app at various stages of any company's journey. Wikipedia says Uber employs 6,500 people so if even 15% of that is on the tech side of the business that's still 1,000+ people allocated to tech. I think this metric would be a useful reality check for a "modern" SaaS project with 3-10 people that's trying to emulate a backend structure similar to the big league. There are 20+ complex tools listed in the stack, and to run a high-visibility production system would require high level of expertise with most of them. Docker, Cassandra, React, ELK, WebGL are not related in required skills/knowledge at all (as, for example, Go and C are). Is it 5 bright guys and girls managing everything, like the React time within Facebook? Or a team dedicated just to log analytics?
- dkarapetyan 10y agoThat's all bloat. Pure and simple. At the end of the day Uber just does routing and basic allocation. It's a simple operations problem that has been solved since the 70s and no one back then needed ELK, Docker, Cassandra, etc. I've seen this bloat everywhere. It is usually a result of internal politics and posturing by management types. The kinds of people Steve Jobs would have called B and C players. Now the actual people operations is another matter entirely but the tech stack definitely doesn't need to be that complicated.
- Animats 10y agoI have to admit, I could see this running for a city the size of SF on a desktop machine under the table at the taxi depot. Uber has 11,000 drivers in SF, but probably only a few thousand are on at any one time. A ride takes a few minutes, so if you figure 3,000 active drivers and 4 rides per hour, that's only about 3 ride transactions per second. You have a transaction at ordering, one at ride start, and one at ride end. Plus you have tracking of where all the active drivers are, pinging maybe once a minute. That adds up to only at 10-20TPS. You can offload the routine web and app stuff to some front end machines. And you want to do some analysis every minute or two to see where there are "surges". The only non-trivial part of this is assigning drivers to rides.
- Animats 10y agoIt's interesting that they don't break the problem apart geographically. It's inherent in Uber that you're local. But their infrastructure isn't organized that way. Facebook originally tried to do that, then discovered that, as they grew, friends weren't local. Uber doesn't need to have one giant worldwide system. Most of their load is presumably positional updates. Uber wants both customers and drivers to keep their app open, reporting position to Master Control. There have to be a lot more of those pings than transactions. Of course, they don't have to do much with the data, although they presumably log it and analyze it to death. The complicated part of the system has to be matching of drivers and rides. Not much on that yet. Yet that's what has to work well to beat the competition, which is taxi dispatchers with paper maps, phones, and radios.
- asdfaoeu 10y ago> We assign cities to the geographically closest data center, but every city is backed up on a different data center in another location.
- matthewrudy 10y agoI tried to debug this from Hong Kong, and the API calls definitely go to the US. Maybe in Europe they resolve to a European data center, but in Asia they still seem to send everything via the US.
- messutied 10y agoq
- zer0gravity 10y agoYou know that saying : "I didn't have time to write a short letter so I wrote a long one". With this kind of technology stack you end up when you try to move fast. I'm sure that if more time and thought would have been put into it, it would have been more elegant and simple. But has time these days ?
- chiph 10y ago
- joering2 10y agoSounds like a very solid foundation! I'm glad to see they have sufficient system in place to continue spamming the heck out of people who never opted into their advertisement in the first place. /sarcasm I only wish LE would treat CAN-SPAM seriously and put more sources into criminal enforcement.
- NotQuantum 10y agoUber is really strapped for engineering talent. Especially when it comes for SRE. Myself and many friends working SRE at various Bay Area companies get consistently hit up for free lunches and interviews. It's really weird considering that their stack doesn't NEED to be this complex....
- joeblau 10y agoIt probably could be more simplistic. It seems like with enough engineers every company I've ever worked at eventually ends up using every technology they can because of the one thing it does well.
- r2dnb 10y ago>because of the one thing it does well. This "one thing it does well" business is then presented as : "using the right tool for the right job" and it's difficult to argue against that because the counterpart can easily deride you as a fanatic of some technology, someone not objective enough, etc... It is however interesting that we used relational databases for virtually everything for decades even though SQL is suboptimal at most things if we take them in isolation. Some will argue that people are now realizing their mistake, but the truth is these companies were successful and we were all getting our paychecks. (PS: I choose to use NoSQL for virtually all my projects) The real driver shouldn't be the one thing it does well. Many times - if not most of the time - it's preferable to use a tool optimal for the most important parts and suboptimal for the rest. I personally prefer to provision two more instances, than to add two more technology stacks.
- rantanplan 10y ago> It is however interesting that we used relational databases for virtually everything for decades even though SQL is suboptimal at most things You have no clue what SQL or ACIDity is. For 99% of the cases SQL/RDBMS is the right choice. You probably think you belong in that 1%, but from your comment, I suspect you do not. > I choose to use NoSQL for virtually all my projects That's because you have no important data to store. When you get to store data that are important to your customers you're gonna have a big revelation.
- sandGorgon 10y agoWhat I'm really wondering about is their app. The UI of the app can be impacted without an app update. For example the UI during the pride parade. Or minute of silence ( http://gizmodo.com/uber-makes-riders-take-a-moment-of-silence-for-gun-viol-1783391098 http://gizmodo.com/uber-makes-riders-take-a-moment-of-silenc... ) I wonder what's the architecture of the app and the API for this.
- possibleNoob 10y agoIf its updating without your consent to upgrade in the app store then its a webview youre looking at and they are just updating the webview.
- tlrobinson 10y agoI don't think it's that simple. The distinction between "code" and "data" is somewhat arbitrary. I'm sure Uber could get away with a rules engine that supports the cases the parent comment is talking about.
- nevir 10y agoApple changed that rule a while back.
- tasteup 10y agoThey likely already preset views and controllers to react to backend events. If they add an event like "pride" to the backend, the app just has to render the view associated with that event.
- why-el 10y agoMost likely just a simple alerts or announcements model that they fetch from the server and display into a pre-allocated section in the ios view (whatever they call it in iOS), if any. It's actually really good thinking.
- nstj 10y agoLast time I checked their iOS app pinged the backend around every 10 seconds for a big ol' payload of JSON config etc, which contained most of the A/B stuff and UI config (which car types to display, e.g., as where you are they might not have all of X/taxi/Black/Lux etc).
- tinganho 10y agoThis sounds like a blog post for emphasizing the more buzz word you use the better.
- 50CNT 10y agoSo much technology, yet I still had to load the site 3 times and fiddle with uMatrix to get the page to scroll. Now, lots of people do silly things with javascript, but on a blog article on your tech stack it doesn't speak well of things.
- legulere 10y ago> Screenshots show Uber’s rider app in [...] China Interesting to see Google maps being used, isn't that blocked in mainland China?
- xorgar831 10y agoUS phones roaming in China aren't blocked from using Google services, they may make an exception for Uber too. Here's what it looked like for me last May: https://www.dropbox.com/s/9rkor22hn3q6z5t/IMG_2183.jpg?dl=0 https://www.dropbox.com/s/9rkor22hn3q6z5t/IMG_2183.jpg?dl=0
- haosdent 10y ago"We use Docker containers on Mesos to run our microservices with consistent configurations scalably, with help from Aurora for long-running services and cron jobs."
- ryanlm 10y agoI just got rejected from them. I applied for a SE position, but they didn't like me I guess. They send you this really condescending rejection letter. I showed them my programming language that I built in C from scratch, and also my data structure library where I implement all the common data structures found in high level languages that I built from scratch in C, among the many projects I have. It must have been my state school that turned them off. I know I could keep up there, but maybe they also turned me down because I'm 5 states away and they thought I wasn't worth the recruiters time. edit: downvoter, if you could provide your rationale that would be great.
- mooted1 10y agoWhen I first started interviewing, I got turned down at a lot of companies because they were concerned about my self taught background, often in spite of strong project work and interviews. In spite of so many rejections (2 offers after 17+ interviews), I've been wildly successful in my current job—I received a promotion in the first 6 months and have since held down tech lead roles. Look, the bottom line is that companies optimize for false negatives. In order to achieve a high accuracy rate, [tests must have exceptionally low false positive rates](https://www.math.hmc.edu/funfacts/ffiles/30002.6.shtml https://www.math.hmc.edu/funfacts/ffiles/30002.6.shtml), just based on stats. I won't work out the math for you—you sound like you're perfectly capable of plugging numbers into bayes theorem—but that implies that even very good engineers are likely to get false negative rejections at many companies. It does not mean, however, that those companies are necessarily judging you based on unfair criterion, and I don't thin it's fair, thoughtful, or mature to indicate otherwise—(especially because some of my strongest coworkers at Uber are from less prestigious schools in the midwest...)
- minimaxir 10y agoYou are likely getting downvoted because it is off-topic, at best.
- deleted 10y ago[deleted]
- 10y ago
- mickyd54 10y ago'wildly complex' wow. and they now have 'eaters'
- candidates 10y agoI disagree. Even on hacker news, people rarely express such absurd things with so little confidence. You fail to take into account many of the following: * Extremely high volume. Uber has indicated elsewhere that they receive upwards of a few hundred thousand requests per second on just one service. Please show me the logistics stack that did this in the 70s. * Yes, building the first version of something is extremely cheap and easy. But being able to improve it becomes harder and harder. Especially given high volume, modern companies need sophisticated analytical tools that provides reliable data to both technical and non technical staff. Please show me the analytics stack that was able to ingest, store, and analyze terabytes of business data in realtime from the 70s. * Reliability. Modern web applications need to fail gracefully and be debugged quickly. Please show me the logistics and routing stack that was capable of extremely high uptime while being deployed constantly and serving hundreds of thousands of requests per second from the 70s. * Extensibility. Businesses need to extend to new markets. Moves like this often invalidate past assumptions. In order to support business flexibility, modern engineers deliberately invests considerable time into building decoupled components that can be reused as platforms instead of stuffed into a monolithic codebase. Please show me the operations and routing stack that could easily be reconfigured to enable such products as Amazon Web Services, Uber's external API, the google maps API, or Uber EATS—from the 70s. To make this more concrete, I worked on a routing stack at another company which probably works similarly to Uber's ETA systems. When considering these things, it's important to keep in mind the dependency tree of each new problem set and the work required to make those dependencies work reliably at big scale. To give you an idea of what this area alone entails: 1. Machine learning. - wiring together of and improving algorithms: linear regression to begin with, then random forest, then neural networks. - ensuring data required for learning is reliably available and correctly computed. - tools to launch, deploy, test these models. 2. Working with map data in memory many times larger than what fits onto the smallest consumer laptop. - how do you handle updates of data? - what if you want to use different data sets in different places, because they're more accurate? - how do you debug errors in the data without visual tools (hint: it's really hard and time consuming)? - how do you optimize loading this data into memory without requiring hours to deploy your application? - where do you even store this data? 3. Requests per second in the hundreds of thousands and latency requirements (in order to ensure the app responds quickly) hovering around 10ms. - how do you profile complex distributed applications? - what optimizations are available to make graph search faster (hint: A* isn't fast enough)? - how hard is it to implement these optimizations? 4. Data science and data science tools - Visualizations! - again, reliable data pipelines That's about what one team works on over the course of a year. Note the dependencies we have here: 1. We assume access to cloud infrastructure that doesn't require us to do all of our own devops. 2. We assume mature and automatically scaling data infrastructure: that kafka and storm have been set up and tuned to a degree that we don't have to worry about it. In reality, kafka alone requires a team of at least a dozen at linkedin to keep up with the maintenance, operations, and optimization burden of keeping up with scale. 3. We assume mature and scalable service oriented architecture tooling—if a call to another service is slow, I should be able to see on a dashboard what service is slow, how frequently, it's slow, why it's slow (if it depends on another service) etc. and countless other things I could spend days enumerating for you but I guess it'd be wasted on you because you're pretty convinced you already solved these problems in the 70s, so why am i wasting my breath
- pfarnsworth 10y agoYou mean any other software except for your own software right? Because it certainly sounds like you're the purveyor of what great software is, and your talent shines through your comments so clearly.
- dang 10y agoEven if you're correct in this reading, please don't get personally rude about it. We detached this comment from https://news.ycombinator.com/item?id=12154325 https://news.ycombinator.com/item?id=12154325 and marked it off-topic.
- ashitlerferad 10y agoAnyone know if Uber supports the projects they use with human and financial resources?