Courseiva
KCNAChapter 1 of 12Objective 1.1

Cloud Native Architecture and Concepts

Cloud native architecture is a way of building and running applications that fully exploit the benefits of the cloud computing model. It solves the problem of rigid, oversized applications that are difficult to change, scale, or repair. For the KCNA exam, understanding these principles is essential because the entire certification is built around the idea of designing systems that are resilient, manageable, and observable.

12 min read
Beginner
Updated Jul 23, 2026
Editorial oversight: Johnson Ajibi· Security Systems Architect · MSc IT Security · IEEE Senior Member

A simple way to picture Cloud Native Architecture and Concepts

The Restaurant Kitchen Analogy

A restaurant kitchen is the heart of a successful dining experience.

In a traditional restaurant, every dish is prepared by a single chef who manages the entire process from chopping vegetables to plating the final meal. This chef knows every detail of every recipe, but when the restaurant gets busy, orders pile up, and the chef becomes a bottleneck. If the chef calls in sick, the entire kitchen shuts down. That is the old way—like a monolithic application.

Now imagine a modern kitchen where each dish is broken down into small, independent stations. One station is dedicated to grilling steaks, another to preparing salads, and a third to making desserts. Each station operates like a tiny, self-contained restaurant—a microservice. The steak station only needs to know how to cook steak; it does not care about the salad dressing recipe. If the dessert station burns a cake, the steak and salad stations keep serving food. The head chef, acting like an orchestrator (Kubernetes), simply tells each station what to do and checks that they are working correctly.

The recipes themselves are written on cards stored in a central rack. When a station needs to prepare a dish, it pulls the recipe card and follows it exactly. This is a declarative API—the head chef declares the desired outcome (a perfectly cooked steak), and the station figures out how to achieve it. If a station runs out of ingredients, the orchestrator automatically orders more and scales up another station to meet demand. The entire kitchen is resilient, scalable, and efficient—just like a cloud native system.

How It Actually Works

To understand cloud native architecture, you first need to understand what it replaces. Traditional applications, often called monolithic applications, are built as a single, large unit where every feature—the user interface, the business logic, and the data storage—is bundled together. If you want to update just one small part, you must rebuild and redeploy the entire application. Scaling means making a copy of the whole thing, even if only one part is under heavy load. It is like a giant cruise ship: to fix a single porthole, you have to dry-dock the entire vessel.

Cloud native architecture uses a fundamentally different approach. It is a set of practices and technologies that enable applications to be built as small, independent services (microservices) that run inside lightweight, isolated environments (containers) and are managed using automated rules (declarative APIs orchestrated by a platform like Kubernetes).

The core principles break down into three key pillars: containers, microservices, and declarative APIs.

Containers are like portable, self-sufficient boxes for your code. A container packages an application with everything it needs to run: the code, the runtime (for example, Node.js or Java), system libraries, and settings. Because everything is in one box, the application runs the same way on a developer’s laptop, a test server, or in the cloud. Containers are lighter than traditional virtual machines because they share the host operating system’s kernel, so they start in seconds and use fewer resources. Docker is the most popular tool for creating containers.

Microservices are an architectural style where an application is split into many tiny, independent services, each responsible for a single business capability. For example, a streaming service like Netflix has separate microservices for user accounts, video recommendations, billing, and content search. Each microservice can be developed by a small team, written in a different programming language, and updated independently. If the recommendation service crashes, users can still log in and search for content. This isolation prevents a single failure from taking down the whole system. Communication between microservices happens over a network, usually via lightweight protocols like HTTP/REST or messaging queues.

Declarative APIs are the third pillar. In traditional IT, you wrote step-by-step instructions (imperative) to achieve a desired state. For example, you would say, “Create a virtual machine, install the web server, copy the files, then start the server.” In a declarative approach, you simply state the desired result, and the platform figures out the steps to get there. You write a configuration file that says, “I want three copies of my application running with 4 GB of memory each,” and the platform (Kubernetes) makes that happen and keeps it that way. If one copy crashes, the platform automatically creates a new one to maintain the desired state. This principle of desired state management is fundamental to cloud native operations.

