Beyond cloud-native: When portability is paramount has been saved
Beyond cloud-native: When portability is paramount
As companies increasingly adopt multicloud strategies, application portability can be critical. For many, that requires a new development approach.
A blog post by Ashish Verma, managing director and US leader for data and analytics modernization, and Sanjeev Taran, specialist leader, Deloitte Consulting LLP
In the early days of cloud computing, many of the enterprise world’s software efforts focused on making on-premise applications cloud-ready. With the help of infrastructure as a service (IaaS) technology, IT departments often lifted and shifted applications into the cloud to reduce hardware costs and overhead, among other benefits.
It wasn’t long, however, before organizations recognized they could derive additional value by going cloud-native, reorganizing people and processes and reworking applications with the cloud in mind. Toward that end, many embraced cloud providers’ platform as a service (PaaS) capabilities such as orchestration and streaming. In addition to lower costs, the rewards have included improved security and extensibility and faster time to market.
Today, cloud is ubiquitous, cloud-native development is more or less standard, and companies are increasingly embracing multicloud scenarios involving a mix of public, private, and hybrid systems. For many, the result is a new development imperative: cloud-agnostic software.
The Lock-In Problem
Cloud-native software is designed specifically to take full advantage of both the platform and the infrastructure capabilities of the cloud, making it possible to deliver maximal speed, resilience, and dynamic scale while adapting automatically to changing operational conditions. Developing these applications typically involves using technologies such as containers and microservices along with development methodologies such as Agile and DevOps.
Many enterprises have embraced the cloud-native model to enable transformation and maximize the value of their cloud investments. For some, however—particularly those using multiple cloud platforms—there’s a growing awareness of the risk of vendor lock-in, or the danger that relying on a particular provider’s unique technology can limit the possibilities for enterprise cloud users.
Developers creating software for the cloud must typically work within the constructs of the platform they’ve chosen, including the set of services delivered by the provider for storage, compute, networking, and security. In most cases, these services are not equivalent across providers, so applications designed for one cloud platform can’t be ported to others.
That lock-in can be reduced by tapping open source offerings and opting to use IaaS instead of PaaS wherever possible, but it is currently very difficult to eliminate entirely. While some standards groups are working on a reference architecture, truly cloud-agnostic applications—those that are completely portable across providers and platforms—require a still-emerging level of abstraction.
Cloud-agnostic software is developed with a higher level of abstraction from the specifics of any one cloud platform, so it can run equally well on all of them. Typically, that means using software-defined storage and networking along with portable containers, among other tools.
Organizations can begin their journey toward more cloud-agnostic software development in several ways:
- Embrace the right tools. It’s important to choose technologies that promote flexibility; supporting software stacks will help them run at scale across public, private, and hybrid clouds. In general, it can be a good idea to use open source tools familiar to a large community of developers. The Cloud Native Computing Foundation, an open source software foundation, promotes the adoption of vendor-agnostic, open-source, cloud-native computing technologies and offers a good resource map covering many data management disciplines.
- Use managed services with caution. The risk of vendor lock-in is inherent in many managed services, so minimizing their use can help reduce that risk. Avoiding these services can sometimes limit options for capabilities such as network design and security, however, so it’s often necessary to strike a careful balance between the risks and the benefits.
- Design with portability in mind. Object storage technologies tend to be easily portable, as do distributed computing frameworks such as Apache Spark. In general, it’s best to avoid APIs for serverless computing and data pipeline services from vendors that force lock-in. Containerization can be useful when building both stateful and stateless applications that are portable across providers.
The evolution of cloud computing so far has brought a world of new benefits to companies of virtually every shape and size. With the right tools and a shift in thinking, organizations can begin to develop cloud-agnostic software that opens the door to the next level of rewards.
This article first appeared on the WSJ.