In my previous post, I discussed the concept and definition of Cloud Native. Today, I'd like to share the key components, characteristics, pros and cons of Cloud Native. For those who haven't read my earlier post on the concept and definition of Cloud Native, I recommend reading that one first.
1. Cloud Native Overview
To briefly recap the definition of Cloud Native introduced in the previous post - it refers to "an environment for building and running information systems that maximizes the advantages of the cloud computing model." In other words, it enables the creation of loosely coupled systems through approaches that allow applications to be developed and executed in a cloud environment, enabling impactful changes to be made frequently and predictably with minimal effort. Containers, service meshes, microservices, immutable infrastructure and declarative APIs exemplify this approach, as defined by CNCF.
![]() |
| Cloud Native Architecture image (Source: medium) |
In other words, Cloud Native means that simply migrating existing applications to an IaaS environment ("Rehost") or introducing a cloud-oriented middleware environment through adopting PaaS and containers ("Replatform") has limitations in harnessing the benefits of the cloud model. True Cloud Native means the entire stack including the application layer has been refactored with the cloud environment in mind.
2. Key Components of Cloud Native
As mentioned earlier, Cloud Native refers to applications running on top of a cloud-based IT infrastructure environment (IaaS, PaaS), not just cloud migration of the infrastructure or middleware layers.
The key components constituting Cloud Native can be summarized as: Microservices, Containers, DevOps, and CI/CD (Continuous Integration/Continuous Deployment). Since the breadth for explaining each component is vast, I will only introduce them briefly here.
- Microservices: An architectural approach whereby each application is separated into micro-level independent services that can be independently developed, deployed and operated. Each microservice communicates via standardized APIs so they can be loosely coupled regardless of differences in languages or technologies. The characteristics of microservices make applications relatively more flexible, scalable and easier to maintain compared to traditional monolithic architectures.
- Containers: Can be thought of as a virtualized form of the operating system. It is a logical space for packaging and storing components required to execute an application (binaries, libraries, config files, etc). As containerized microservices can be instantly deployed to any cloud environment, containers have excellent portability and scalability.
- DevOps: A portmanteau of "Development" and "Operations", it refers to a development culture, process or operational framework emphasizing close collaboration/integration between development and operations teams to deliver business value through rapid, high-quality services. The concept emerged as a way to shorten release cycles by emphasizing speedy delivery of robust services. Especially crucial in Cloud Native environments as microservices enable frequent deployments.
- CI/CD: Methods to facilitate frequent microservices deployments in Cloud Native environments by integrating and automating the entire process from development to testing to deployment for delivering stable, continuous services. Can be understood as an extension of DevOps, with CI (Continuous Integration) on the development side and CD (Continuous Deployment) on the operations side.
3. Cloud Native Characteristics
1) Key characteristics per component
The characteristics of Cloud Native, constituted by key components like microservices, containers, DevOps and CI/CD, are summarized in the table below:
| Compo- nent | Key Charact-eristics | Description |
| Micro- services | Small- | - Applications split into microservices centered around business capabilities |
| Indepen-dence | - Services can be operated independently and connected vis APIs - Even if a service fails, overall service remains available due to isolation | |
| Diversity | - Services can adopt languages and technologies fitting their purpose | |
| Agility | - Microservices enable easier maintenance through independent development/operation/testing | |
| Containers | Efficiency | - Can build isolated development environments - Easy environment setup/tuning saves developer time |
| Lightweight | - Images generated from just apps and runtime SW result in small footprint | |
| Portability | - Easy deployment across different cloud platforms | |
Scalability | - Auto-scaling to expand resources when thresholds exceeded | |
| DevOps | Cross-team collaboration | - Unified development/operations around microservices enables close collaboration |
Agility | - Faster problem/bug detection and resolution through collaboration | |
| CI/CD | Automation | - Fully automates build/test/deploy steps |
Smaller deployments | - Shorter develop/deploy cycles through automation |
2) Cloud Native Applications
Per the Cloud Native characteristics, Cloud Native applications developed and executed in cloud environments differ from legacy on-premises applications:
Category | On-prem. Appl. | Cloud Native Appl. |
| Application Architecture | Monolithic | Microservices |
| Coupling | Large & tight coupling | Loosely coupled, service-based |
| Runtime Environment | Physical Servers | Virtual Containers |
| Scalability | Vertical (Scale-up) | Horizontal (Scale-Out) |
| Infra. Dependence | High Dependence | Infrastructure-independent with |
Development methodology | Waterfall | Agile |
Build/ deployment | Manual, time-consuming | CI/CD automated, |
Organizational structure | Separate dev/ops teams | DevOps-based integrated dev/ops |
Designed for continuous development and automated management across cloud environments like private/public/hybrid, Cloud Native applications have inherent advantages like scalability and portability. Comprised of microservices and built to run in containerized environments.
In this post, I covered the components and characteristics of Cloud Native. Existing concepts seem to be evolving and converging to suit cloud environments. There is so much more that can be discussed regarding each component, so I will leave it here for today and cover them individually should there be opportunities in the future.
