Portability means that you can move an application from one host environment to another, including cloud to cloud such as from Amazon Web Services to Microsoft Azure. The work needed to complete the porting of an application from one platform to another depends upon the specific circumstances.
Containers are one technology meant to make such porting easier, by encapsulating the application and operating systems into a bundle that can be run on a platform that supports that container standard like or . But .
The reality is that porting applications,whether they’re in containers or not, requires a great deal of planning to deal with the compatibility issues of the different environments. The use of containers does not guarantee that your containerized applications will be portable from platform to platform, cloud to cloud. For example, you can’t take a containerized application meant for Linux and run it on Windows, or the other way around.
Indeed, containers are really just a cool way of bundling applications with operating systems. You do get enhanced portability capabilities with containers, but you don’t get the “any platform to any platform” portability that many believe it to be.
Of course, enterprises want portability. And you can have it. All that’s needed is a greater planning effort when it comes to creating the applications in the first place.
The fact is that all applications are portable if you have enough time and money. The game here is to create applications where the least amount of work is required to move them from platform to platform, cloud or not. Using containers or other technology can help you in providing cross-platform application compatibility, but they are just part of the equation.
So, portability is not binary, meaning that it exists or not. Instead, it’s shades of gray—the “it depends” answer that so many people in IT leadership hate.
Perhaps the most critical thing to understand about portability is that it comes at a big cost: reduced functionality due to using the lowerst common denominator of capabilities supported across all environments. The more your applications use native platform or cloud features, the less likely that your applications will be easily portable. The reason is simple: There are many desirable capabilities that are tied to a specific operating system, language, cloud platform or other technology, and those just can’t be moved as is. And sometimes not at all.
The only way to mitigate this is through planning and design. Even then, the technology will always be changing. Portability will never be binary, always shades of gray.