Live data from Hacker News

Devpod: Remote development environment at Uber

uber.com

181–190 of 235 posts

Re: Devpod: Remote development environment at Uber

#181
post #154

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

Yeah I can't really get beyond this thing about how powerful our machines on our desk are compared to what hosting providers charge if you have 12 months utilization (I get people in SV change jobs every 6 months but). I guess the thing that makes this make sense for Uber is the ginormous repo? This probably is a good "big ball of mud" solution to a bazillion tiny projects, each with varying degrees of documentation…

When your app is really 50 microservices, or one really big monolith, there's no great way to run it locally. And if you have one single job that takes up more RAM than you have, or requires tons of parallel CPU, the laptop is a bottleneck. And heaven forbid your corporate overlords saddle you with horrible virus-scanning crap or mandatory HTTP proxies with custom certs...

A lot of this will be solved if the people making our OSes ever decide to build a real distributed OS (either SSI or something more like P9). The OS is supposed to make programs easier. Why we keep trying to reinvent the wheel inside every application, and tie them together with duct tape, I don't know.

Re: Devpod: Remote development environment at Uber

#183
post #48

Earlier quoted context omitted.

It had some good ideas, but that was the extent of it. Every iteration of the solution since then has agreed that streaming all application UI is always going to be janky and needless. It's a lot better to host the data on the server side and let the client handle visual rendering by itself.

These days lots of people stream games and CAD sessions over the internet using software like parsec. It works quite well and is often better than the UI running locally on an underpowered GPU.

I have streamed my worksession with nomachine and I have used VS code remote. nomachine is really good, but I would still prefer to have a beefy enough machine.

Re: Devpod: Remote development environment at Uber

#185

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…

How do you run a job that requires 64GB of RAM and dies when you run out of memory? Or is very CPU intense and takes 3 days on your laptop? If you test it in CI, how long is the dev cycle waiting for your CI to run? What if every dev ends up with slightly different local env that creates different build deps, that turn into test differences? How do you connect the cloud stuff to the non-cloud stuff without running into yet more complexity trying to connect them together?

Re: Devpod: Remote development environment at Uber

#186
post #35

Earlier quoted context omitted.

> Why? Three reasons from my perspective: 1) There's no setup steps. You just open your editor of choice and everything is set up for you. All the build tools, linters, specific versions of software $XYZ, etc. 2) Large VM (16 core, 96GB of RAM in my case) speeds builds and tests up dramatically. 3) Zero productivity lost if your laptop breaks. Just grab a new one from IT and you're up and running exactly where you le…

I don't see #1 happening. There is no way anyone has my personally customized development setup in some VM ready to use. More likely it is going to be one common setup that they want everyone to use.

Ever seen Google Cloud Shell? Setup your own local install of software and configuration, it persists on disk.

Re: Devpod: Remote development environment at Uber

#188
post #75

Earlier quoted context omitted.

I maintain the web monorepo at Uber, so I think I can give some context. Monorepos allows us to centralize important dependency upgrades. E.g. fixing log4j vulns is a lot easier when you can patch everything simultaneously. Same for tzdata (2022g gave very little heads up) Auditing for npm supply chain attacks was a lot simpler in monorepo than microrepos. Etc. Monolithic version control doesn't have to mean monolith…

Thanks for your answer. How does CI work in practice? how do you avoid rebuilding and retesting the whole repo at every change? That would be an insane waste of resource and time.

Monorepos makes the dev experience simpler, at the expense of more complex CI

I was resistant at first, but have found it to be a worthwhile trade-off

Re: Devpod: Remote development environment at Uber

#189

Earlier quoted context omitted.

I don't see #1 happening. There is no way anyone has my personally customized development setup in some VM ready to use. More likely it is going to be one common setup that they want everyone to use.

> my personally customized development setup Why would your personally customized development setup even need to be on the remote host? You pop up your IDE, connect to the remote host via SSH and you are set.

Also most “personally customized “ environments can be copied around with 1 config file or a few dot files at this point

Re: Devpod: Remote development environment at Uber

#190
Off-topic question: What are 70 Mio. code lines for? I mean, yeah, there are some services like Uber, Uber eats, but gosh, 70 Mio.? I have worked on very sophisticated products with a bit more than 1 Mio. LOC... Do I miss something in Uber apps and services?
Post reply on HN