Live data from Hacker News

Devpod: Remote development environment at Uber

uber.com

61–70 of 235 posts

Re: Devpod: Remote development environment at Uber

#61

We are moving to such cloud environment, and it makes me sick. Maybe you need to dockerise Mongo, MySql and 5 other dependencies - I can get this, but I don't get it why the rest the code should still be running in the cloud. Python, Rails, Node? Why? Developers should be able to run 1 shell commands to install node. Dev experience excuses are just excuses for a bad setup. So, fix your setup, please. Not being able t…

Same here. We have a similar setup as described in this article. But they also issued me a 16-core workstation with 64 GB of RAM! Like just let me use my hardware goddammit.

Re: Devpod: Remote development environment at Uber

#62
I've tried to setup this up at a small tech company pre-kubernetes and there were a lot of challenges...

* low utilization, so you need to auto-shutdown or auto-scale down systems but sometimes jobs did need to run overnight or on the weekend so you needed an interface/user training to avoid upsetting users/killing their jobs.

* local hardware is cheap and powerful - employees are already issued really powerful laptops and some teams just went out and bought their own really, really powerful workstations. It is hard for the 'cloud' to compete with this.

* bin-packing workloads was hard, Kubernetes probably solves this better.

* fast-customization was hard, we had docker but it was hard to train users to update/fork the dockerfiles to keep the environment reproducible. A lot of users were more scientists than engineers and so weren't great at using version control.

* persistence / shared-storage IOPs are expensive - shared storage is a nice to have and a number of teams made a lot of use of it, it also made it easy to migrate users around but it's expensive. Local disks were also very painful/slow/buggy to deattach/reattach (maybe this is better now).

* latency - we needed instances close to our team and at the time the metro clusters near us were like second class with low capacity and limited features.

* specialty hardware like GPUs

* multiple paradigms, we also needed long running dev/staging environments, spark clusters, or other software, some managed or licensed to run in specific way, and it was hard to get these all managed the same way, clustered on the same nodes without introducing other issues - but w/out this costs would spiral. Again now that kubernetes is like the defacto cluster manager this might be easier now.

Re: Devpod: Remote development environment at Uber

#63

We are moving to such cloud environment, and it makes me sick. Maybe you need to dockerise Mongo, MySql and 5 other dependencies - I can get this, but I don't get it why the rest the code should still be running in the cloud. Python, Rails, Node? Why? Developers should be able to run 1 shell commands to install node. Dev experience excuses are just excuses for a bad setup. So, fix your setup, please. Not being able t…

I think you’re overlooking the beginning of this article where they specifically call out the use-case is moving towards their monorepo(s). Do you really think all of Uber’s source could be built and rebuilt continuously on one developer laptop while keeping pace with organization-wide releases? It’s one thing to build a sub module or a few modules locally, but they’re specifically talking about the efficiencies gained through caching ALL build artifacts, source code, and leveraging data locality to place an otherwise inordinate amount of compute power in the hands of developers to do as they please.

Re: Devpod: Remote development environment at Uber

#64
post #56

Can someone explain the rationale behind switching to a monorepo? I just don't get it. Does it mean also having a single unified production environment build? I have been managing a stack composed of 500+ repositories, communicating through webservices, files and ABIs for many years now, and never quite hit much of the issues cited as reasons to switch to monorepos. Having multiple small independent environments for…

At large companies with developer experience teams, it can be nice. You setup a singular repo (or even several), use a cross-language and cross-platform build system, and you can get a lot of gains. You can make sweeping code mods too and update your customer’s libraries for them.

It makes working in all the languages mostly consistent, and provides a nice platform for optimizations like only testing code which changed.

I think the mistake is smaller companies adopting it without understanding the large amount of investment it requires. If you have a mono-repo mostly in one language, and you hire someone who is going to work in another language then you could be in for a world of pain. Unless you resource the language support.

Re: Devpod: Remote development environment at Uber

#65
post #59
post #56

Can someone explain the rationale behind switching to a monorepo? I just don't get it. Does it mean also having a single unified production environment build? I have been managing a stack composed of 500+ repositories, communicating through webservices, files and ABIs for many years now, and never quite hit much of the issues cited as reasons to switch to monorepos. Having multiple small independent environments for…

How many people are in your organization?

People seem to conflate a monorepo with having everything else the same as well, just because that's how Google and other BigCos do it. You don't have to.

At some level a monorepo is just a way to stick all your code in one giant directory and manage it all under one VCS repository.

You could still do separate build tools per project, separate vendoring if you really wanted and so on.

However you may find that being able to simply import other first party code by path instead of doing some cross repo dependency process is a massive win.

Edit: apologies, this was meant to be a reply to the top level comment.

Re: Devpod: Remote development environment at Uber

#67
post #27

Earlier quoted context omitted.

The contrast between the Uber and Google setups would be twofold. Google engineers weren't doing local builds anyway (unless they intentionally inflicted those upon themselves) because of Forge. The Forge builders already had 10000 CPU cores in 2010[1]. You can probably imagine how many cores Forge or its equivalent has today. Secondly Google doesn't suffer from the performance problems of a weird freeware VCS, becau…

Google contains multitudes. Android, Chrome, and ChromeOS are examples of large Google projects that do not use Perforce and are routinely built locally.

Local-ish. (at least) Chromium is built by Googlers w/ the aide of goma, basically a distcc[1].

[1] https://chromium.googlesource.com/chromium/src/+/778a7e84f65...

Re: Devpod: Remote development environment at Uber

#68

We are moving to such cloud environment, and it makes me sick. Maybe you need to dockerise Mongo, MySql and 5 other dependencies - I can get this, but I don't get it why the rest the code should still be running in the cloud. Python, Rails, Node? Why? Developers should be able to run 1 shell commands to install node. Dev experience excuses are just excuses for a bad setup. So, fix your setup, please. Not being able t…

It's one thing to "develop" in vim over a slow ssh session or VNC. The latency makes that very annoying.

But we're at the point where we can still have a lot of analysis on the machine, and offload the slow analysis and building onto a more powerful computer, so that remote development is faster even with latency. And also getting to the point where internet connectivity is really fast so latency is low.

Like with most systems, the important part of remote development is that it's done well. And it seems like most employees are comfortable with Uber's setup.

Although, I do have to say that most companies really shouldn't use remote development, only if they have some excuse like they're Uber sized so that the benefits outweigh the costs. I've done remote work at uni, and they're servers and integrations aren't nearly as good so it's a chore; it's faster to use Mutagen and just develop locally then build/deploy remotely.

Re: Devpod: Remote development environment at Uber

#70
post #27

Earlier quoted context omitted.

The contrast between the Uber and Google setups would be twofold. Google engineers weren't doing local builds anyway (unless they intentionally inflicted those upon themselves) because of Forge. The Forge builders already had 10000 CPU cores in 2010[1]. You can probably imagine how many cores Forge or its equivalent has today. Secondly Google doesn't suffer from the performance problems of a weird freeware VCS, becau…

Google contains multitudes. Android, Chrome, and ChromeOS are examples of large Google projects that do not use Perforce and are routinely built locally.

Chrome, at least, is typically built in the cloud (I don't know about Android, though it would be weird for it to be the only major project that doesn't do this). It's not just that you can have beefier machines in the cloud (though that's a factor); it's also that you can have a shared cache of build artifacts for all your users, which makes most workflows a lot faster. See documentation: https://chromium.googlesource.com/infra/goma/client/
Post reply on HN