Live data from Hacker News

Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

uber.com

91–100 of 233 posts

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#91

Earlier quoted context omitted.

Deployments != unique codebases.

Try but read the full comment chain again to understand the context of our discussion.

I did. Your concern about data needing to be isolated due to regulation doesn’t require you to make a complete copy of the code.

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#92
post #33

Earlier quoted context omitted.

I've seen at least one place with many more than that in recent years. If you have one microservice "listener" per queue and another for the database processing and persistence (business logic) and another providing an API for one or more frontend UI's related to it then the microservice tally goes up very fast. It's kind of surprising to read so many comments indicating HN readers weren't aware of this.

sounds like a massive nightmare

Massive scale*

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#93

Earlier quoted context omitted.

Deployments != unique codebases.

Try but read the full comment chain again to understand the context of our discussion.

I re-read the chain and don’t follow your argument.

Do you mean that your original point was about deployments to begin with?

FWIW I work in a microservices shop for a global app in an extremely regulation heavy industry, and we run a single codebase per service, segregating regulator-imposed behaviour via flags to deployments

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#94
post #18

Earlier quoted context omitted.

I wonder what setting up a local dev instance is like for anything involving more than one or two of those.

In general in a micro service environment, you try to build things so that 1) you don't need to run other things locally, and 2) if you did need to, the services are just containers so it's pretty easy to run one. 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…

We're not big on microservices, but we do integrate with a lot of other systems.

I find the opaqueness of other services to reduce development speed quite drastically. With local code I can view both sides of the fence and easily see if I'm using it wrong or if it's a bug in my colleagues code.

Seems that if you're constantly developing against opaque services you'd end up in the same quagmire quite quickly?

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#95
post #40

Earlier 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…

Question for you: how does performance measurement and optimization work in that environment? Is the key some sort of meta tooling that understands relationships between microservices? How would you express such relationships in the first place? Q2: How do you ensure the stubbed deps behave like the real thing? Q3: how do you handle logging and metrics in an unified way across the stack? And related to this: how do y…

> how does performance measurement and optimization work in that environment?

SRE here. Generally speaking, each API or each service will have a contract that it must adhere to depending on upstream and downstream relationships and their fail safes. Each service (or API) will then load test in isolation.

After that, if you want to be really sure about regressions (which would include fail safes) you load test the whole thing put together.

> Is the key some sort of meta tooling that understands relationships between microservices?

This is quite hard to do when you have a lot of transactions. I don't think there's commodity software that does this because you'd need to configure that software to map on keys, then map those keys to services. Generally, the easiest way is to get engineering teams to declare upstreams and downstreams.

> Q2: How do you ensure the stubbed deps behave like the real thing?

Generally, generation. Something like protobuf or Open API generation will do.

> Q3: how do you handle logging and metrics in an unified way across the stack?

You issue high level standards like, "We'll use JSON logging with UTC time formatting". At the end of the day logging is very contextual and in a service ownership model the service owners are usually the ones reading and alerting on their logs.

> And related to this: how do you ever get to upgrade services crosscutting concerns that ideally are not invented in every service?

Shared dependencies. I'm not actually sure what's a cross cutting concern; generally services that are this small should be designed to operate mostly independently. They're small, but "microservices" tend to have a lot of fail safes built in. If you're referring to how do we not write 4000 config loaders then there's usually a team that builds a very generic config loader and everyone or a majority use it.

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#96
post #44

Earlier quoted context omitted.

Yup Pornhub serves much more video than Netflix and they do so without that insane amount of complexity.

Isn't pornhub free, their only monetization being ads? Also does Pornhub have personal recommendations, per country and region libraries, an android, ios and android TV apps? Probably not. That is a much easier business model and a lot lower level of complexity than Netflix. I imagine running pornhub is essentially running a large website that hosts video. Probably just the billing side of Netflix is more complicated…

[deleted]

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#97
post #2

Does Uber really need 4000 microservices?

Uber is a global company (70+ countries) operating Uber and Uber Eats. So almost certainly they are duplicating their entire stack per-country if only to get around the vastly different regulatory environments.

I'm guessing it have to do with payment processors. I remember reading an article while back about why Uber app are large (100+ MB) that most of it is related to payment processors and taxes that it is operating globally.

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#98
post #44

Earlier quoted context omitted.

Yup Pornhub serves much more video than Netflix and they do so without that insane amount of complexity.

Isn't pornhub free, their only monetization being ads? Also does Pornhub have personal recommendations, per country and region libraries, an android, ios and android TV apps? Probably not. That is a much easier business model and a lot lower level of complexity than Netflix. I imagine running pornhub is essentially running a large website that hosts video. Probably just the billing side of Netflix is more complicated…

PornHub has significantly more content than Netflix, not to mention the ability for users to upload content and have it immediately available worldwide. That alone makes it significantly more complex than Netflix.

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#99
post #37

Earlier quoted context omitted.

Yup Pornhub serves much more video than Netflix and they do so without that insane amount of complexity.

Honestly Pornhub's stack is genuinely impressive. More start-ups should just use PHP and get shit done

I think one of the reasons behind PornHub's tech stack is that their industry doesn't really lend itself to VC, so building an engineering playground for PH would be a waste of money as no amount of complexity would net them VC money (nor an invite to a cloud provider conference), where as most startups live and die based on the VC funding their complexity and buzzwords allow them to grift.

Re: Uber migrates microservices to multi-cloud platform running Kubernetes and Mesos

#100
Uber Microservices were such an inefficient PITA. There was buzzword soup of a bunch of half baked infra pieces and they were always migrating. Every part of the stack was rotten. Udeploy, xterra, tchannel, schemaless, etc etc.

My peak “wtf” moment was when we had a SEV because two services that should communicate actually used different versions of thrift, both hard forked by Uber, with different implementations for sets. Passing a set from one service to another caused everything to break.

Post reply on HN