Dissecting The Platform as a service (Paas) cloud

Dissecting The Platform as a service (Paas) cloud

Image for post

Disclaimer : This article is for informational purposes to understand how Paas clouds work under the hood. Do not build a custom Paas unless it is realy necessary

In the new edge software development world , most legacy systems are moving to the cloud very often and new systems are being architected with cloud native concepts in mind.

If you are reading this I guess you already know what cloud development is and the various cloud types and categories that are available.

Okay what is Paas is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app

As a developer all you want to do is write code for your app and go straight to production. A common quote by pivotal always say “here is my application , run it in the cloud for me I do not care how . (you realy need to care though)

Containers

We will take an example of a docker container.

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

From code to Image

Most Paas providers take the code and build a runnable container image that is then deployed to the server.

Do you ever wonder how heroku or pivotal cloudfoundry gets to know the language your code is built in , prepares an environment for it and automatically deploys it? okay ride along…

There are different technologies used to perform this for example cloud Native Buildpacks(most used), source to image (s2i) from redhat , Jib from google (java apps only) , ko from goole (go apps only)etc.

when running applications in the Paas environment , you will often just use a one line command on the CLI and wait for things to happen and in no time your app will be available online.

This is where build packs come in Buildpacks provide framework and runtime support for apps. Buildpacks typically examine your apps to determine what dependencies to download and how to configure the apps to communicate with bound services.When you push an app, an appropriate buildpack for it is detected. This buildpack is used to compile or prepare your app for launch.

Container Orchestration

Container orchestration automates the deployment, management, scaling, and networking of containers. Enterprises that need to deploy and manage hundreds or thousands of Linux® containers and hosts can benefit from container orchestration.

This is also a common topic when building a Paas since running images e.g docker images in production will always require a dedicated ops team or maybe a devOps engineer in the team. There are a tone of orchestration platforms with kubernetese from google being the most successful, other players include docker hub and aws ECS. These also come with managed services for instance EKS is an aws provision of a managed kubernetese platform

Conclusion

In this short article I tried to disect and explain the various components of a Paas , what each of them does and how they are integrated to work together. If you put all these together you will understand how say heroku manages to host different applications with completely different resource requirements.

Next Steps

There is always new things to learn and I would suggest 1. Learn how configurations e.g database and 3rd party providers come into play. 2. Infrastructure as code in the deployment cycle. 3. Security levels of the Paas or any of the cloud platforms 4. Each of the above mentioned areas can also be learned into details individually

Cheers happy coding….