Skip to content

DevOps in the Cloud

The variety of offerings

Several possible options...

You will notice that up until now, we have focused on DevOps either in a VM context, a Docker context, or a Kubernetes context.

To deploy an application, we can also hybridize the offerings with several possible choices:

  • IaaS where we will have VMs with complete control.
  • CaaS where we will deploy containers.
  • PaaS where we will provide the application code.
  • FaaS where we will provide simple functions.
  • SaaS where we will have ready-to-use services.

Which offering to choose?

It is not easy to answer this question in absolute terms. It seems reasonable to deal with each case individually depending on the nature of the application's services.

Case of storage services

For example, for storage services such as PostgreSQL, it may be relevant to choose between an IaaS or SaaS approach (e.g., PostgreSQL managed by the host) unless you have disposable data (broadcast database) or absolute mastery of Kubernetes.

By deploying storage services upstream of application deployment:

  • Application services become stateless (they are externalized to storage services)
  • The burden of deploying applications is lightened (storage services become managed services from the developers' perspective)
  • It is simpler to implement backup and disaster recovery plans

Case of application services

The choice can then be made between FaaS, PaaS, and CaaS for application services depending on their complexity.

The variety of support services

Support services depending on providers

Depending on the hosts, we will not have the same support services for example for:

  • User management and their infrastructure management rights (IAM)
  • Application log management
  • System monitoring
  • Cost control (projects, labels, quotas,...)

Furthermore, some offerings will be more "turnkey" than others (e.g., pre-configured log collection), which will imply a variable implementation complexity depending on the host.

Many complementary solutions available

We will notice with landscape.cncf.io that we will have many cloud ready solutions to rely on to build our cloud hosting zone.

We will agree that this abundance of solutions will not make it easy to choose a solution to address a problem.

Automation with Terraform

We will rely on the mborne/gke-playground repository to illustrate Terraform's ability to automate the management of several types of resources with potentially multiple providers.

We will also inspect Google Kubernetes Engine (GKE) where we will find several pre-configured elements:

  • IAM-based authentication
  • Log retrieval
  • System metrics retrieval

Making your applications cloud ready

At the application level, respecting the 12 factors highlighted by Heroku will be a good starting point for:

  • Easily deploying an application
  • Adapting the infrastructure to the load
  • Facilitating operations
  • Freely choosing the hosting mode

For new applications, it will be interesting to be aware of these design rules from the outset. For others, it will be interesting to gradually move towards this ideal.