Containers go beyond the hype to move enterprises forward with cloud-native applications. Abstracting services with them could commoditize public clouds. Credit: 140886127 © kkssr | Dreamstime.com The advanced features of public cloud providers’ native services offer clear benefits. Most enterprises now exploit cloud-native patterns in developing new applications, even in the augmentation of migrated applications. However, most enterprises would like to minimize lock-in to specific cloud service providers. Guess what? When you leverage a cloud provider’s native services, those services are not transportable across clouds. This makes it obvious why containers have become a megatrend. IT typically considers containers a good idea because everyone is using them, and it’s good to follow the crowd that’s also creating a development ecosystem. Also, containers can scale by using cluster managers and orchestration services, such as Kubernetes. Finally, containers are a nifty way to abstract the applications away from the underlying native services, which make the applications more portable from cloud to cloud. Also, containers make it less important to consider the features and functions of specific public clouds than when applications are not abstracted. So, what’s the downside to containers? There’s the obvious fact that containers themselves, including all the goodies in the container ecosystem (orchestration, security, storage, etc.), are becoming a common platform that runs across public clouds. Today’s developers and application architects no longer think in terms of storage and compute services from a specific cloud provider. Instead, they consider storage and compute services in general as abstracted notions that can be translated into specific native services using containers that address these resources as common services and are treated the same across clouds. To the application and to the developer, native services are now common services that operate independently of the public cloud platform the application leverages. The specific value that public cloud providers offer does not really matter anymore unless performance issues or outages occur. Thus, the public cloud provider becomes a common, commoditized utility service. We’ve seen parts of this movie before. Public cloud services brokers promised to find and utilize the best and least expensive cloud services among the different providers. However, you still had to leverage these services using the native API or interface offered by that provider. What’s different is that most of what a cloud service is, including the interface, management, and operations, is abstracted into a set of common approaches and services that operate across cloud providers. This could make cloud services largely the same in terms of what developers and the actual applications see. Moreover, this could extend to other native services such as security, governance, observability, data storage, etc. It all becomes a set of abstractions where the cloud brand may not even be known. Although some of these capabilities exist now, most container developers are very aware of what cloud or clouds they use. However, the idea of abstraction to remove both the conceptual and real dependencies on cloud providers may make its way into more and more cloud development. Certainly, if the underlying cloud services become commoditized, containerization makes the investment in applications that much more valuable. Moreover, the cost of application development and deployment should fall with containerization, given that abstracted services can be mixed and matched. Where does this leave public cloud providers? Businesses will leverage services using a provider’s native interface or via an interface that can translate native services to abstracted common services, either through containers or other mechanisms. In either scenario, the providers make money. I view this as a win/win. Related content feature What is Rust? Safe, fast, and easy software development Unlike most programming languages, Rust doesn't make you choose between speed, safety, and ease of use. Find out how Rust delivers better code with fewer compromises, and a few downsides to consider before learning Rust. By Serdar Yegulalp Nov 20, 2024 11 mins Rust Programming Languages Software Development how-to Kotlin for Java developers: Classes and coroutines Kotlin was designed to bring more flexibility and flow to programming in the JVM. Here's an in-depth look at how Kotlin makes working with classes and objects easier and introduces coroutines to modernize concurrency. By Matthew Tyson Nov 20, 2024 9 mins Java Kotlin Programming Languages analysis Azure AI Foundry tools for changes in AI applications Microsoft’s launch of Azure AI Foundry at Ignite 2024 signals a welcome shift from chatbots to agents and to using AI for business process automation. By Simon Bisson Nov 20, 2024 7 mins Microsoft Azure Generative AI Development Tools news Microsoft unveils imaging APIs for Windows Copilot Runtime Generative AI-backed APIs will allow developers to build image super resolution, image segmentation, object erase, and OCR capabilities into Windows applications. By Paul Krill Nov 19, 2024 2 mins Generative AI APIs Development Libraries and Frameworks Resources Videos