These three pillars work together. Containers provide the standardised environment for running microservices. Microservices break the application into manageable parts. Declarative APIs allow you to tell the system what you want, not how to do it, enabling automation and self-healing.

Cloud native architecture also embraces the principles of scalability (the ability to handle increased load by adding more resources), resilience (the ability to recover from failures gracefully), and observability (the ability to understand what is happening inside the system through logs, metrics, and traces). It replaces manual, error-prone processes with automated, repeatable ones, making it easier to innovate rapidly and safely.

This diagram shows how a user request flows through an API gateway to four independent microservices, each with its own database, all orchestrated within a Kubernetes cluster.

Walk-Through

1

Decompose the application into microservices

Identify independent business capabilities in the existing application and split them into separate services. Each microservice owns its own data and exposes a well-defined API. This step reduces interdependencies and enables independent development and deployment.

2

Containerise each microservice

Write a Dockerfile for each microservice that specifies the base operating system, runtime, and all dependencies. Build the container image and push it to a container registry. This step standardises the execution environment and makes the service portable across different environments.

3

Define a declarative deployment configuration

Write a YAML file that declares the desired state for each microservice: number of replicas, resource limits (CPU/memory), networking rules, and storage requirements. This step shifts from manual configuration to automation and version-controlled infrastructure.

4

Submit the configuration to an orchestrator (Kubernetes)

Apply the YAML file to a Kubernetes cluster using the kubectl command. Kubernetes reads the desired state and creates the necessary containers (pods) on available worker nodes. The orchestrator continuously monitors the cluster and takes action to correct any drift from the declared state.

5

Enable autoscaling and self-healing

Configure Horizontal Pod Autoscaler to automatically add or remove replicas based on metrics like CPU or memory usage. Also set up readiness and liveness probes so Kubernetes can detect unhealthy containers and restart or replace them without manual intervention.

6

Implement observability across the system

Deploy monitoring agents (e.g., Prometheus) to collect metrics from each microservice, centralise logs using a tool like the ELK stack, and implement distributed tracing (e.g., Jaeger) to track requests as they flow between services. This step provides visibility into system behaviour and helps debug issues.

What This Looks Like on the Job

Imagine you work as a platform engineer for an online retailer called ShopFast. Your team is responsible for building and running the website that handles thousands of orders every hour. Traditionally, ShopFast ran a monolithic website on a few physical servers. When the holiday season hit, traffic would spike, the site would slow down, and customers would abandon their carts. Your job is to modernise this system using cloud native principles.

Here is what happens step-by-step in a real-world scenario:

First, you and your team break the monolith into microservices. You identify that the site has distinct functions: user login, product catalogue, shopping cart, payment processing, and order tracking. Each becomes a separate microservice. The product catalogue team, for example, can now update product descriptions without touching the payment system. They can even rewrite their microservice in a different language—say, moving from Java to Go—because the services communicate over defined APIs, not through shared code.

Next, you package each microservice into a container. You write a Dockerfile for each service, specifying its runtime (Python 3.10, Node.js 18, etc.), its dependencies (libraries, certificates), and the command to start the application. You build these containers and push them to a central container registry—a private storage repository for your images.

Then, you deploy the containers to a Kubernetes cluster. Instead of logging into servers and manually starting processes, you write YAML files (a human-readable data format) that declare the desired state for each microservice. For the shopping cart, you declare that you want five copies (replicas) running at all times, each using 512 MB of memory. You submit this file to the Kubernetes API. Kubernetes reads your declaration and automatically schedules the containers across the cluster, ensuring they are distributed across different physical servers to avoid a single point of failure.

Now, when holiday traffic surges, the shopping cart service sees increased load. You have enabled horizontal pod autoscaling, a feature that monitors CPU usage. When the average CPU usage of your five cart replicas exceeds 70%, Kubernetes automatically creates more replicas—say, scaling up to twenty replicas. It does this without any human intervention. When traffic drops after the holidays, it scales back down, saving money on cloud resources.

