Cloud portability: Choosing your path Bookmark has been added
Cloud portability: Choosing your path
Deloitte on Cloud blog
Application portability is a growing consideration as the array of private, public, and hybrid cloud options continues to expand. Three basic patterns capture the many varied approaches used to port across clouds: standards, abstraction and containers. Let’s take a look at each.
July 19, 2018
A blog post by David Linthicum, managing director, chief cloud strategy officer, Deloitte Consulting LLP
Longtime techies like me are no doubt familiar with the Portable Operating System Interface (POSIX), a group of standards to maintain compatibility between operating systems. Writing programs to POSIX makes sense because by using it you can be pretty sure programs will port easily across a large family of Unix derivatives, including Linux.
The POSIX concept is fairly straightforward: Force the platforms to maintain a consistent set of APIs from platform to platform. There’s a tradeoff, however. The potential benefits of some platform services may be lost because you typically forego use of non-standard (or native) APIs to maintain compatibility.
The same applies to application portability between modern cloud platforms. The success of any portability standard will depend on how well it exposes cross-platform interfaces. The more capabilities the common interfaces provide, the greater the standard’s potential value in retaining native features and functions. This applies both when supporting applications on specific platforms and moving applications from platform to platform.
Containers are gaining favor as an approach to application portability, notably as a way to work around the issues of virtualization. Docker comes to mind first when thinking about containers and the cloud. The open source project provides a way to automate the deployment of Linux applications inside portable containers, and, while Docker is a standard today, a case can be made for it to become a category.
Along with application portability, Docker containers can distribute workload more finely as they move from cloud to cloud at will. For years, whole systems have been componentized using containers, abstracted from their physical form to move from platform to platform. Docker and similar solutions such as CoreOS, now part of RedHat, bring the container approach to the cloud, enabling movement of Linux applications from cloud to cloud. Over time, the container architecture may be applied to other operating systems and take on other capabilities.
Docker is much lighter weight than other application portability approaches, extending the common Linux Containers format with a Linux kernel and a high-level API. Combined, these resources run CPU, memory, I/O, and network processes in isolation. Docker also provides namespaces to completely isolate an application's operating environment view, including process trees, network, user IDs, and file systems.
Along with standards, abstraction, and containers, it would be an oversight to not mention virtualization as another application portability approach. In many case, virtualization is proving too cumbersome for cloud portability. Docker's lightweight platform abstraction is widely considered to be more efficient than traditional VMs for creating workload bundles that are transportable from cloud to cloud.
Interested in exploring more on cloud?