An interesting comparison and important distinctions
Is there a difference between Cloud-Native and Cloud-Migrated computing? What do these terms mean? Are they just buzzwords used to describe Cloud-Computing in general?
Cloud-Computing has become one the hottest new technological advancements in the last decade. Many businesses around the world have refocused their IT budgets to benefit from what the Cloud has to offer. These benefits include more scalability, reliability and flexibility, at a much lesser cost then legacy on-premise systems.
To understand how important Cloud-Computing has become, let’s take a look at what analysts are saying about this technology. Gartner indicated that “Cloud computing has seen huge growth since 2010”, and this has “exceeded initial expectations of technology industry analysts”. IDC stated that by 2022, 70% of enterprises will integrate Cloud management and that by 2025, 90% of all new apps will be Cloud-Native.
Cloud-Computing refers to software, applications, systems, and platforms that “live” in the Cloud and are accessed through a web browser via the Internet. Most have adopted a subscription-based pricing model, and the vendors handle all software and hardware maintenance. This is different from traditional on-premises systems which are installed in an organization’s building, on the organization’s servers, and are maintained by the organization’s IT department.
The term Cloud-Migrated used in this blog, is also commonly coined in the tech industry as Cloud-Hosted, Cloud-Enabled, Cloud-Based or even Cloud-Washed. It describes legacy systems, that have historically run on-premise and that have been migrated to run in the Cloud. Hosting software in the Cloud provides serious benefits compared to hosting it on physical servers in an organization’s premises. Similarly to the Gold Rush of yesteryears, legacy software vendors have hastily been migrating (some faster than others) their on-premise systems to the Cloud in order to capitalize on the financial benefits of the Cloud.
Cloud-Native systems on the other hand, are born in the Cloud and are truly integrated with the Cloud’s formidable infrastructure. They are conceived and built from the get-go to take full advantage of all the Cloud technologies have to offer, representing huge costs savings and performance gains that can directly be passed on to customers.
While Cloud-Native and Cloud-Migrated offerings share many common characteristics, they are very different from each other in important ways. Let’s find out how. We’ll first start by describing Cloud-Migrated applications.
As stated above, a Cloud-Migrated application is basically legacy software previously designed and built to run on an organization’s physical servers and modified to run in the Cloud. Legacy software vendors quickly understood that it was much faster and cheaper to migrate existing code to run in the Cloud, than to rewrite an entire application from scratch to run on the Cloud’s virtual computing resources.
These applications offer several benefits to be sure. The appeal of a Cloud-Migrated application for the user is its convenient access from anywhere, at any time, through a browser or hand-held device. For organizations, the attractiveness comes from the proposition that they no longer need to be bothered with installing, maintaining, or updating the software and hardware. The vendors take on this burden, which is extremely convenient and represents significant cost savings for the customers.
Most Cloud-Migrated applications are not a one-size-fits-all. The initial setup and deployment can get quite involved. Each customer uses a unique instance of the software, which requires specific hardware configurations. All the limitations, problems and other DNA shortcomings they inherited from the originating legacy systems need to be dealt with. The extra man-hours often required to customize an application for a customer’s specific environment, are typically directly billed to the customer. It can easily take several hours or days to setup a Cloud-Migrated application. In comparison, Cloud-Native applications can be up and running in seconds, at no extra cost!
Cloud-Migrated applications are Monolithic. They follow a traditional software architecture in which all the software components are part of a single program. They therefore can only scale horizontally. When clients need more oomph, they ask the vendor or their Cloud provider for more resources, which entails setting-up a new server and re-installing the application. This can get pretty costly depending on the application and the environment, and can take several days or even weeks if contracts need to be re-negotiated and budgets re-approved.
For application developers, updating Cloud-Migrated applications is difficult.
Upgrading one part of the code can unknowingly interfere with the entire application. Cloud-Migrated applications as a result, go through long debugging cycles to insure quality. New releases require to be manually installed, causing disruption and shutdown of the whole application. This negatively impacts clients, often costing them time, money and efficiency.
Now that we have a good understanding of the benefits and shortcomings of Cloud-Migrated applications, let’s take a look at Cloud-Native applications.
Similarly to Cloud-Migrated applications, Cloud-Native applications live in the Cloud and require no hardware investments and maintenance from the customers. However, Cloud-Native applications have many more benefits. Let’s look into them.
Cloud-Native applications are born and live in the cloud. This is important, because it means that they are specifically designed and developed from the ground up to take full advantage of the Cloud infrastructure.
Cloud-Native applications are non-monolithic. They’re modular by design, which makes them extremely flexible and adaptable. They’re broken down into microservices – small independent modules that run as services using lightweight protocols to talk to each other. One module can be worked on and released within any Cloud environment, without affecting the other microservices, nor interrupting the processes of the entire application. This modular application design directly translates into accelerated application design, development, and lifecycle management, and avoids charging for software update fees.
Microservices can also be integrated with a multitude of other tools, algorithms, software, application layers, databases and operating systems, through the simple use of APIs, allowing customers to follow their own best-of-breed strategy. SDKs, can also be made available to customize certain modules without again, affecting the whole application.
Cloud-Native applications are multi-tenant, which means that a single instance of the software can serve multiple organizations. This is a huge breakthrough in software design. There is no system set-up required and a new customer’s subscription plan can easily be activated in seconds. Multi-tenancy gives vendors true economies of scale, allowing them to price their applications very competitively compared to Cloud-Migrated applications. Adding additional users is also inexpensive, which is another reason Cloud-Native applications tend to be very cost-effective.
Multi-tenancy and microservices render Cloud-native applications very adaptable. They can be updated with new functionality and bug fixes, and address software problems early, quickly and efficiently. The software provider no longer needs to update multiple instances of the software every time a new release comes out. The application is updated just once. New features are instantly available to all customers, with zero downtime. Hence, one of the characteristics of Cloud-Native applications is that they can constantly be updated, some as frequently as every week or every hour, without disrupting customers’ environments. Customers no longer need to wait months or years for new features to be delivered, and there are no painful upgrade procedures.
Cloud-Native applications run in containers and are dynamically orchestrated.
This is another technological breakthrough, which allows Cloud-Native applications to naturally call on the Cloud infrastructure’s internal services for scalability, high availability and redundancy, on an as-needed basis. A container can start within a second. Combined with the elasticity of the Cloud, new capacity can be added automatically in a minute. As a result, Cloud-Native applications scale horizontally in addition to vertically. They scale vertically, up or down, by adding more resources, such as CPU or RAM to an existing server. This is done dynamically, which means the application can call for extra power during high scalability needs, and scale back down again during low usage. These power management efficiency gains are passed down directly to the customers as cost savings.
Cloud-Computing has become an essential technology that enables organizations to reduce their IT costs and maintenance headaches. However, when looking for a Cloud-Computing solution, organizations need to be aware of the difference between Cloud-Migrated and Cloud-Native solutions.
Although Cloud-Migrated solutions offer considerable advantages compared to their on-premise ancestors, they pale in comparison to their born-in-the-Cloud cousins. Cloud-Native applications are dynamically scalable, and can greatly reduce an organization’s IT costs while improving their operational efficiencies.
As the DZone article states: “Cloud-Native Applications are the Future. Applications created in the cloud are better equipped to make full use of the scalability and maintenance benefit that the cloud offers.”