A real-world challenge: a bug is introduced in the payment microservice. In the old monolithic world, this bug could crash the entire website. In the cloud native world, only the payment service is affected. Users can still browse the catalogue and add items to their cart. Meanwhile, you can roll back the payment service to a previous, working version by updating a single line in the deployment YAML file and reapplying it. Kubernetes performs a rolling update, gradually replacing the broken replicas with the working ones, with zero downtime.

Finally, observability is critical. You set up tools like Prometheus for collecting metrics (e.g., request count, error rate) and Grafana for visualising dashboards. You also implement centralised logging with a tool like the ELK stack (Elasticsearch, Logstash, Kibana) so that when a customer complains about a failed order, you can search across all microservice logs to find the exact error, rather than logging into ten different servers.

How KCNA Actually Tests This

The KCNA exam tests your understanding of cloud native architecture at a conceptual and practical level. You will not be asked to write YAML files or configure a Kubernetes cluster, but you will need to know what these components are, why they are used, and how they relate to each other.

The exam objectives explicitly list three sub-topics for this section (Objective 1.1): containers, microservices, and declarative APIs. Expect approximately 15–20% of the total exam questions to come from this area.

Here is what the exam focuses on:

Container fundamentals: You must know that a container packages an application with its dependencies. Understand the key difference between a container and a virtual machine—containers share the host OS kernel and are lighter. The exam often presents a scenario and asks which technology is best suited for a specific use case.

Microservices vs. monolithic architecture: This is a classic comparison. The exam will ask you to identify characteristics of each. Traps: they may suggest that microservices are always better, or that they are easy to implement. The correct pattern is that microservices offer advantages in scalability and maintainability but introduce complexity in network communication, data consistency, and debugging.

Declarative vs. imperative approaches: The exam loves this distinction. Memorise that imperative means “how to do it” (step-by-step commands), while declarative means “what the end state should be” (desired state). Kubernetes is the classic example of a declarative system. A common question: “A developer writes a script to install software. Is this declarative?” The answer is no, because it specifies steps, not a desired state.

Cloud native principles: Beyond the three pillars, the exam tests scalability (vertical vs. horizontal scaling), resilience (self-healing, fault tolerance), and automation. You may be asked which principle allows an application to recover from a failed container automatically—this is self-healing, typically achieved through declarative desired state management.

Orchestration: The exam expects you to know that Kubernetes is the leading container orchestration tool. You do not need to know its internal components in depth for this objective, but you should understand that it manages the lifecycle of containers, including scheduling, scaling, and health checks.

Common traps in the exam: \ - They might list a benefit of microservices (e.g., independent deployment) but incorrectly attribute it to monolithic architecture. Read each option carefully. \ - They may ask “What problem do containers solve?” and one answer will be “they reduce security risks.” Containers do provide some isolation, but the primary problem they solve is consistency across environments. \ - They might offer a definition of a declarative API that sounds like imperative (e.g., “a set of commands to run”). The correct definition always centres on stating desired state.\

Key definitions to memorise: \ - Container: a standard unit of software that packages code and its dependencies. \ - Microservice: an independently deployable service that handles a specific business function. \ - Declarative API: a way to specify the desired state of a system without specifying the steps to achieve it. \ - Orchestration: automated management of containerised applications, including deployment, scaling, and networking.

Practise applying these concepts to scenario-based questions. The KCNA will not ask you to recall a definition verbatim; it will present a real-world situation and ask you to choose the correct architecture, component, or principle that applies.

Key Takeaways

Containers package an application with its dependencies so it runs identically on any system, solving the 'it works on my machine' problem.

Microservices split an application into small, independently deployable services that each handle a single business function.

Declarative APIs allow you to express the desired state of a system, and the platform automatically works to achieve and maintain that state.

Kubernetes is the industry standard for orchestrating containers, handling tasks like scaling, self-healing, and rolling updates.

Cloud native architecture prioritises horizontal scaling (adding more instances) over vertical scaling (making instances bigger) to handle increased load.

Resilience in cloud native systems means the application can continue operating even when individual components fail, thanks to automated recovery mechanisms.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

Container

Shares the host operating system kernel

Starts in seconds and uses fewer resources

Isolation at the process level

Virtual Machine

Runs a full guest operating system

