Smarter ideas worth writing about.

Deployment and Hosting Options for App Modernization

As we continue to dive deeper into App Modernization efforts, I’ll outline the various options for deploying and hosting your apps. Particularly from the perspective of my cloud/Azure focus, there are many options for how you host your applications these days. Of course for all of those who are still deploying to bare metal or VMs on-prem, well, that’s one option. But don’t despair – you have some other options as well.

  • On-Prem
  • Sticking with the potential for deploying on-prem, you could also move your apps/services into containers and host them in Kubernetes, or for a simpler option, in Red Hat’s Open Shift. And still another option for modernizing and hosting your apps on-prem is Azure Service Fabric, which leverages a microservices framework to host apps/service within Service Fabric clusters, whether on-prem on in the cloud. Service Fabric even supports container-based deployments, which is now my preferred approach on Service Fabric

  • IaaS
  • Moving away from on-prem and into the cloud, it’s no surprise that the list of options grows. If you’re looking to start with an option that’s very similar to on-prem, you can simply deploy your apps to VMs in the cloud, otherwise known as IaaS (Infrastructure as a Service). While many companies take this approach to “lift and shift” their apps to the cloud, there are really better options in the long run.

  • App Service
  • One cloud-native option that I often refer to as the Easy Button for cloud app deployments is Microsoft Azure’s App Service. It is an extremely easy way to host apps in the cloud. Microsoft manages the nodes (VMs) for you, giving you plentiful options for configuring the nodes. You simply deploy your apps to App Service, and it stands up instances on each node (unless you deploy an app as a singleton). That brief description doesn’t give App Service the credit it deserves, because it is a very feature-rich service. The big limitation from a hosting standpoint, however, is that its deployment model allows you to deploy one instance of each of your apps to each App Service node. As such, it’s less flexible from a scaling perspective. You can work your way around that limitation if you really want, but that’s no longer the Easy Button. FWIW, App Service can also host containers, although you’re limited to one instance of each container per node.

  • Service Fabric or Service Fabric Mesh
  • I already mentioned Service Fabric above, how it’s available both on-prem and in the cloud, and how you can use its framework to host native Service Fabric services or even containers. One additional option in the cloud, however, *will* be Service Fabric Mesh, which as of this writing is in preview. With Service Fabric mesh, Azure manages your nodes for you. All you need to do is specify how many nodes you want, pick the VM sizes, and select Windows and/or Linux. This sounds like an awesome option!

    With Service Fabric, I personally prefer the container-based approach vs. using the Service Fabric framework. Using the Service Fabric framework can feel heavy handed, requiring you to pull in Service Fabric dependencies throughout most of your application. With the container-based approach, however, you can choose to pull in specific Service Fabric dependencies if and when you want; otherwise, you’re free to build your app as you’d like.

  • Kubernetes / OpenShift
  • Kubernetes and OpenShift are great options for hosting your modern apps. We already discussed the learning curve with using container-based approaches, and there’s also a significant learning curve with standing up and managing a Kubernetes cluster. But there are options to make life easier like OpenShift, as well as Rancher and Tectonic. But once your development and Ops teams (or even better, your DevOps team!) have wrapped their heads around containers and Kubernetes, life is good! Like Service Fabric, Kubernetes does a great job of managing your apps and your cluster autonomously .

  • Serverless
  • Serverless computing is a pretty hot topic these days. Build and deploy apps but don’t worry about the compute – let your cloud provider worry about that. It feels like a SaaS offering for running your apps. Within Azure we’re talking about Azure Functions and Logic Apps, with support from many other offerings like CosmosDB and Event Grid. There’s even a cloud agnostic, open source serverless platform that you can leverage if you’d like.

    I wouldn’t consider serverless options as the go-to way to deploy and host your modern apps just yet. It’s still early days, and for now they’re most commonly used for utility services, but it’s a topic worth tracking to see how things play out.

Up Next: Recommendations to Minimize Risk During App Modernization


About The Author

National Azure Solution Manager

Vince is a National Azure Solution Manager based out of Cardinal's Columbus office. He helps companies across the U.S. succeed in moving to the cloud – specifically Azure – with a particular focus on App Modernization, DevOps, and IoT. He loves building and fixing things, and working with teams to achieve success. For over 25 years, Vince has been applying those passions to the IT industry. As a former certified trainer he has enjoyed training hundreds of students, and is active in the community presenting technology topics at IT conferences and user groups. For the last 15 years, Vince has specialized in Microsoft’s technology stack and is always striving to learn more effective ways to build applications that solve challenging IT problems. While work is his main hobby, Vince also enjoys bicycling, hiking, and traveling with his family.