We’ve often posted about it on this very blog: cloud warrants new “cloud-native” architectures, which are fully automated, and where every single resource is considered disposable because it is so easily replaceable.
What we haven’t posted about (until now!) is why cloud native is a good design paradigm in the first place. But before we get to that, let’s look at how exactly cloud native architectures are different from traditional infrastructure.
Lifecycle Management, from Infrastructure to Application
The defining characteristic of cloud native architectures is thorough lifecycle management automation. Thanks to that automation, cloud native applications are able to autonomously handle scaling needs, and withstand failures.
In more detail:
Cloud-native applications are scaled by dynamically adding and configuring hosts when needed, instead of relying on more powerful or resized hosts. In other words, cloud-native applications autoscale horizontally, instead of vertically. Therefore, cloud native applications can scale regardless of whether the underlying infrastructure can.
Cloud-native applications handle failures by automatically provisioning replacement nodes, instead of relying on hardware-level or hypervisor-level high-availability. Therefore, cloud native applications are highly-available regardless of whether the underlying infrastructure is.
To summarize: cloud-native applications largely provide for their own lifecycle management, and do not rely on the underlying infrastructure to provide it.