Recently the hype for docker is big. The hype and interest from lot of open source communities was able to attract a lot of investment to docker and related services. However is docker ready for big organizations or is it already in enterprise?
Though the container technology itself is not new, docker has made it easier to leverage the technology and was able to present what it could solve, and I have to say it did that well. Most of the startups are now either already using docker or at least they have plan to start using it. However the enterprise story is a bit different. When I say big enterprises in this post, I don’t mean big tech companies like google, netflix. I am more talking about companies like big banks, telcos, retails. Forget about plans for using it near future, I have not seen people even talking about it in my domain(I am in investment banking sector). However this is the same with virtual servers 10 years back, just recently many organizations have started using virtual servers. And now virtualization is everywhere in the enterprise.
There are quite a lot of road blocks before docker can land in enterprise.
Docker is built with developers in mind, but operations staff still has a big role to play. In big enterprises the concept DevOps is not yet main stream. Enterprises have multi level operations staff(Hardware, OS, application, db). Now when docker comes into picture, you still need hardware, OS operations staff. The application operations team will not just run the containers given by developers, they will need to learn about docker now. Docker is not super easy to learn for everybody for developers it might be easy but for support staff it could be difficult. We will probably need Docker operations staff.
Docker makes it super easy to package your applications so that multiple instances can be run with the same setup in a distributed environment to handle load. Docker community is more focused on tools like Kubernetes, CoreOS which are primarily build for large scale deployment. However not every application require that scaling. There are more internal applications than external ones in any enterprise. At least in big financial institutions I know there are more than 10 internal applications for each external facing application. These internal applications does not handle much load and one or two instances of the applications is more than enough to handle load.
I am not saying that docker cannot run on big machines but the tools around docker are build so that it can take advantage of cheaper commodity hardware. I have not seen any of our least critical services run on commodity hardware. most places that I worked have tried to consolidate their hardware using bigger machines. However I have also seen that VMs are sometimes treated as commodity hardware, but the VMs themselves use beefier machines underneath. The shift to VMs took a long time, probably we will see the shift to docker soon.
The enterprise developers mostly have a business problems to solve at hand. These developers understand the business, business takes priority over everything else. I am not saying that they don’t like to try new technology, but they don’t have as many open choice as others developers. It takes too long to introduce a new piece of technology. The good developers I have seen does not like to maintain infrastructure, docker images are kind of like infrastructure.
You have to agree that troubleshooting an applications is more complex with a docker container than plain VM. You now not only just have to understand the OS but also all the docker jargon. How network works in a Docker, what commands work in docker, where is the file system.
There are quite a few issues need to be addressed before docker can be adopted in enterprises. But I think all of these can be solved. We might not see docker in the near term, but probably the enterprise will start adopting in the long term.