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.
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
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 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