Containers Are Not a Replacement For Virtualization
The contingent of anti-container, anti-Docker folks are missing the point. Containers are not meant to replace virtualization.
Join the DZone community and get the full member experience.
Join For FreeCurrently there is a flame war between Application Containers and Virtualization. However, to me comparisons like www.boycottdocker.org are totally missing the point. Application Containers are not about replacing Virtualization. I believe instead most application container run on-top of VM's either directly or in a automated infrastructure (e.g. Cloud) solution like OpenStack.
In this article I will give my point of view on this topic, but first I should mention that I'm a strong believer in Application Containers like Docker containers. Even so I will try to keep this article as neutral as possible.
Technology Cycles
Just like the stock market goes up and down, so does usage of different technology cycles. We've all seen technologies almost disappear and then re-emerge again. For example in 1996 many of the application servers where using Server Side JavaScript (SSJS) for developing application (e.g. Netscape's LiveWire, Microsoft ASP, BroadVision One-to-one server). Then Java and Java EE came along and shifted the technology usage for server side business logic. Lately SSJS has again gaining traction in application servers like Node.JS and Vert.x.
I believe that the reason for these technology cycles are more based on echo system and developers ease of use. Sure JavaScript has evolved tremendously since 1996, but I believe that SSJS is gaining traction because it's more or less a de-facto standard for web development. Developing client-side and server-side in the same language makes some organization more effective. There are also much better tooling with IDE support, testing framework, etc for SSJS today.
The Best Technology Varies Depending On Your Point of Vie
Different technologies have different benefits and a one-sided comparisons will not have that much impact of their adaptation. As an example when Java first started to get traction by developers there where plenty of polemic articles/studies comparing C/C++ with Java that favoured C/C++. I used to work at a Company called BroadVision from 2000-2005 and while many others vendors where shifting to Java, BroadVision where sticking to C/C++, Corba, and SSJS. From a technology standpoint this was the best decision. C/C++ was more performant, Corba was superior to early version of Java EE with great support for transactions and security and SSJS where easier than JSP. However the development process (dev, test, product) etc was horrible. Since many of our customers where using SPARC I had a portable SPARC laptop which was extremely expensive (and not very fast), just so that I could develop C/C++ component for the customers. Many of our customer didn't have that luxury and had to compile there code on a server increasing their development round-trip.
IMO there where two major benefits of Java. Firstly JDK was free to use for development and many application server vendors offered trial version so that developers easily could start using it. Secondly the write-once, and run anywhere paradigm meant that developers could develop on their Desktops/laptops without having to compile on a server.
Why We Should Care About Application Containers
Different application containers technologies have different technical drawbacks, but the what decides if a technology becomes popular is if these drawbacks are relevant to the current echo system. Trends like DevOps and CI/CD requires easier packaging and delivery of applications. Another trend is Microservices where large monolith application are broken up to smaller pieces that can be scaled independently, lowering the performance requirements on the container. Finally cloud automation also lowers the need to patching and maintaining application containers, instead one can just deploy a new version of a container without having to login and manually patch a container.
This is why I believe that comparison like www.boycottdocker.org will not matter in the end. So will Application Container replace virtualization? I don't think so. Virtualization is great for abstracting hardware and will be still be around for a long time, but we might se a shift to larger virtualised hosts running many application container.
Claiming that Docker is a lock-in, just because it doesn't run natively on Windows or other none GNU/Linux OSes are also a bit strong. Docker containers is a open source project that are using several technologies from Linux, like group etc. Hence it does require a Linux, but it doesn't have to be DockerOS. As an example Red Hat Enterprise Linux and Fedora also support running Docker natively. The company Docker will have to find a way to convert there initial success into a viable business, but if they do this in a way that becomes a lock-in the rest of the open source community will react and make sure that application containers ala Docker will still be an open format.
Claiming that PaaS platforms are expensive is probably correct in many cases, but as in all new technology we will see prices adjust to match the value they bring. Red Hat OpenShift Enterprise is a PaaS platform that can be installed in your own data centre, using virtualization or Cloud infrastructure and does not require you to pay per minute.
Published at DZone with permission of Thomas Qvarnström, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments