Skip to the content.

Cloud Native

What is Cloud Native

Cloud Native is a solution which allows organizations to run scalable applications in the Cloud. Technologies being used include:

Decoupled Applications

In cloud native environments, applications are decoupled so that each applications have no direct relations with the underlying servers. Decoupled applications are also generic and have no site-specific information.

Serverless Computing

“Serverless” means that the developers doesn’t have to worry about the infrastructure. The cloud providers can take care of the underlying resource and all the developers need to do is to provide the code.

Cloud providers also provides serverless computing through what is known as Functions as a Service (FaaS). In this deployment model, developers just needs to deliver the software package in the right format to run their application in the cloud.

An add-on that is mostly used with serverless computing is Knative.

Scalability

Scalability refers to the option to increase capacity when needed. Cloud applications can be scaled manually or automatically. This ensures that the applications are resiient and highly available.

In order to perform automated scaling, the system has to meet a few requirements:

Microservices

Cloud-native applications are microservices-oriented which means the application is offered as different components that are independently developed.

To ensure that applications are suited for cloud-native environments, we often refer to the 12-factor application model.

Twelve-Factor App

The 12-factor app is a software development methodology for building applications that:

The 12 Factoes are:

  1. Codebase One codebase that is tracked in version code.

    • Git
    • declarative code
    • Dockerfile
  2. Dependencies Explicitly declare and isolate dependencies.

    • Kubernetes probes
    • Init containers
  3. Config Configuration needs to be stored in the environment.

    • ConfigMap
    • Secrets
  4. Backing Services Treat backing services as attached resources.

    • Service resources
    • Pluggable networking
  5. Build, release, run Strictly separate build and run stages.

    • CI/CD
    • S2I
    • Git branches
    • Helm
  6. Processes Execute the app as one or more stateless processes.

    • Microservices
    • Linux Kernel namespaces
  7. Port Binding Export services via port binding.

    • Kubernetes Services
    • Routes
  8. Concurrency Scale out via the process model.

    • Kubernetes ReplicaSets
  9. Disposability Maximize robustness with fast startup and graceful shutdown.

    • Kubernetes probes
  10. Dev/prod Parity Keep development, staging, and production as similar as possible.

    • Containers
  11. Logs Treat logs as event streams. Logs are stored in the orchestration layer.

    • SIEM for Log collection
  12. Admin Proceses Run management tasks as one-off processes.

    • Ansible playbooks
    • Kubernetes jobs

Standards in Cloud Native

Open standards are used in cloud native computing to ensure interoperability between the applications. Most of the standards are based open source which allows anyone to participate in developing the resulting software and prevents vendor lock-in.

Some important specifications defined by OCI:

Beside the OCI, there are also other standards:

Cloud Native Computing Foundation

Cloud Native Computing Foundation (CNCF) is a Linux Foundation project which hosts different projects relevant for cloud native. The project undergoes three different phases:

As mentioned, the CNCF has a Technical Oversight Committee which is a central role.

The Minimal Viable Governance means that the CNCF projects are self-governing and community owned projects. The guidelines on how to implement governance is provided by the CNCF.

Resources