Question

What are your favorite reasons to use virtual machines?

Or do you use the Linux subsytem in Windows, emulation tools like DosBOX and WINE, or mobile device emulator/simulators?

What's your favorite ways you've used virtual machines and emulation?

Mentioned
#Development #Amazon AWS #VMware
Share
jmitch's avatar
a year ago

We use WINE for compiling Yac for Windows...on a Mac. Outside of that I've never been a fan of Virtual machines. They always seemed slow, no matter what. Also take a huge amount of space on my machine. We often need a quick Windows environment for testing but I've found AWS WorkSpaces to be an amazing way to handle that. Runs in the cloud, I can access from an iPad, and it's crazy fast.

5 points
maguay's avatar
@maguay (replying to @jmitch )
a year ago

That is super cool—though I'd imagine compiling in a virtual machine is very slow.

AWS Workspaces is amazing, especially since you can pay per hour. And the latency doesn't feel much worse if any than the general slowness of a virtual machine on your local computer. That definitely feels like the future. They just need a way to spin up a Workspace with any random disk image.

1 point
getaether's avatar
a year ago

This might not be very common, but we're using virtual machines for isolating our customers from each other. To be more specific, we have a remote team collaboration app, Aether. (Shameless plug: https://aether.app) It handles a lot of the mail traffic and other types of discussion in the companies that use it: it acts as a neural ganglion to entire companies. This makes it so that we have higher than baseline security need from the start, but we also have a customer base that is more security-conscious due to industries they operate in, so it makes this extra important for us.

The reason this doesn't work with the regular SaaS model is that the regular model is multi-tenant. It's good for easy development and to make sure there's only one version of the app running. On the flip side, it's rough to secure, since the only thing that prevents one team's content from being visible in another is just your access control logic, nothing else. It's also hard to make sure everyone is getting their money's worth, especially if they have 'noisy neighbours', that steal performance from other teams.

This happens in almost all SaaS apps and is considered largely normal, but since our target audience is much more security conscious than usual, we had to find a way to both secure highly-privileged content and handle the load management.

Enter virtual machines. We designed our system in a way that makes all our paying teams essentially single-tenant. In other words, for every customer, we run a separate copy of the app service in a virtual machine with its own separate database — all our customers are in effect on-premises. Kubernetes handles the distribution of CPU resources and having separate VMs give us the ability to customise the software to each customer if needed, and that is a part of our enterprise offering. We have a hypervisor that sits on Kubernetes that generates virtual machine specs. It all ties to Stripe, so a new customer in Stripe automatically results in spawning a new virtual machine with the newest binary ready to go within a few seconds. We have also made it so that we can do automatic fleet upgrades, or even, for companies that want the stability, we can freeze their versions into a long-term-support release, for the duration of their contract.

This is also useful because it makes our on-premises set-up effectively the same as regular SaaS — because both are in fact on-premises, in a VM.

4 points
forouzani's avatar
@forouzani (replying to @getaether )
a year ago

I think using containers is the next step beyond VMs, and your application sounds like a good use case.
I have also seen containers used a lot in online editors or anywhere that code needs to be executed. To allow arbitrary code execution but mitigate security risks, you can just execute the code in its own container/VM.

1 point
nehbit's avatar
@nehbit (replying to @forouzani )
a year ago

Yeah — containers make sense in a lot of applications but there's quite a lot upfront cost in building the infrastructure for it that can reliably issue new containers on demand. For our specific high-security use case it makes sense to pay the premium, since our customers do pay us the premium for that feature. I wouldn't do this for an app that is just starting out though.

We also have containers inside containers for user-provided JS code in sandboxes, so that they can program their own triggers. 🙂

1 point
maguay's avatar
@maguay (replying to @getaether )
a year ago

Very neat that you're fully isolating companies in your product and that focused on security from the start. I would have assumed the overhead would be far too high, but sounds like your team's managed to automate it. Also fascinating how that enables you to offer older versions of your software to users if they don't want to upgrade. That's incredibly rare with SaaS, and Basecamp is one of the very few I know who keeps older versions running for customers who don't want to switch.

PS: Aether looks like a very neat idea, email crossed with a forum almost. Will have to check into that more. Would love to hear more about your team's inspiration behind the app!

1 point
maguay's avatar
a year ago

I've always had a fascination with trying out older software and tracing the roots backwards to see how software has evolved over time (and more often how history repeats itself, with today's minimal writing apps feeling more similar to early word processors than the first version of Word does to the latest).

So I keep VMware Fusion installed, typically with an up-to-date Windows and Ubuntu install, along with older OSes to test stuff out. When I used a PC, I'd even gotten OS X Leopard running in VirtualBox to test Mac software from Windows.

And for fun, here's a screenshot from a dozen or so years ago with XP, Ubuntu, and Dos running in virtual machines on Windows Vista—just about enough to freeze the computer (and max out the tiny 1GB of ram I had at the time).

ubuntu-xp-freedos-with-opengem-fliped-3-d-on-windows-vista-ultimate.jpg

2 points
maguay's avatar
@maguay (replying to @maguay )
a year ago

Oh and another amazingly fun one: Archive.org has old DOS software that you can run from your browser, including Word 5.0. So 30 years after it was released, you can emulate what was then a state-of-the-art PC in your browser.

1 point
kil0ran's avatar
a year ago

When I was a proper techie I got a Lotus Domino email server running on the original Xbox. I've got final images stored of each personal machine I've used since virtualisation became commonplace - firing up an image from my old college desktop was pretty cool. Even more impressive that it worked instantly. Currently enjoying exploring the 16-bit gaming era on a SNES Classic Mini - it's kinda cool being able to play Sonic on a Nintendo console

2 points
maguay's avatar
@maguay (replying to @kil0ran )
a year ago

Wow that's super impressive. Why did you want it on the Xbox—just to use as an always-on home server? (side note: somehow still amazes me that home servers never found a full market, and that smart TV devices ala Apple TV or game consoles like Xbox never morphed into that).

Keeping an image of every computer is quite a commitment. Running those from external hard drives I assume?

So you modified the SNES Mini to run other game ROMs?

1 point
fhiguera's avatar
a year ago

Mainly we use them for POCs with repos of really old versions of JAVA... and that's about it.

2 points
maguay's avatar
@maguay (replying to @fhiguera )
a year ago

That's a great reason to use them—similar to why I keep most old versions of Windows around to test older software when needed (and for the increasingly rare site where you need to use Internet Explorer).

1 point
JohnDav02969696's avatar
a year ago

I always have used Ubuntu in Windows, now on a Mac I use VirtualMachine occasionally, but I think this is mostly a Windows issue...? At least for me that is the case :)

1 point
maguay's avatar
@maguay (replying to @JohnDav02969696 )
a year ago

What Windows software do you typically need to use in a virtual machine?

1 point
The community for power users.