Senior Enterprise Architect
April 27, 2023 | 6 mins read
As global netizens navigate a post-pandemic world, both on a personal and corporate level, the positive developments in Information Technology that occurred because of a locked-down world must be acknowledged. While its challenges were undeniable, one of the most significant developments is the acceleration of the move to “The Cloud” and the resultant development of cloud-native applications.
The pandemic advanced the adoption of remote work on an unprecedented scale, driving the development and adoption of collaboration tools like Zoom, Slack, Google Meet, and Microsoft Teams as well as accelerating the development of cloud-native architecture and applications.
A November 2021 report by Gartner notes that:
“The ongoing pandemic and the surge in digital services are making cloud the centerpiece of new digital experiences.”
Furthermore, Gartner analysts estimate that:
“Over 85% of organizations will embrace a cloud-first principle by 2025 and will not be able to fully execute on their digital strategies without the use of cloud-native architectures and technologies.”
And:
“By 2025, Gartner estimates that over 95% of new digital workloads will be deployed on cloud-native platforms, up from 30% in 2021.”
Because of the juxtaposed nature of cloud-native application architecture when compared to traditional monolithic architecture and the subsequent 180° shift in thinking required when considering the cloud-native model, let us begin by looking at what the Cloud-Native Computing Foundation (CNCF) says about cloud-native technologies:
“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.”
This description of cloud-native technology captures its essence and subsequent raison d’etre. The above description of cloud-native technology captures its essence and subsequent raison d'être. These distributed models include microservices, containers, and service meshes, among others.
Following our consideration of the cloud-native model, let's examine what cloud-native applications are and, by extension, how they fit into the model.
Succinctly stated, the essence of a cloud-native application is based on a bringing together of two cloud concepts: computing and software. In other words, a cloud-native applications take the best of both worlds and merge them.
Before we proceed, let’s describe each of these concepts:
Margaret Rouse of Techopedia.com explains computing as the:
“Process of using computer technology to complete a goal-oriented task.”
It is important to note that computing is the design and development of software and hardware systems for a variety of purposes, including the structuring, processing, and managing of data. Furthermore, cloud computing science is concerned with designing and building cloud-based software (and hardware).
In theory, software and software applications are different.
Software refers to a set of instructions and programs that tell a computer system how to perform specific tasks or functions. Basically, it provides a computer system with the functionality and capabilities it needs to operate.
Software applications are computer programs designed and developed to meet specific user needs, such as invoicing, CRM, or stock management.
At this point, it is interesting to note the origin and interpretation of the word “native” in “cloud-native” applications.
"Native" refers to solutions explicitly developed for cloud-based hardware that do not require any non-cloud layers or dependencies to run. On the other hand, a cloud-native application is primarily designed to operate in a cloud environment, taking full advantage of its features and capabilities.
"Cloud-native" can also be interpreted as having cloud-native architectures and principles, including microservices, containerization, and orchestration frameworks, developed using these architectures and principles. There are many cloud-based services to choose from, including large-scale data storage, messaging systems, on-demand provisioning, automatic scaling, efficient resource utilization, and fault tolerance.
Now that we understand the context in which the word “native” is used in the term “cloud-native applications,” let’s look at how a cloud-native application is typically constructed.
As shown in the following diagram, cloud-native apps are built using the following technologies and principles:
Circling back to this article's introduction, that of navigating a post-pandemic world, there are several requirements for cloud-native applications and application architectures, providing "the why" for developing cloud-native applications. Let's expand on several of these requirements as they are also cloud-native characteristics:
The term “massively scalable” can be seen as hyperbole. Surely, a system only needs to be scalable? Well, no. In this context, a system must be more than just scalable. It must be able to scale to the nth degree; thus, massively scalable.
The fundamental difference between the levels of scalability is best described by first considering a definition of scalable.
Gartner describes scalability as the “measure of a system’s ability to increase or decrease in performance and cost in response to changes in application and system processing demands.“
In other words, scalable describes a system’s ability to respond to, or handle, increases in its workload changes by adding or removing resources to meet processing demands. On the other hand, the phrase “massively scalable” describes a system that can scale up to handle millions of transactions per second.
A resilient application is one that is designed to continue to function despite individual system components failing. It is worth noting that, by definition, a traditional monolithic application structure cannot include resilience as a feature.
Genuinely resilient application architectures can only be built in a microservices-type architecture, with ESB-type (Enterprise Service Bus) communication structures between each microservice. Therefore, if one component fails, others can take over its functionality, ensuring the application continues functioning.
The definition of dynamic architecture is like that of scalable architecture but is also fundamentally different. Techtarget.com describes a dynamic infrastructure as a collection of cloud server “resources, such as compute, networking, and storage, that can automatically provision and adjust itself as workload demands change… [relying] primarily on software to identify, virtualize, classify, and track” these resources.
Lastly, let us tackle the benefits (and merits) of cloud-native applications, and in doing so, we’ll touch on why adopting a cloud-native architecture and strategy is hugely relevant to today’s global economic environment.
What is equally important to note is that the organizational requirements drive the research and development of new IT infrastructure (hardware and software). Technology is the enabler, not the driver. And as described throughout this text, changes in the global business world are the primary driver and enabler of cloud-native applications and their architecture.
Martin Chavez, former global co-head of the Securities Division of Goldman Sachs, notes the paradigm shift from mainframe computing to cloud-native computing that enterprise computing has been through not only represents a new way of building enterprise application architecture but has also reduced the cost of building an enterprise organization from about $50 million to circa $5 million. Organizations no longer need to set aside large sums of money for items such as:
The cloud-native model includes everything needed to spin up the infrastructure to run cloud-native applications.
Therefore, some of the benefits, not all, of cloud-native application architecture are as follows:
Cloud-native architecture is massively scalable allowing applications to scale effortlessly and dynamically.
Cloud-native applications are resilient and fault tolerant as they are built using architectures such as microservices, containers, service meshes, etc.
Because of their compartmentalized architecture, cloud-native applications are agile and have a faster time to market than traditional monolithic applications.
Cloud-native applications are cost-effective due to their ability to scale dynamically, only utilizing necessary resources, and minimizing overprovisioning; thereby, reducing infrastructure costs.
It is clear from current research and statistics quoted in this text that by adopting cloud-native architecture, organizations can leverage the benefits of this technology to create massively scalable, dynamic, resilient, and cost-effective applications that can adapt to the rapid and ever-changing requirements of the post-pandemic business and deliver value to customers more efficiently and effectively.