I’m playing around with hosting options in Azure. Hosting on-prem is straight-forward, but is there a “go-to” option folks do in Azure?
Loaded question. What’s the best icecream flavour?
It depends on what your’e building. Azure App Service is popular. When there’s a need to migrate Windows Services with web, Azure WebJobs are handy. VMs are still a thing. So are Cloud Services that despite Microsoft attempt to bury those are alive and kicking. Service Fabric is a beast if you have that kind of project size, with Service Fabric Mesh rising its head to give it some competition when it comes to customers that want to delegate infrastructure and cluster headaches to someone else. Some even leverage Azure Functions, in very small/constrained capacities.
To sum it up - it depends
Well I was hoping it was like ice cream.
Azure App Service -> aren’t these for web applications? What would it mean to host what used to be a Windows Service like this?
Azure WebJobs -> aren’t these associated with an App Service? I have to create an App Service and then create a WebJob?
Cloud Services -> these look dead, they don’t support .NET Core. Wonky.
Service Fabric -> good god these look complicated to set up
Service Fabric Mesh -> in public preview but these look far more in line with NServiceBus’s autonomous components than the others
Is that about right? So nothing nearly as simple as the on-prem, install as a Windows Service option?
You would add WebJobs to the mix as they’d run under App Service as well.
You’re an MVP, right? You know what door to knock for this one.
I’m with you. That’s why there’s a Mesh.
You are correct sir.
We’re in the Cloud environment now. Nothing is simple anymore… I wonder myself if there’d be something. Today, Functions are pitched by Microsoft as that option.
Yes, there is: That is a Virtual Machine. It will give you the same experience than on-prem.
But once in Azure, I’d say you should look for something better than on-prem, not the same.
One solution not mentioned yet is Virtual Machine Scale Sets. VMSSs are a layer on top of VMs. It allows you to manage a collection of cloned VMs. So, what you can do is create a template for a VM (size, OS and apps to be installed, like your Windows Services) and create a number VMs. The best part is that you can easily create rules to scale in or out the set, like by queue length, CPU, etc.
You could also create multiple VMSSs for different groups of services with different hardware and scaling requirements.
And if your setup gets complicated, the you should move to Service Fabric. SF, among other things, controls VMSSs (node types) and instead of creating templates to install apps on the VMs, SF takes care of it, allowing you to control where to install (node type) and how many instances of each service you need.
You don’t have to use reliable services with SF, you can simply use console applications (guest executables), so you can migrate to SF with minimal code changes.
While not exactly PAAS, we are quite happy so far with hosting endpoints in docker containers. And if hosted on a managed container orchestrator, it almost feels like PAAS.
I think that’s why we’ll look deeper into Service Mesh too. It looks like all the other PaaS options don’t really make things easier. Azure App Service benefits from having so much tooling support (VS and Kudu).
We are on Service Fabric and are very interested in Mesh too. It should make things much easier for us.