In 3 years… “Uber saved cost by migrating their micro service to their own colo.” followed by “Uber simplified operations by migrating their micro service platform to a monolith”.
In 5 years... "We've discovered a new paradigm for efficiently carving up and distributing computational units for our application. We call it, nanofunctions."
Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
71–80 of 233 posts
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#72Does Uber really need 4000 microservices?
There's quite a sizing range between monolith and microservice. If all their It needs are behind micro "micro" services, that figure is understandable. Outside of the map, taxi, food, payments, onboarding, they also have monitoring, deployment, HR, billing, legal, taxes, internationalized stufd, and the usual "..." for what I'm missing. If you just take a standard ERP, you could easily split it in dozens even hundred…
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#73It seems like they’ve gotten to the “holy grail” of deployment where developers don’t have to worry about infrastructure at all in theory. I’ve seen many teams go for simple/leaky abstractions on top Kubernetes to provide a similar solution, which is tempting because it’s easy and flexible. The problem is then all your devs need to be trained in all the complexities of Kubernetes deployments anyway. Hopefully Uber ab…
> abstractions on top Kubernetes
> abstracted away Kubernetes
I am beginning to think it's not such a bad thing to live and work in a third-world country far away from SV-induced hype cycles. This is genuinely painful to read.Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#74Earlier quoted context omitted.
There's quite a sizing range between monolith and microservice. If all their It needs are behind micro "micro" services, that figure is understandable. Outside of the map, taxi, food, payments, onboarding, they also have monitoring, deployment, HR, billing, legal, taxes, internationalized stufd, and the usual "..." for what I'm missing. If you just take a standard ERP, you could easily split it in dozens even hundred…
> If all their It needs are behind micro "micro" services, that figure is understandable. I call them nano services.
Everybody knows what is a monolith but nobody really knows what is the size of a "micro" service.
Just for taxes, do you make one service for taxes or one for each recipient of taxes? (In the EU, is it one for each country, in US, one for each state + federal ) with a different team managing each service?
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#75Earlier quoted context omitted.
It's not clear to me that being completely unaware of your infrastructure is a good thing. I don't think it's too much trouble to ask an engineer to understand k8s and think about where their service will live, even if it's a ci system that actually deploys. Furthermore, many layers of abstraction, especially in-house abstraction, just mean you have more code to maintain, another system for people to learn, and exist…
Part of my point is the goal with such a system is usually to require less infra work/knowledge from your devs, but it backfires if you don’t invest enough in your abstraction. The implicit goal of these abstractions is really to central knowledge and best practices around the underlying tech. Kubernetes itself is trying to free developers from understanding server management, but you could argue it’s not worth using…
e.g. with kubernetes, if you have the actual manifests defined by every team, it is a pain to do any sort of k8s updates. With a simple abstraction where teams only define the things they are interested in configuring (eg helm values), that simplifies this task a lot.
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#76Earlier quoted context omitted.
I've worked on a couple of extremely large micro services projects. And the thing is that nobody ever needs to run the entire stack other than end to end tests which get run in the cloud. You just checkout the services you need and because they are designed to be isolated the dependencies will usually be automatically stubbed out. So it's just a matter of running them or chaining them together if you have a particula…
Is there typically a “cold restart” plan to rebuild the whole infra from scratch? I’m thinking of things like circular dependencies when services boot.
I like to view k8s a lot like erlang's OTP, if something isn't right with the state of a service, I advocate calling 'exit()' and letting the restart with exponential backoff handle the transient.
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#77Earlier quoted context omitted.
Do you have knowledge of this? I find this hard to believe given the regulations from some of the larger countries requiring, by law, customer data be processed in country.
Deployments != unique codebases.
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#78Earlier quoted context omitted.
A different (better?) question is, does Uber need 4000 API contracts? The answer to that is probably yes. APIs let us split work across systems/people/teams/regions, and provide a way for both sides of a split to work together. Uber has a lot of teams, a lot of engineers, and so it makes sense that there are a lot of API boundaries to allow them to work together more efficiently. Sometimes those APIs make sense to pa…
I wonder what setting up a local dev instance is like for anything involving more than one or two of those.
But you tend to try to write your service so that it treats everything else it depends on like a vendor-provided API. Like, if you were building a Slack bot, you wouldn't ask Slack to let you pull down and run a local copy of Slack's API to test against. You'd maybe set up a test account in Slack's production system, and run your local bot against that to test it before you deploy it with credentials to run against your real slack account.
In a microservice architecture, you integrate with other internal systems in the same way.
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#79It seems like they’ve gotten to the “holy grail” of deployment where developers don’t have to worry about infrastructure at all in theory. I’ve seen many teams go for simple/leaky abstractions on top Kubernetes to provide a similar solution, which is tempting because it’s easy and flexible. The problem is then all your devs need to be trained in all the complexities of Kubernetes deployments anyway. Hopefully Uber ab…
The other "leak" in these abstractions that arises from physical limits is performance, especially when it comes to IO. This is a major problem for databases and ultimately makes database "portability"/fault tolerance tricky since they work best with direct-attach storage that's inherently bound to a single physical machine.
I don’t know if we can truly abstract away the underlying system. The best we can do is give a best effort approximation that works in most cases, but explicitly call out the limits when they are reached.
I suspect that this is just the bubbling up of the underlying physics limitation of having limited resources where compute is run.
Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos
#80Earlier quoted context omitted.
In 5 years... "We've discovered a new paradigm for efficiently carving up and distributing computational units for our application. We call it, nanofunctions."
Later "Lowering cost and dramatically reducing complexity with nanofunctions running on monoecosystem".
I'm currently trying to get out of the industry because I'm drowning in architectural bullshit like this constantly. It is pedalled by snakes, bastards and wankers who care nothing for solving problems but want to create new ones.