Moving the application container out of the platform vendor's control, and into the hands of the users, was a brilliant move. The application container could now be used as a portable unit of application delivery and operations. Enterprises devops teams are now no longer locked into a single platform.
Enterprise devops teams should be able to choose the best language, services, and technology for their applications. To enable this, it makes sense to separate platform services that manage the application life cycle, from the services that are used from within the application, for data management, security, and other common application functions.
The platform layer can now be decomposed into two separate but cooperating layers:
- Container services to manage application lifecycles on any infrastructure;
- Shared services (e.g. databases, messaging systems, etc.) selected by the enterprise DevOps teams.
Enterprises can now compose their own application platforms by selecting best of breed services for each layer. The portability and flexibility enabled by allowing users to control their application containers, also makes it easier for enterprises to leverage multiple cloud providers.
With the container services approach, there are no limitations or restrictions on development languages, tools, and services. Enterprises can now use open tools to package their application code into portable container images which are executed by the container services layer. This is essential for enabling Microservices style application architectures which are conducive to empowering small autonomous devops teams.
Application devops teams can choose their own shared services and standardize where it makes sense. The shared services may be run on the same container service, or in some cases may be entirely consumed as SaaS. A decision to change a language, or service for an application, does not impact the overall platform or other applications on that platform.
IT administrators now have full visibility and control of infrastructure services. The container services layer can help automate provisioning of infrastructure resources by integrating with infrastructure services, and without adding additional abstractions on the infrastructure layer. This allows enterprises to choose any cloud provider and leverage best practices for security and infrastructure management.
Container services are a game changer for application platforms. They enable all the benefits of a traditional PaaS, but without any compromises. Enterprise teams can now choose one or more cloud providers, select a container technology, select best-in-class container services and shared services, to compose their own platforms.
In my experience with customers at Nirmata (I am a co-founder), containerizing existing applications and adopting a container services approach and has led to significant improved efficiencies and developer productivity gains -- which translates to immediate cost savings and increased innovation for the businesses. It's a great time to be coding!
Sign up for CIO Asia eNewsletters.