Engineering Director at Avenga
From flexibility, business agility, and cost-efficiency to security, redundancy, and automatic software updates, the list of reasons to make use of the cloud goes on and on. Actually, the advantages are so obvious that as far back as 2018 nine out of ten enterprises said that they had adopted the cloud to at least some degree. Still today, the percentage of IT budgets invested into cloud enabled applications is growing rapidly every year.
→ A survey by Avenga. Cloud adoption statistics: 57 CIOs share their experience.
Because the cloud is so ubiquitous nowadays, cloud-native development has more or less become a standard. However, as cloud computing has proliferated in both scope and popularity, another visible trend has emerged: more and more companies around the world are utilizing multi-cloud scenarios involving a mix of public, private, and hybrid systems. According to the “2021 State of The Cloud Report” enterprises have even entirely embraced a multi-cloud approach, with 92 percent of 750 study participants reporting that they had a multi-cloud strategy in place.
→ Explore 7-Step Guide to Creating Cloud Strategy
The reasons for using multiple cloud providers in a single heterogeneous infrastructure span from sophisticated strategic decisions to purely incidental. For instance, because of mergers or because different departments within the same company procured cloud services independently of each other. Whatever the varying reasons may be, the effect has been the same. Widespread multi-cloud adoption has led to what some call a new development imperative: “cloud agnosticism”.
But what does this term mean? What’s the difference between “cloud-native” vs “cloud-agnostic”? Is one approach better than the other? And what do businesses have to look out for to get the maximum benefit when deciding whether to go with one or several public cloud providers?
The term “cloud native” gets used pretty loosely, but most often to describe applications that are built to exploit the advantages of the cloud delivery model, which is multi-tenancy, elastic scaling, and easy integration and administration. For instance, according to the Cloud Native Computing Foundation (CNCF), “cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds”.
Dan Kohn, former executive director of CNCF, explains: “The key idea is that, rather than running an application on one machine and saying ‘OK, this is my database server, this is my web server, this is my middleware server,’ you containerize all of your applications, establish a set of requirements for them, and then have them automatically orchestrated onto your machines for you”.
However, a cloud-native architecture typically involves services and components that are tied to only one specific cloud service provider (CSP), meaning companies choose one cloud provider and going forward they exclusively stick with this partner. The term “cloud agnostic”, on the other hand, generally refers to applications and workloads that can be shifted seamlessly between cloud platforms. This means that companies, for instance, can easily move a tool from Microsoft Azure to AWS to Google Cloud Platform, etc., or the other way around for that matter, without having to fear any inconveniences due to dependencies, as the tool doesn’t rely on the features of any specific platform.
With this said, let’s have a look at the pros and cons of each approach and see which one might be a better fit for your organization.
Taking a single cloud-native approach allows companies to take advantage of the underlying platform, meaning they can use all the services provided by the cloud provider. This typically results in faster deployments that help businesses shorten the time to market of their products and services. Other advantages that are regularly cited include higher efficiency and lower costs, at least initially. Last but not least, it’s worth mentioning that native services can communicate amongst each other with ease as there is no third-party dependency.
Alas, wherever there is an upside, there is a downside. Using native services locks companies in with a specific vendor. As a consequence, moving to a different provider is either not possible without renouncing at least some part of the services used so far or it requires a lot of effort and code rewriting.
→ Read about Challenges with security in cloud native architectures
And, there may be reasons to change cloud providers. Certain services that are no longer supported is one example. Missing features your company would like to use is another one. Possibly a very persuasive offering by a different cloud technology provider is yet one more example. Not to speak of the necessity to scale very quickly whenever a situation requires doing so, and so on.
The advantages of cloud-agnostic development are pretty much the exact opposite of the downsides that come along with cloud-native developments. First of all, a cloud-agnostic strategy helps organizations to avoid vendor lock-in which can be a problem if the vendor changes product offerings, discontinues services, raises prices, or even worse goes out of business.
Another argument is that using a cloud-agnostic approach gives companies a lot more flexibility and scalability and, we must not forget, the possibility for customization, as they can select the best features from what different cloud platforms offer, depending upon their specific business requirements.
Risk management can easily be enhanced as well, simply because of redundancy, but also because having systems in place across various clouds means having various solutions at hand for a wide range of services. One more reason to choose a cloud-agnostic approach that shouldn’t be overlooked, is the special requirements for data protection and persistence that many companies have in place.
→ Here is a look at the hybrid cloud and if it is here to stay.
Once again, all the advantages just mentioned have their price. Forone, businesses have to pay for higher flexibility which equals greater complexity. The latter usually makes implementations more difficult, which means that the initial development of apps is more expensive. Another possible disadvantage can be that a cloud-agnostic approach limits an organization’s ability to fully utilize the strengths and capabilities of any one cloud provider, for instance, because certain apps cannot use some of the in-built features a cloud platform offers. Last but not least, developing so much from scratch takes time. Therefore, a complaint sometimes heard is that it takes too long for companies to get their offerings to market.
When everything is said and done, cloud agnostic vs cloud native is not a question of right or wrong. Both approaches have their advantages and disadvantages. Eventually, the right choice always depends on the individual requirements of each business, as well as its strategy.
There are even cases when it could make sense for organizations to go both ways at the same time and divide their apps into two groups: apps that are served better by a cloud-native architecture and apps that are served better by a cloud-agnostic approach. In this way, some of the apps benefit from consistent and easily scalable performance, while others can make use of unique cloud services offered by a specific cloud provider.
A 7-step guide with recommendations on how to create and implement an effective cloud strategy and what types of analysis and evaluations can help with assessing a future cloud architecture.
A comparison of cloud service providers: market share, cloud offerings, cost and price, locations, strength, weaknesses, and benefits.
Explore the different cloud migration types and their pros and cons to gain a solid head start with cloud migration. An overview of application migration approaches.