The architecture of Uber’s API gateway
eng.uber.com
eng.uber.com
This entry, for example, mentions how they avoided Go routines as a "performance concern" even without any data to prove it. It's bush league level to think you can do it better yourself.
https://eng.uber.com/go-geofence-highest-query-per-second-se...
1. https://medium.com/@buckhx/unwinding-uber-s-most-efficient-s...
I also understand the double polygon search with bounding box optimization, so I’m not sure why that wasn’t used.
Alas, it was ahead of its time; the legacy of C makes it hard to work with.
People on HN always think “all it’s doing is matching a rider with a driver, why is it so complicated? I can write it in a weekend!” Sure, but it won’t scale.
Things would fail, rollback, and then the logs would have their errors truncated or something. I wasted so many days deploying botched releases from coworkers.
And the use of Phabricator at Uber was a nightmare. LLVM uses it correctly, IDK what Uber did but it was a PITA to do really anything.
Pair that with the siloed off teams where "every team is its own startup" mentality and you have constant fighting, power grabs, being blocked all the time, etc.
One one user talking own all APIs, the system has ability to skip unmountable APIs, but we catch it during user interactions with tons of test and validations.
This was a terrible layer. Everyone hated it when I was there. People ended up building logic directly into the API gateway because it was so difficult to use.
I am so glad to never have to look at RTAPI again.
I left too late. The engineering in that company was abysmal.
Given that Uber is an engineering heavy and tech-centric organization, why did you choose to do configuration through the UI? Why not configuration and infrastructure as code?
How did you go about solving those ?
Did yall work with the Go team to resolve the other issues that were stumbled upon?
If you simply want a better Java, I’d try Kotlin. Or Java 15.
And while on the reuse topic, will Uber open source this?