Various building blocks of cloud native application:
-
Infrastructure
The base of cloud native foundation is infrastructure, which provides compute, storage, network & operating system usually provided by the Cloud (AWS, GCP, Azure, OCI, Openstack, VMware).
-
Provisioning
The provisioning layer consists of automation tools that help automate and provision the infrastructure using code. Managing images, environments and the code to deploy to multi-cloud infrastructure. Tools such as Terraform, Ansible, Cloudformation may help workflows to provision infrastructure. For eg., Twistlock, Clair can provide the capability to secure your environment by hardening the container images.
-
Runtime
Container engines provides runtime environment for cloud native solutions. These can be containerd or docker or podman running in virtual environment. Storage associated can be also provisioned using software storage or software network.
-
Orchestration and Management
Tools like kubernetes or flavor of k8s such as openshift allow easy scheduling of orchestration of containers across multiple hosts. Discovery of these services is critical in the event of failure or when zero downtime deployments are necessary. For eg., Consul provide service registries and also act as service mesh for container orchestrators.
-
Application code and development
We could build business applications using microservice framework. These applications needs to be shipped and packaged using image management so that the CICD pipeline can version and publish changes to image registry for successful and painless deployment.
-
Monitoring, logging, tracing and Auditing
All applications need proper telemetry in place. These loosely coupled microservice stack needs to be monitored. Various tooling are in place that supports each of these capability.