Cloud Native platform analysis of CaaS, PaaS, and Serverless. Stateful apps are tightly coupled applications (AKA) monolithic apps. Stateless apps are Loosely coupled applications (AKA) Microservices apps.
Image Credit: Navigating Application Deployment options (Daniel Krook)
- Kubernetes – Focuses on Container Runtime, Supports monolithic Stateful applications and Stateless applications (Microservices). Minimum a Single VM, or Pool of VM’s required for setting up Kubernetes (GKE from Google, ACS from Azure).
- Cloud Foundry – Focuses on Application Runtime (HTTP based applications), greenfield application deployment for stateless applications (Microservices). 50+ Core processors required to setup Pivotal Cloud Foundry in Azure. 40+ EC2 instances in AWS.
- Serverless – Event driven Applications (HTTP based applications), supports only Stateless applications [Microservices]. Apache OpenWhisk an incubating open source Serverless platform can be set up on top of Kubernetes
Note: Cloud Foundry and Kubernetes are governed as a different entity, but part of the Linux Foundation
Cloud Native = (DevOps + Continuous Delivery + Microservices + Containers)
Cloud Native Platform evolution
Cloud-native applications characteristics
- 12-factor application (Methodology/Practice for building modern, scalable, maintainable software as a service application)
- Follows a Microservices architecture – [Best suitable for spring boot, spring cloud framework for Java-based Microservices].
- Uses self-service agile infrastructure – (Platform-as-a-service – Cloud Foundry)
- Uses API-based collaboration
Microservices (Stateless) Application Characteristics for Containers
- Config Management.
- Service Discovery and Load Balancing.
- Resilience and Fault Tolerance.
- API Management
- Service Security
- Centralized Logging
- Centralized Metrics
- Distributed Tracing
- Scheduling & Deployment.
- Auto Scaling and Self-Healing.
Application runtime and Container Runtime
- Application Runtime is an app-centric platform that simplifies the entire development lifecycle.
- Container Runtime manages the complete container lifecycle of its host system, image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.
1. Unstructured Cloud Native Platform (Focusing Open Source and Startup)
Kubernetes, Docker Swarm node, and Container orchestrators fall under unstructured Cloud Native Platform focusing on flexibility over container and infrastructure. CNCF – Cloud Native Computing Foundation is a governance body manages the Kubernetes Project. The Linux Foundation is a parent entity of CNCF, handles various open source projects including Cloud Foundry.
Kubernetes provides an abstraction on Infrastructure and matured for Container Runtime. To satisfy PaaS solution, Application runtime (Application Resilience, User Management, and Aggregated Logging) to be set up on top of Kubernetes with help of Cloud Native Landscape solutions.
Container Runtimes in Kubernetes
- Support for Docker Container
- Support for Rkt – Rocket Container
- Support for runC or OCI (Open Container Initiative)
- Support for Windows Server Container
- Support for containerd container runtime (Incubating)
Container registry to store and reuse the minimal container images (Linux & Windows), similar to golden images or VM templates in IT Infrastructure.
IAAS Solution: Azure Container Registry, Google Container Registry. Third-party solutions like JFrog Artifactory or Private Docker Registry
Designed to give developers more velocity, efficiency, and agility via Container Orchestration.
2. Structured/Opinionated Cloud Native Platform (Focusing Enterprise Market)
- Default container runtime Cloud Foundry Container Runtime (Kubernetes + CF BOSH [project Kubo]). (New announcement).
- Garden (Linux, Windows) – Native Container solution is written in Golang.
- Warden – Legacy Container solution is written in ruby.
Cloud Foundry platform supports Windows, Linux flavor applications. Container images are stored in blob-store in cloud foundry platform. It is also configurable for external bucket storages based on different IAAS provider.
Cloud Foundry BOSH is an open source, infrastructure automation tool chain for release engineering, deployment and lifecycle management of large-scale distributed services.
- Cloud Foundry is an opinionated, structured, and open platform.
- A set of well-defined principles employing best practices.
- Consistent across different infrastructure/cloud environments.
- Configurable and extendable, but not to the degree that the nature of the platform changes
Sample Design of Cloud-Native (DevOps + Continuous Delivery + Microservices + Containers) Application Architecture from Pivotal Cloud Foundry
3. Serverless (Functions)
Serverless platform ready to deploy code, behind runs using Container runtime and Application runtime on top of IAAS.
Apache OpenWhisk an incubating open source Serverless platform can be set up on top of Kubernetes.
Serverless platforms from IAAS providers.
- Azure Functions.
- Google Functions.
- AWS Serverless.