Working in Virtual Machines: Parallels and Azure
My employer has a “bring your own device” policy, so each consultant, for the most part, owns their own hardware. There are pros and cons to this, especially when it comes to corporate security initiatives and the things they want us to do on hardware they don’t own. There’s been talk about changing it, but I actually like being able to decide what I work on. No way am I going to skimp on a laptop or pick a nasty piece of hardware if I’m paying.
I work almost exclusively on a Mac; I have a 15” 2018 MBP with an Intel chip, and I recently picked up one of the new 16” M3 MBPs. I like MacOS and the Apple ecosystem, but I also have a nice Windows-based gaming PC because for as nice as the Apple hardware is, many/most games won’t run on MacOS. I don’t use the gaming machine for work except in the rarest of occasions. Over the past couple years, I have had a couple projects that required Windows, and that work was done in an Azure-based VM or in Parallels on my Mac.
Working in virtual machines isn’t bad, but there are pros and cons.
The new gig
I’m currently onboarding and going through some training for the new gig I started last week. I realized a few days ago that I will, in fact, need Windows for the development work, but thankfully, my day-to-day interactions with the team can be done on my Mac.
I already had a Windows VM running in Parallels on my new Mac, so that’s my starting point. I’ve talked to the managers on the project and I may eventually move to an Azure-based VM, but for now, I’m moving ahead with Parallels.
Windows in Parallels
Parallels has been my go-to virtualization tool on the Mac since 2018, and has made it extremely simple to have Windows and Linux running without needing dedicated hardware.
The cost has risen over the years from $105.00 in 2018 to $127.19 in 2023. What sucks is that it’s per machine, so I can’t share the license between my two MBPs. I mean, I get it, but for that kind of money, a shared license would be awesome.
Installing Windows 11 was extremely easy - I didn’t have to go hunting for an image which was a bonus.
Once it was installed, all I needed to do was grab a key from my MSDN account to activate my copy. I have it set up to share Mac folders with Windows to make life easier.
With the default settings, the VM has 4 CPUs and 8GB of RAM. I also gave it 250 GB of disk space, plenty to do development work in.
Parallels Pros
The biggest pro is that I’m not going over the internet to connect to a VM; it’s running locally. It uses shared networking, so as long as my Mac has connectivity, the VM has connectivity.
Parallels Cons
It’s on a dedicated machine, so if anything happens to my laptop and I haven’t backed up the VM to an external drive, I’m kinda screwed.
It’s a yearly cost.
Backing up the VM can be a pain.
I can’t connect to it from other machines as easily as I can connect to a cloud VM. Not that it’s impossible, it’s just not as simple.
Having a running VM will impact battery life.
Azure VMs for Development
If I had a preference, it would almost certainly be using an Azure VM, only because of the global access.
Pros
The benefits of an Azure-based VM is that it can be accessed from anywhere that has an RDP client, and I find that really convenient. I could be on the couch with one of my Macs and work just as easily as I could from a Windows machine, or if times were desperate, from my iPad.
It’s nice because all of the work for a client can be isolated from anything else, and once a project is done done, the VM can be shut down and eventually deleted.
Backing up isn’t an issue.
Azure VM Cons
The biggest downside of an Azure-based VM is obviously the cost, but I did have a client last year who willing to pay, and the team made the best of it.
Don’t forget to turn the thing off when you’re not using it!
The second biggest downside I can think is the times when access to the internet is either really bad, or potentially non-existent. I did a fair bit of work from the car during that project while my wife drove us to Michigan and back several times. I tethered my Mac to my iPhone and everything was fine until it wasn’t.
The other downside I can think of is if someone else creates it, but uses one of the lower-end, underpowered SKUs to save a few bucks, life could suck for a developer.
Final Thoughts
Short of having a dedicated computer running Windows, the next best thing is a virtual machine. There are plenty of options and I’ve described a couple of them here. I’m still unsure what I’ll end up doing for this new gig; hell, for all I know, the client will send me a Windows laptop to remove any potential flakiness of working in a VM. That would be an acceptable solution, although my wife did ask me where I’d put it if that happened.
Comments