Why Cloud-native Applications Are the Future of Software
Why Cloud-native Applications Are the Future of Software by Paul Gillin
When building new applications today, many companies think “cloud first.” But with recent technology developments, a better approach is to think “cloud-native.”
Cloud-native applications take advantage of platforms and processes that were born in the cloud. They’re highly scalable, easy to modify, and connect to cloud services to extend capabilities without a lot of coding.
What Are Cloud-native Applications?
Cloud-native applications typically use one or more constructs that originated in the cloud. Here are four that merit special attention.
1. Software containers
Software containers are portable, integrated operating environments encompassing an application and all the software components needed to run it. Containers have become a wildly popular alternative to virtual machines because they’re small, quick to deploy, and can be stored in libraries for reuse. Once you write an application in a container, you can move it to any platform that supports containers (which is most of them), and it will run without a hitch. That means your application isn’t beholden to a single cloud platform, and it can run on any device with enough resources to support it, from a laptop to a supercomputer.
Microservices are loosely coupled software services that can be strung together to create an application. This saves developers from having to reinvent the wheel and makes applications flexible and extendable. Applications composed of microservices are pieced together like Lego blocks with minimal custom coding, facilitating faster and more reliable development. New services can be swapped in or added without extensive integration testing.
3. Software-defined infrastructure
Replacing switches, dials, and plugs with software almost entirely virtualizes hardware functionality. This makes it easy to scale capacity up and down, reallocate resources, and start and stop services automatically through software. Cloud-native applications assume that the underlying infrastructure is fluid and adaptable to their needs.
4. Application program interfaces (APIs)
APIs are software connectors that expose functionality that other software can use. They make it easy to extend or customize applications without touching the underlying code, which is a good practice to avoid in general. APIs also enable developers to tap into rich functionality in other applications.
A good example of an API-enabled application is Google Maps. With Google Maps, a developer of a real estate application can integrate mapping functionality from Google into its program by requesting geographic information using APIs. Without needing to build map functionality from scratch or install an application on their server, imagine how much time the developer can save.
Why Cloud-native Development Matters
What makes cloud-native development so valuable? The following three qualities are what have savvy companies paying attention.
Cloud-native applications can change with the needs of the business without creating dependencies that lock customers into a particular version of the software. For example, if a company wants to make an application available on mobile devices, it can build the mobile front end and use APIs to access data on the server without modifying any code on the back end. This loose coupling makes it possible to make changes to either application without breaking it.
Cloud-native applications use software-defined infrastructure to reduce or eliminate hardware dependency. This approach adds commodity servers for horizontal scalability rather than requiring the addition of more expensive processors, storage, and memory to existing servers. Horizontal scalability is what makes massive cloud services like Amazon and Facebook possible.
Using containers, developers can write applications that run on everything from a smartphone to a mainframe without changing the code. With the growing popularity of “edge computing,” a distributed processing architecture that pushes automated decisions to the far reaches of the network, it’s ideal to have the ability to deploy applications wherever they’re needed.
Where Low-code Enters the Equation
Working directly with containers, microservices, and APIs is not a task for beginners, but a low-code platform can hide much of the complexity. When selecting a provider, ask if the platform supports the cloud-native constructs described above and look for a full-featured platform-as-a-service. It will include a comprehensive set of tools for development, operations, and maintenance.
Many low-code development tools were built before cloud-native technologies came into widespread use. Their developers may have retrofitted them to run in the cloud, but there’s a vast difference between being cloud-compatible and being cloud-native. Most legacy applications can run in the cloud, but they can’t take advantage of the extensibility, scalability, and portability benefits that cloud-native architecture provides.
That said, they can still benefit from running on cloud platforms, and there can still be significant value in enabling legacy applications with APIs or building extensions on top of them using microservices. For example, “green screens” from the mainframe days can be replaced with graphical user interfaces (GUIs) by selectively exposing input and output fields via APIs that map to GUI-based primitives. Some legacy applications can be completely encapsulated in containers to take advantage of cloud scalability and portability without requiring any code changes.
To take full advantage of cloud-native development, it’s necessary to think differently about the way you build software. Traditional approaches with their exhaustive specifications and six-month lead times need to give way to iterative processes that deliver functionality quickly as services.
The new agile development methodologies that cloud-native firms embrace emphasize modularity, reusability, and frequent code releases. Developers must think in terms of tapping into services that are already available instead of building their own. Because new services are easy to add, it’s often simpler for the developer to show the end-user customer a new feature in action than to write a spec for it.
There’s no place for “not invented here” thinking when building cloud-native applications. Creativity is expressed in the services developers tap to create features that delight users. That’s a reward in itself.