
If you want your cloud provider should take more responsibility and you can focus on your core business (code), in this case, the first thing that comes in mind is PaaS.
PaaS is great, you just have to manage your code, that is what your core expertise is. Cloud provider is responsible for almost everything else.
PaaS, as defined by NIST, is:
“ The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.”
Cloud providers come with an approach that how to run the application on PaaS to get maximum benefit, the most discussed approach is the 12-factor approach referred by Cloud Foundry. After going through all the benefits of the PaaS, a strong opinion about PaaS builds up in mind and feel like this is the best solution for deploying the application without any overhead. This is true if you are developing a new application from scratch. This is most suited to the web application or mobile application you are planning to build.
If you already have an application running on your hardware and you are planning to move to the cloud, in that case, is PaaS a good option? You have analyzed effort of refactoring and you are ready to do refactoring of your application to move it to PaaS. But you want to try first and you are not sure which cloud provider you will choose, that could be AWS, Azure, IBM, GCP or any other cloud. In that case, you have to evaluate the cloud platform and decide cloud vendor first before start refactoring.
You have decided to use third-party PaaS like Cloud Foundry or Openshift, so that you may be open for any cloud vendor. By using independent open source PaaS, you will have the flexibility to move your application to any underline IaaS provided by public cloud vendor or own infrastructure that is a private cloud. In this case, you are not locking with any IaaS, but you may still have possibly getting locked with vendors like Cloud Foundry or Openshift.
To move existing applications to cloud with minimum infrastructure responsibility, Managed Kubernetes is the best solution. Kubernetes is an open source system for automating deployment, scaling, and management of containerized applications. Managed Kubernetes is a managed service that managed nodes (Instances) of the cluster where containers are running inside pods. Kubernetes can scale without having much burden on the ops team. Kubernetes is a management framework for the container in an IaaS, and Managed Kubernetes is a managed service that allows the user to deploy their code in a container in the provided platform by cloud vendors.
Managed Kubernetes is a “Kubernetes as a Service” that simplifies deployment and you can focus on development. Fully managed Kubernetes is being provided by almost all cloud vendor, as this is an open source solution, you can switch to any vendor any time without any issue.
Figure: Amazon EKS
Managed Kubernetes Service advantage:
- You can focus on your core business.
- You will not run your application in underlying VM using PaaS, instead, you will run your application in containers using Kubernetes service.
- Managed Kubernetes service can run on your on-premises, any public cloud, the mix of public and private cloud.
- It can run on your laptop, on your data center, and on the public cloud.
- Self-healing infrastructure.
- No vendor lock-in traps.
- Easy audit and log aggregation.
- It provides one-click deployment similar to PaaS (or can be deployed with one command).
There are many hosted solutions available for Managed Kubernetes Engine, some of them are:
- Amazon Elastic Container Service for Kubernetes (EKS).
- Azure Kubernetes Service
- IBM Cloud Kubernetes Service
- VMware Cloud PKS
- Google Kubernetes Engine
- DigitalOcean Kubernetes
- Oracle Container Engine for Kubernetes
