Azure VMs, App Services and Me

When I originally migrated Poller to a Virtual Machine on the cloud, the process was simple and straightforward: Install the services manually, install a database, open the ports so that clients would be able to access the information, and set up a URL that will redirect to that VM. Everything was set for the demo. Then… Lockdown.

I’ve taken up two Lockdown projects: Convert VHS to Digital (I got to see my wife’s first steps!) and Embracing the Cloud. Here I will talk about the latter.

Embracing the cloud

Using a Virtual Machine is cheating when talking about cloud services. So I decide to use App Services. An App Service allows me to have a web service (application or API) without having to worry about infrastructure or servers. This is like heaven for any developer because we hate having to deal with hardware. I had a few challenges to overcome:

  1. Share App Services among clients,
  2. moving to an Azure Database
  3. Authentication and Authorization,
  4. Replacing an open-source dashboard named Grafana.

Over the next few weeks, I’ll be posting in more detail how each challenge was tackled (or will be, I’m still not done), otherwise, this would be a longer, more technical post.

Pricing: VMs vs AppServices

One thing I can quickly mention is the price difference. Azure VMs come in many different varieties each one with a related hourly cost. There is a setting to turn off after some time of being idle or it can be turned off manually to save cost, but as long as it’s “on” the price per hour will be the same.

On the other hand, an App Service cost comes with usage, so even if the AppService is on, if it’s not being used, you don’t have to pay; with App Services you pay per actual usage.

By making this change, I ended up saving around $40 a month while in “Dev”. The savings will be once I hit production, but will still be significant.

Next up I’ll talk about what I needed to change in the code to get it into App Services.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *