The term cloud native is widely used when thinking about computing and software development, encompassing a wide range of concepts that are regularly used in technology.
Let’s break it down and take a closer look – what does cloud native really mean?
What you need to know
As a concept, cloud native is a set of technologies and practices that allow the creation and maintenance of cloud systems and applications. These technologies are built to run well in a cloud environment and serve important roles in the cloud ecosystem itself. The use of cloud native technologies makes software faster to build, easier to deploy and more reliable to host. As a result, engineers have more time to focus on coding and scaling, with increased flexibility in the choices they make.
Cloud native: Defined
The main definition of cloud native comes from the CNCF (Cloud Native Computing Foundation). This definition is the basis of the majority of cloud native references you will find online:
“Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil”
If the meaning of any of these terms is not clear, you are in the right place! Let’s break down some of these key concepts.
Cloud native: Explained
What is a public cloud?
A public cloud environment is available to every customer over the Internet. Public cloud infrastructure is typically managed as a service by a cloud provider alongside a diverse portfolio of managed services. The underlying infrastructure is shared across customers allowing the loose coupling of hardware and services. Companies like Amazon, Microsoft and Google provide a wide range of public cloud services. Ubuntu is offered on all major public cloud providers – read more here!
What are loosely coupled systems?
Loosely coupled systems consist of independent components that can be connected together without existing knowledge of the entire system. This forms the basis of a resilient cloud architecture. Each component has a clearly defined function and can fulfil its purpose autonomously.
Let’s apply this definition to a cloud native platform: a cloud system consists of a mixture of services and technologies that can be used together to deliver greater flexibility and resilience to the end user. When a cloud provider offers services that follow widely used standards and have clear documentation, developers can integrate a variety of components together without knowing all implementation details of each element. Such systems aim to minimise the risk of interference and propagation of faults between its elements . These abilities make a system loosely coupled.
What is a private cloud?
A private cloud is a cloud environment operated for a single organisation. It can be deployed on externally or internally-hosted infrastructure and either managed in-house or by a third party. Canonical designs, builds, operates and supports OpenStack private clouds on Ubuntu – read more here!
Although public and private cloud infrastructures are important on their own, when combined they can form powerful, resilient hybrid or multi-cloud systems. Let’s learn more!
What is a hybrid cloud?
Hybrid cloud is a combination of private cloud and public cloud. They are deployed across geographical locations and network boundaries. Such systems are often managed by a collection of providers with a separation of responsibility, allowing an organisation to benefit from both types of cloud services. Here is everything you need to know about hybrid clouds: how they are built, how they work, and what are their benefits.
What is a multi-cloud?
The concept of multi-cloud takes the best from all of the above into one. Multi-cloud is the use of multiple cloud environments and service providers, together in a mix that best fulfils your engineering and business requirements. A multi-cloud environment aims to eliminate the reliance on any single cloud provider. The concept of multi-cloud is strongly driven by automation technology that lowers the barrier to entry and enables seamless integration across a variety of cloud systems and providers.
What is a container?
A container is an isolated development environment, separate from the underlying infrastructure, that runs on top of host operating systems, consisting of an image that defines the code and it’s dependencies to run on the container. They are faster to spin up than virtual machines and are light-weight, portable, consistent and secure. Learn more about Linux containers here, where you can easily spin up a container of your own!
What are microservices?
The concept of microservices is fairly broad and has many definitions. In simple terms, microservices are the building blocks of a loosely coupled architecture. They represent individual functional components of a cloud system. Ideally all microservices can be replicated and scaled independently. If you want a productive, open source way to manage containers and microservices, Kubernetes on Ubuntu is the way to go!
What is a service mesh?
A service mesh is a configurable layer of infrastructure that controls the communication between services (usually microservices) over a network. To put this into context, imagine you have a large, complex cloud architecture with hundreds of microservices to handle. You could use a service mesh to manage those services and perform load balancing, monitoring, logging, failure recovery and traffic control.
What is an immutable infrastructure?
Immutable infrastructure cannot be changed after being deployed but instead can be rebuilt, replaced or destroyed. Using immutable infrastructure ensures that the infrastructure is clearly defined, its changes are controlled and it allows for tracking, quick reuse and recovery.
What are declarative APIs?
Declarative APIs allow users to define a desired end state of the system or query outcome. They are particularly useful in the orchestration of cloud infrastructure and services. This is because using declarative statements allows developers to focus on the end result rather than individual steps to achieve it. You can read more about declarative DevOps here.
Want to learn more?
Get in touch today to learn more about the open source cloud native technologies that we offer!
Cover photo taken by me at Roque de los Muchachos.
Ubuntu offers all the training, software infrastructure, tools, services and support you need for your public and private clouds.