Starts in minutes and uses more resources

Isolation at the hypervisor level

Microservices

Application split into small, independent services

Each service can be deployed and scaled independently

Fault in one service does not affect the whole system

Monolithic Architecture

Entire application built as a single unit

Whole application must be deployed even for small updates

A single bug can crash the entire application

Declarative API

You state the desired end state

The system determines the steps to achieve the state

Used in Kubernetes and Infrastructure as Code

Imperative API

You specify step-by-step commands

You control every action explicitly

Common in scripts and procedural programming

Horizontal Scaling

Adds more instances of a resource

Offers resilience because failures affect fewer users

Commonly automated in cloud native systems

Vertical Scaling

Increases the capacity of a single instance

Has an upper limit based on hardware capacity

Often requires downtime to scale up

Watch Out for These

Mistake

Containers are the same as virtual machines because both isolate applications.

Correct

Containers share the host operating system kernel and are much lighter, using fewer resources and starting faster than virtual machines, which each run a full guest OS.

Both technologies offer isolation, so beginners assume they are interchangeable. The difference in architecture (shared kernel vs. separate OS) is subtle but critical for performance and security decisions.

Mistake

Microservices always make an application faster and simpler.

Correct

Microservices improve scalability and maintainability but add network latency, data consistency challenges, and operational overhead from managing multiple services.

Vendors and tutorials typically highlight only the benefits, so learners get the impression that microservices are a universal improvement without trade-offs.

Mistake

A declarative API means you write less code or fewer instructions.

Correct

Declarative APIs are not about quantity of code but about the approach: you describe the desired result, not the steps. The amount of code may be similar or more, but it is easier to maintain and automate.

Beginners associate 'declarative' with 'shorter' because YAML files look terse compared to procedural scripts, but the real distinction is the intent, not the length.

Mistake

Kubernetes is a container runtime that creates containers.

Correct

Kubernetes is an orchestrator that manages containers but does not create them directly. It relies on a container runtime (like containerd or CRI-O) to actually run the containers.

Because Kubernetes is so closely associated with containers, people mistake it for the tool that starts them, rather than the tool that schedules and manages them.

Mistake

Cloud native means you must use a public cloud provider like AWS or Azure.

Correct

Cloud native is a set of architectural principles (containers, microservices, declarative APIs) that can be applied in a public cloud, private cloud, or even on-premises data centres.

The term 'cloud' in the name leads beginners to believe it is exclusive to public cloud environments, but the practices are platform-agnostic.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

Do I need to learn Docker and Kubernetes in depth for the KCNA exam?

No. The KCNA exam tests conceptual understanding, not hands-on skills. You should know what containers and orchestration are and how they relate to cloud native principles, but you will not be asked to write a Dockerfile or a Kubernetes YAML file.

Is cloud native architecture the same as using a public cloud like AWS?

No. Cloud native refers to a set of architectural principles and practices—containers, microservices, declarative APIs—that can be used in any environment, including on-premises data centres. Public cloud services can help implement these principles, but they are not required.

Why are microservices better than a monolithic application?

Microservices offer independent deployability, better fault isolation, and easier scaling of individual components. However, they introduce complexity in network communication, data consistency, and operations, so they are not always the best choice for simple applications.

What is the difference between a container and a virtual machine?

A container shares the host operating system kernel and isolates the application at the process level, making it lightweight and fast to start. A virtual machine includes a full guest operating system, providing stronger isolation but consuming more resources and taking longer to boot.

What does 'declarative' mean in the context of Kubernetes?

Declarative means you write a configuration file that describes the desired end state of your application (e.g., 'run three copies of this container'), and Kubernetes automatically works to achieve and maintain that state without you specifying the individual steps.

Will the KCNA exam ask me to compare cloud native and traditional architectures?

Yes, you can expect scenario-based questions that ask you to identify which architecture (monolithic, microservices, or serverless) best fits a given set of requirements, or to distinguish between declarative and imperative approaches.

Terms Worth Knowing

Keep going

You've finished Cloud Native Architecture and Concepts. Continue through the KCNA study guide to build a complete picture of the exam.

Done with this chapter?