I've used cloud dev envs for going on 6 years now, and I'm ready to call them the best tool I've ever used for development. Not by a little bit, but by a wide margin. And because I just can't help myself, I'm going to try and convince some of you that you should give them a try.
Now, I know that most people are resistant to the idea of developing anywhere but on their local machines. I never have to argue with any dev about say, deploying a production app with docker onto Heroku. But if I try to convince someone that we should have those same benefits for our dev envs, there's a disconnect. All I'm asking is that you give this idea a chance, I think it might change the way you develop and make you a happier dev.
These days, you would never setup your own bare metal server without a very good reason, right? You'd use AWS, Heroku, or some other VPS provider. But for some reason most of us still do that for our local development. I got tired of polluting my physical machine with dev tools, half forgotten hacks, and databases. I've used vagrant, docker, etc. to try to contain and manage them, but it always feels like I'm just adding one more layer of "things I'll need to configure and debug at some point", rather than reducing the cruft.
I've never been able to achieve this, even with docker running locally. There's always something that complicates things. With cloud environments I can clone or create a template from projects - with or without state - in literally a click or two. Why would you want that? Well, it's incredibly nice to be able to clone temporarily and test something out that requires some state (wordpress anyone?). Sometimes I clone it just to test out updating dependencies. It's also really nice to have some starter template envs to speed up the start of a project, like I often use for Laravel and Elixir Phoenix projects. As a freelancer, the time saved from this literally converts directly into income for me.
This might not be a big deal for everyone, but it is for me. I develop on both my desktop (mainly) and my laptop. When I get up from my desktop and get on my laptop, my dev environments are all there waiting and ready to go on my laptop because they're the same. It also means that I can dev on almost any level of hardware. A cheap chromebook will do, or even my phone when I'm in a pinch (and on vacation). Personally this is one that I feel like you need to experience at least once to truly appreciate it. It feels like switching from local email to Gmail back in the day.
The "it works on my machine" problem largely goes away with cloud dev envs. It reduces the configuration differences (all of you can use the same template), and even if you do find a problem unique to your env, you can give them temporary access remotely to sort it out with you. In my case, whenever I need to work with other freelance devs, or contract something out, I just clone my workspace and give them access, in about 30 seconds.
Most of the cloud dev options out there will give you some form of a public URL automatically per project. The best will let you use custom domains, subdomains, and any ports you'd like, and often it's offered by default, or configured with a few clicks. They almost always include lets encrypt SSL certs too. Never worry about configuring networking for localhost, or localhost specific issues ever again. I use this every single day, for previewing my work, and for demoing with clients. It's like having all the benefits of production but in my dev env.
Now, if you're tempted, there's a few cloud dev env providers out there, though not as many as I would like! They can vary in their approach quite a bit.
For ephemeral envs:
These disappear X minutes after you stop using them, and are especially great for open source work. You can spin up a PR in seconds.
I personally prefer more persistent workspaces, as I have less need for perfect consistency with other devs and persistent workspaces allow me to save a lot of time. For those you can look at:
Cloud9 (part of AWS)
This was my first cloud dev env and I fell in love with it, before it was acquired by AWS. I moved off of it after it became part of the ecosystem and lost a lot of it's convenience features (and I hate configuring things like IAMS and SAMS). It also became a per-minute cost, and ended up costing a lot more for me after that too.
This is what I use right now. It seems like it's a very small team that hasn't updated it much in a long while, but it checks all the boxes for now. I don't like the built in editor, so I just remotely connect with VS Code to workspaces, which works fine.
Okay, this one is shameless self promotion since it's being built by me. I've waited years to build this because I was hoping someone else would do a better job of checking all the boxes off for me, which just hasn't happened yet. The goal of Code Base is to be the digital ocean of cloud dev envs - easy to use, intuitive, and reasonably priced with flat rates.
I haven't tried this one, mainly because it's marketing pages explained so little the last time I checked it out. It seems like it's really geared towards teams and might be great, I just haven't checked it out personally.
Many of these have free tiers, or very cheap starter plans. I really strongly recommend giving it a try for your next project. It's low commitment, and it's genuinely changed the way I develop for the better.