What is a compute service?
It’s the hosting model on which your application runs. Any cloud provider offers a number of compute services to host your application code. All compute services, generally fall into three main categories IaaS, PaaS, and FaaS. Lets see what each category is.
Infrastructure-as-a-Service (IaaS): You provision individual Virtual Machines, Networking, and Storage. Then you deploy your application code on it. You get full access to this machines can install any SDKs, and Softwares to make your applications work. It’s very much similar to you local workstation, only difference is it’s in cloud. But it comes with several risks and challenges that will make you spend very large amount of time in managing these VMs instead of focusing on your actual application.
Platform-as-a-Service (PaaS): It provides a managed hosting environment, where you only think of deploying your application and managing the just the enthronement to make your application work without needing to manage VMs or networking resources. Examples: Azure App Service.
Functions-as-a-Service (FaaS): It’s the simplest computing model, you only worry about your code, and not hosting environment. Your cloud provider takes the responsibilities of making your application run with almost zero downtime and at any scale. Example: Azure Function
Choosing the right compute service depends on your needs, so evaluating all options is recommended. It might feel wasting time in the start, but it will help you in long term because each compute service comes with cost, time to to make it operational, and some other limits.
Also, you must know some cloud migration strategies:
Lift and shift: When migrating an existing workload to the cloud without redesigning the application or making code changes.
Cloud optimized: Sometimes you have to modify/refactor you application to take advantage of cloud-native features and capabilities.
Here is the flow diagram which will help you in deciding your compute service whether you are building a new application or migrating an existing one.