Clouds have long been mysterious and inspiring.
In traditional Chinese culture, xiangyun ('auspicious clouds') are both a symbol of heaven and a sign of luck (xiangyun is a homonym of 'auspicious good fortune').
And who can forget William Wordsworth's famous lines:
“I wandered lonely as a cloud
That floats on high o'er vales and hills…”
Now, in terms of technology, clouds - or 'the cloud' - continues to be a mysterious and inspiring force.
As the technology becomes more popular, new terms are breaking through. One term that may have caught your attention (and is becoming increasingly contentious) is 'cloud native'.
Let's demystify what this is and why it matters.
In this article, we will explore some of the key differences between cloud-native and cloud-hosted applications. But first, let us start with some definitions.
What is cloud technology?
Cloud technology is a type of computing that allows users to access websites, apps, data and services over the internet, rather than being restricted to certain items of physical hardware or software.
When you store something in the cloud, you are transferring data over the internet to a network of servers elsewhere in the world.
This makes it possible for internet users to quickly and easily access applications and data from anywhere in the world with an internet connection.
Services like Amazon Web Services (AWS) and Google Cloud provide scalable, cost-efficient platforms for storing data in the cloud.
Cloud server vs physical server
Physical servers are data storage hardware that are maintained on a premises, whereas cloud servers are multiple server resources that are centralized and maintained online.
A key benefit of migrating from physical servers to cloud servers is the outsourcing of maintenance. This can save time and reduce costs.
What is cloud-native?
Cloud-native refers to software that is built from scratch to run in a cloud environment. In other words, it is built specifically for the cloud environment.
Cloud-native apps are designed to use cloud technology. The goal is to make them faster, more scalable, elastic, flexible, and sustainable than apps that rely on physical servers.
A 2022 report by Tigera states that 75% of companies are focusing on developing cloud-native apps.
"empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds."
What is cloud-hosted?
Cloud-hosted technology is hosted on cloud servers but was not built on them.
Cloud-hosted apps are simply traditional apps that have been migrated to the cloud.
The difference between cloud-native and cloud-hosted
The difference between cloud-native and cloud-hosted lies in the features and the approach of each solution.
Below is a list of five key differences.
In The Dark Knight Rises, the villain Bane boasts to Batman:
"Oh, you think darkness is your ally. But you merely adopted the dark; I was born in it, moulded by it."
Aside from the small detail of Bane being an evil psychopath, this is a useful analogy for understanding the difference between cloud-native and cloud-hosted.
Cloud-native applications are born in and moulded by the cloud. They are built this way to harness the cloud's maximum performance in environments like AWS.
By contrast, cloud-hosted apps are traditional apps that have migrated from on-premise servers to the cloud. They are not designed for the cloud, so it is difficult to take advantage of the elasticity and scalability that cloud-native offers.
Legacy systems moved to the cloud become cloud-hosted - assuming that there is not a heavy reliance on local systems and hardware.
They cannot take full advantage of all cloud resources and do not offer horizontal scalability when cloud-hosted. And while they benefit from the cloud, they still require their own physical server for operations.
Cloud-native apps, on the other hand, are horizontally scalable. This not only allows them to scale by additional hardware resources but also add more services or features.
They do not require physical computing infrastructure. They are optimised at every stage to take full advantage of cloud resources and the power of distributed computing.
In short, the very concept of cloud-native is based around a blueprint for maximum performance in the cloud, whereas as cloud-hosted is adapted to it as an afterthought.
Becoming cloud-first - i.e., migrating to the cloud - reduces costs. This is because physical servers are not needed.
Many cloud providers use the pay-for-your-use pricing (PPU) model. This is like a pay-as-you-go model for using cloud services.
However, being cloud-native is generally the cheaper option. This is because there is never any responsibility for hardware costs.
This results in a productive, cost and time-efficient system. The only required costs are licensing and storage.
Cloud-native apps are known to be flexible, scalable, and upgradable without service interruptions.
On the other hand, cloud-hosted solutions will face disruption from downtime as upgrades take place.
4. Set up
Setting up hardware, software and migration needs to be considered when migrating legacy systems to the cloud. These can require complex projects by development and operations teams.
In comparison, cloud-native apps do not require any hardware and software setup. As they are built for the cloud from scratch, implementation is simply a matter of deploying them.
5. Microservices architecture
Cloud-native applications have the architecture to seamlessly use microservices.
This allows services to be categorised so that parts of the app can go through updates, development and troubleshooting without needing huge downtimes.
What is cloud-first?
Cloud-first is a solution or strategy that involves adopting cloud technologies for all new platforms, applications and infrastructure. It prioritises cloud computing services over legacy systems.
With cloud-first, the objective is to completely move to cloud environments while removing all in-house computing resources.
Cloud Native Computing Foundation (CNCF)
The Cloud Native Computing Foundation (CNCF) is an open-source foundation supporting organisations to begin their cloud-native journey.
It is involved in developing key cloud-native components such as Kubernetes (often called K8s) which makes it easier to manage applications.
This is an open-source system can deploy scale and manage containerised apps.
What is cloud-native architecture?
Cloud-native architecture is all about the design aspect of applications/services that were made specifically to be in the cloud.
This is the opposite of the traditional approach of on-premises infrastructure.
The CNCF highlights microservices, containers, service meshes, immutable infrastructure and declarative APIs as the building blocks of cloud-native architecture.
5 elements of cloud-native architecture
Containers are an alternative way to package applications in comparison to complex virtual machines and physical servers.
They include an application’s libraries and processes, but they do not have an operating system. This makes them lightweight.
An application written within a container can be moved to any platform that supports containers. Most platforms support containers and will run them without issues.
An application is not restricted to one cloud platform. It can run on any device with sufficient resources to support it.
Benefits of containers
Some benefits of containers include:
- They are reusable and portable
- They are small (measured in megabytes or less)
- They can be deployed almost instantly
With containers in place, an orchestrator is required to get them running.
Orchestrators manage how and where containers run. They also resolve any containers that go down and decide if more are needed.
When it comes to container orchestrators/schedulers, Kubernetes has been known as a winner in the market.
3. Microservices architecture
Microservices are loosely coupled software components that collectively perform as a complete software.
These smaller parts of apps are an essential part of cloud-native computing which helps apps run smoother and makes them easier to scale based on load.
They are put together like pieces of Lego. There is minimal custom coding required, which allows for reliable and faster development. Each microservice focuses on solving a specific problem.
A microservices infrastructure makes it easier and more efficient when engineers develop an app. Developers can make changes to the application by working on individual microservices.
This allows engineers to code without worrying about impacting another part of the project. Furthermore, the application continues to operate even if one microservice fails.
4. Immutable infrastructure
Immutable infrastructure means that servers that host cloud-native applications stay unchanged after deployment.
When more computing resources are required, the old server is replaced with a new higher performing server.
In other words, servers remain fixed but are replaceable when more resources are demanded.
5. Declarative APIs
Declarative APIs can connect two or more software. This allows for extended use and software programs to exchange information without interfering with the software’s code.
Cloud-native systems use APIs to bring loosely coupled microservices together. APIs can tell you what data a microservice wants and the result it can deliver.
A common example of an API being used is the weather snippets found on Google search. When someone searches for weather and location, they will see a snippet of this data.
This isn’t Google providing a forecast, but it is information requested from another site using an API.
What is cloud-agnostic?
Cloud-agnostic refers to applications, platforms, tools, or services designed to be agnostic of (i.e., independent from) specific cloud infrastructure providers.
It makes it easy to switch between cloud providers and/or using of multiple providers simultaneously.
This brings benefits such as:
- Reducing the risk of vendor lock-in
- Quick mitigation of security issues related to a specific provider
- The ability to use a larger selection of cloud components
What’s the difference between cloud-native and cloud-agnostic?
Cloud-native and cloud-agnostic are two different cloud computing solutions that offer businesses unique advantages and disadvantages.
They are often mentioned in the same breath because of their overlapping functions. And also, in part because they simply sound similar…
Cloud-native solutions primarily offer value by maximising technology, maintenance, and operational tasks. They achieve this via a single, specific cloud solution.
They are relatively simple to build and can help achieve a short time to market (TTM). They are also cost-efficient and offer pay-as-you-go pricing models instead of fixed subscription fees.
By contrast, cloud-agnostic solutions enable businesses to migrate between cloud service providers at any given time. The primary benefit of this is vendor independence, which also helps companies scale to meet new demand quickly and efficiently.
It generally comes with relatively high upfront costs and initial TTM. However, in the long run its benefits can ultimately save time and money.
Both cloud-native and cloud-agnostic approaches can be adopted simultaneously. This proivides a balance of complementary solutions supporting and canceling out the cons of one another.
Ultimately, choosing whether to implement cloud-native and cloud-agnostic (or both) will depend on your short and long-term goals. Understanding which features matter the most to your business is the step towards making that decision.
Why cloud-native applications matter...
Cloud-native apps are built and deployed by small and dedicated teams on a platform that offers easy scale-out without hardware.
Scale-out refers to adding new hardware resources rather than improving the capacity of existing hardware.
The cloud-native approach provides companies with greater agility, portability and resilience in a cloud environment.
1. They give a competative advantage
Building cloud-native applications means developers can focus on scalability and business growth rather than managing IT costs.
The ability to quickly build and deliver cloud-native applications can create huge competitive advantage for businesses.
2. They enable ongoing improvements without delays
The rapid growth of the cloud-native environment allows developers to design systems that stay online.
When legacy infrastructure fails, services can be affected. By contrast, a cloud-native world allows teams to continue working.
What is cloud-native application development?
Cloud-native app development is specialised development for cloud-native technology and cloud-native application architecture.
It covers teams optimising the speed of new and existing applications. And it includes how and where developers build and deploy their cloud-native apps.
Below are some of the most popular cloud-native development practices.
DevOps refers to the collaboration between software developers (dev) and IT operations (ops). Its goal is to deliver high-quality software that solves customer challenges.
In DevOps processes, the goal is to make the building, testing and releasing of software is rapid, consistent and efficient.
Serverless computing allows development teams to automatically scale and tweak cloud infrastructure to meet application needs.
Furthermore, the developers only pay for the resources the application uses.
Continuous integration (CI)
Continuous integration (CI) is the software development practice where each member of a development team integrates their work together on a frequent basis.
CI tools automatically test the code’s quality for every change made. This enables developers to confidently add new features.
Continuous delivery (CD)
Continuous delivery expands on CI by deploying all code changes to a testing or production environment.
With continuous delivery, developers check that microservices are prepared for deployment in the cloud.
Conclusion: Why use Cloud Native?
Cloud-native architecture provides the scalability, portability, and extensibility that legacy apps moved into the cloud cannot fully use.
As they are built from the ground up in the cloud, cloud-native applications can reach their full potential for performance and efficiency.
Businesses that choose cloud-native remove the burden of maintaining hardware and on-premises infrastructure.
Maintenance costs and downtime are no longer obstacles. Instead, organisations can focus on the freedom and growth provided by cloud-native technologies.
While it is possible to move traditional enterprise apps to the cloud, it is often a complicated and expensive process. Hardware and software setups need to be considered.
But with cloud-native, these setups and migration processes are simply not required.
Cloud-agnostic is a different but not incompatible cloud computing solution to cloud-native.
Whereas cloud-native focuses on maximizing technology, maintenance, and operational tasks via a single cloud solution, cloud-agnostic enables migration between multiple cloud service providers.
Cloud-native is simple to build, cost-efficient, and offers quick time to market (TTM). Cloud-agnostic, by contrast, has relatively high upfront costs.
Ultimately, the decision to implement either cloud-native or cloud-agnostic depends on a company's short and long-term goals.
Cloud-native solutions allow businesses to build more efficient and productive systems. It is the modern and future solution for delivering better, faster apps. If you liked the above information and are curious to find out more, please contact us here!
H1 - What’s a Rich Text element?
H2 - Static and dynamic content editing
H3 - How to customize formatting for each rich text
H4 - How to customize formatting for each rich text
H5 - How to customize formatting for each rich text
H6 - How to customize formatting for each rich text
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.