Let me be clear: Docker is a fantastic technology that is enjoying widespread adoption by enterprises. A recent StackEngine survey found that more than 70 percent of respondents are actively evaluating or using it. However, for reasons that will be discussed below, Docker alone is not sufficient for enterprise use.
Two Problems Enterprise IT Must Confront
There are two significant problems that affect most enterprise IT teams today. One is that Devs and Ops don’t always play well together. Enterprises must deal with the challenge of handing off code from developers to operations teams. There isn’t necessarily a harmonious relationship that exists between these two constituents. And often there’s tension.
The other problem is that shipping code can be quite hard. That’s because there’s no simple way to package your application code on your own, complete with your system dependencies. You are dealing with code across different operating systems, different hypervisors or different infrastructures-as-a-service. That is a real challenge in shipping software.
What’s Great About Docker
Enterprises are excited about Docker because it seems to solve these problems. The first problem appears to be fixed because there is a clean separation between IT ops and developers. Developers worry about what goes inside the Docker container and IT ops worries about what goes on outside the container. This makes it more convenient – the developer can provide the container (and whatever is inside) to IT ops and then they can run with it. Now, it’s a very portable solution.
The second problem seems to be solved because you’re able to package up everything related to your app into a single application process. However, Docker only partially solves these problems.
What’s Needed for Docker
Think of a Docker container as LEGO, with each individual brick representing a Docker container. Now, the beauty of LEGO is that you can assemble the bricks and build all sorts of amazing things. Same thing applies to Docker containers. However, with Docker, issues such as orchestration, monitoring, logging and scaling become a concern for enterprises. A Docker container is fine for a start-up or a small company if it’s only running a handful of containers, but what if you’re running hundreds or thousands of them? These are just some of the issues that need to be considered, which are above and beyond what the Docker container itself can provide, and why Platform-as-a-Service (PaaS) complements Docker.
Now let’s address three specific shortcomings of the containers themselves.
1. Getting the application into the container
Loading the container is problematic. How does a developer get his or her application into the container? And there’s also the burden of building Docker images for the developer, who needs to be focused on the code, not on the various system dependencies. A solution for this is called Buildpacks – the best and most portable option for PaaS. The majority of the PaaS ecosystem is standardizing on them. Buildpacks allow you to build up your stack, including all the system dependencies inside the container, as well as configure your application’s environment. Developers just need to supply and think about their application code. They don’t have to worry about anything else. Buildpacks configure your application.
2. Managing the shipping process
Imagine that developers suddenly hand off a huge stack of Docker containers to IT ops and say, “Ship these. Deploy these to production.” How does IT ops ship these containers in a systematic way to manage performance, security and compliance? The containers have many LEGO bricks. How do they manage these LEGO bricks?
An answer to that is something called Docker Schedulers. There are a number of schedulers in the marketplace today, and they orchestrate and run the containers for you and distribute them across your cluster – whatever your Cloud cluster is. A scheduler is resilient, so if a container or machine or application goes down, it redistributes those containers elsewhere. From the end user’s perspective, there’s no downtime. While these schedulers are helpful in solving part of the shipping problem, there is still another important issue that enterprises face that a scheduler can’t solve.
3. Self-service for developers
A third issue is related to enterprise culture where there is no self-service in place for developers. There’s a divide that exists between developers and IT ops. In some respects, you can say there is a wall between them. Often, what happens is that a developer will build an application and then throw it over the wall to IT ops and hope that the application will work. As a result, deploying an application to production takes literally weeks or months to do. It’s not uncommon to hear how frustrating it is and how long it takes for developers to deploy applications in production.
Infrastructure plays a part in this cultural divide. Because the enterprise is still using an outdated ticketing system to get access to virtual machines, access to compute cycles can take weeks when it should be literally minutes.
We need tools that empower developers to break down this wall themselves. They need to be able to self-serve in a way that works for the enterprise. Give the developer freedom to deploy on his or her own, but also address the security and compliance needs of the enterprise, as well as managing multi-tenancy. The developer can focus on his or her app, but the enterprise needs to think about all of the apps that are being submitted by various developers. How do you deal with this? How do you break down this wall that exists between developers and IT ops?
The answer is PaaS. With PaaS you have a platform that sits between your applications and your infrastructure. This platform is the same one that goes from development to QA to staging and to production, giving a seamless application delivery experience. The developer who is building an application does it in such a way that when it’s ready, they pass it to QA and it works. They’re no longer throwing it over the wall – they know it’s going to work because everybody is using the same platform.
A Comprehensive, Docker-based Approach
The creation of Docker has enabled enterprise IT to solve key challenges in the creation of new applications. It has also fostered collaboration among providers for Docker integration. PaaS is noted industry-wide as complementary to Docker, and using these solutions the enterprise can create a well-rounded environment in which applications can thrive.
About the Author: As CEO and president of ActiveState, Bart Copeland brings more than twenty years of management, finance and technology business experience to his role. He is passionate about technologies that help people lead more productive and enjoyable lives. He holds an MBA in Technology Management from the University of Phoenix and a Mechanical Engineering degree from the University of British Columbia.