Cloud Native

Cloud Native

What Is Cloud Native?

In a broad sense, cloud native refers to a way of building and running applications so they can make full use of the benefits of the cloud.

If applications in traditional systems could not fully use the advantages of the cloud, adopting microservice architecture, containers, Kubernetes and related technologies, DevOps, and agile methodologies can greatly improve developer productivity, business agility, scalability, availability, and cost efficiency.

To achieve this, change is needed across applications, architecture, infrastructure, and development processes. This article looks at the direction of that change and what it means to use the cloud in a native way.

Changes in Service Servers

  • Until 2000: physical servers
    • Operated monolithic applications
    • There were not many physical servers, and servers were managed one-to-one
  • 2001 to 2009: first generation of virtualization technology
    • Replaced actual systems with virtual machines
    • The goal was to increase consolidation ratios and improve efficiency, supported by multi-core servers and the spread of virtualization technology
    • Container technology emerged as an alternative to virtualization
  • 2010 to 2015: second generation of virtualization technology and the cloud era
    • Cloud proved suitable and scalable for large-scale services
    • Technologies for reliably managing large-scale infrastructure also became widespread
  • 2010 to 2015: cloud native generation
    • The Cloud Native Computing Foundation, or CNCF, officially launched in January 2016 with the goal of solving real cloud technology challenges through open source
    • It provides optimal infrastructure for running applications
      • Deliver what has been developed immediately and reliably

What Is CNCF?

Linux, which first used the term Cloud Native in 2015, created the Cloud Native Computing Foundation, or CNCF, to promote and manage open source technologies that help organizations move to cloud native. More than 550 cloud providers and technology companies participate in the foundation. CNCF defines cloud native as follows.

  • Cloud native technologies empower organizations to build and run scalable applications in public, private, and hybrid cloud environments.
  • Containers, service meshes, microservices, immutable infrastructure, and declarative APIs are typical approaches.
  • They enable loosely coupled systems that are resilient, manageable, and observable.
  • Combined with robust automation, they allow engineers to make high-impact, predictable changes with minimal effort.

Reference for CNCF’s cloud native definition: https://github.com/cncf/toc/blob/master/DEFINITION.md

Key four elements for cloud native

Summarizing the definition above, the main elements needed to move toward cloud native can be condensed into the following four areas.

Cloud Native

Figure reference: Chirag Jog’s Blog

  • DevOps
    DevOps automates the collaboration process between application development and operations, ultimately increasing the speed of application development and improvement.

  • CI/CD
    Continuous Integration automatically tests code written by developers and integrates it into the repository when tests pass.
    Continuous Deployment automates the process in which code and changes are tested, uploaded to the repository, and released to the live service.

  • Container-based infrastructure
    Containers are a type of virtualization. Rather than virtualizing the whole system, they package and virtualize the computing work required to run an application.

  • Microservices
    Microservices are an architecture that decomposes the services that make up an application into small independent units and connects each component over a network. This supports service reliability and scalability.

Application Value of Cloud Native

  1. Fast iteration
    Using cloud native application development means providing individual, reusable capabilities that are integrated in a well-defined way across technical boundaries such as multi-cloud, using agile and scalable components such as containers represented by Kubernetes. Fast iteration is achieved through repeated automation and orchestration.

  2. Automated deployment The cloud native approach is far superior to traditional virtualization-oriented business processes, which require significant effort to build heterogeneous environments that differ from development environments in the software delivery process. In contrast, cloud native architecture is characterized by automation and configuration, and it relies on known, reliable, verified, and audited processes to provide agile delivery without repeated human intervention.

  3. Independent and efficient Cloud native brings a microservice-based architecture. Microservices are application services that can basically be released independently, so they can be upgraded, used in canary or gray releases, or reused as independent components, with little impact on the entire large application. As long as input and output ports are determined, trusted parties can evolve independently, the entire team structure becomes simpler, communication costs are lower, and efficiency is higher.

References