What is Cloud Native? Why I should embrace

Nedim AKAR
4 min readApr 23, 2022

Cloud Computing is still a very popular buzzword in the tech industry. Let’s start with What is Cloud Computing? Cloud computing is a large number of computers connecting to storing and accessing data through the Internet.

What is Cloud Native? I usually would say Cloud is where? Cloud-Native is how? but I imagine you as entry-level so let me explain it more clearly. Cloud-native is an approach to application development that uses the cloud computing delivery model.

In other words, Cloud Native Computing Foundation (CNCF) describes Cloud Native as “cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds”

Management

What look like this approach?

The following are common ways to implement the desired characteristics of a cloud-native application:

  • Microservices

separating complexity clearly defined functionality into smaller services and letting each service independently iterate. This increases the application’s agility by allowing portions of it to be changed more easily as needed. Each microservice can be managed by separate teams, written in appropriate languages, and be independently scaled as needed.

But! Having microservices does not mean you have the cloud-native infrastructure.

  • Health Reporting

Health Reporting is knowledge of what actually makes an application healthy, their attempts to monitor and alert when applications are unhealthy are often fragile and incomplete.

  • Telemetry Data

Telemetry Data is the information necessary for making decisions. Health reporting informs us of the application life cycle state, while telemetry data informs us of application business objectives.

The metrics you measure are sometimes called service-level indicators (SLIs) or key performance indicators (KPIs).

Telemetry and metrics are used to solve questions such as:

1- How many requests per minute do my application receive?

2- Are there any errors?

3- What is the application latency?

4- How long does it take to place an order?

  • Resiliency

Once you have telemetry and monitoring data, you need to make sure your applications are resilient to failure (Fault Tolerance). Resiliency used to be the responsibility of the infrastructure. but cloud-native applications need to take on some of that work.

Infrastructure was engineered to resist failure. Hardware used to require multiple hard drives, power supplies, round-the-clock monitoring, and part replacements to keep an application available. With cloud-native applications, it is the application’s responsibility to embrace failure instead of avoiding it.

The only systems that should never fail are those that keep you alive (e.g., heart implants, and brakes). If your services never go down, 8 you are spending too much time engineering them to resist failure and not enough time adding business value. Your SLO determines how much uptime is needed for a service. Any resources you spend to engineer uptime that exceeds the SLO are wasted.

In any complex system, there will be failures. You can manage some failures in hardware (e.g., RAID and redundant power supplies) and some in infrastructure (e.g., load balancers); but because applications know when they are healthy, they should also try to manage their own failure as best they can.

Cloud-native applications should be adaptable no matter what the failure is. They expect failure, so they adjust when it’s detected.

  • Declarative, Not Reactive

I think that's the most skipped or ignored part of the Cloud-Native approach because cloud-native applications are designed to run in a cloud environment, they interact with infrastructure and support applications differently than traditional applications do.

Fundamentally, the communication between applications should change in a Cloud Native environment — not only because there are other methods to build communication resiliency, but also because it is often more work to replicate traditional communication methods in the cloud.

When to Adopt Cloud Native?

Firstly I have to say, Cloud native infrastructure is not for everybody. Don’t adopt a tool or design without understanding its impact and limitations. We believe cloud-native infrastructure has many benefits, but realize it should not be blindly assumed. We would hate to lead someone down the wrong path for their needs.

You have to ask a few questions yourself to understand do you need this approach or not?

  • Do you have Cloud Native applications?
  • Is your engineering team willing and able to write production-quality code that embodies their job functions as software? but the most important and hardest part!
  • Do you have API-driven infrastructure (IaaS)
  • Does your business need faster development cycles or nonlinear people/systems scaling ratios?

Resources

--

--

Nedim AKAR

Excited about new technologies, attention to detail, and excellent organizational skills. Backend Developer and Cloud Native enthusiast.