In a previous Container Journal article entitled “Containers Are Designed For an Antiquated Application Architecture,” author JP Morgenthal argues that containers are predicated on n-tier architecture and therefore have all the inherent limitations of n-tier applications. The nature of those limitations – such as single points of failure and the inability to scale out or down) make N-tier applications expensive to build, operate and maintain, and by proxy, he argues, the same would apply to container-based applications.
There’s no contesting that containers are not a new concept. They have been part of Linux for ages. There is also no doubt that containers (and today, that mostly means Docker) rely on the Linux OS, which wasn’t architected specifically for such workloads. However, to say that containers are “designed for an antiquated application architecture” is somewhat of a leap in logic. Containers are quite revolutionary, actually.
First, I disagree with Mr. Morgenthal’s premise that containers are predicated on n-tier architecture and therefore inherit all of n-tier’s limitations.
Containers do two things that are a dramatic departure from traditional n-tier architecture: They can easily move between hosts and environments, and they can be used to support (or even accelerate) micro-services architectures. The fact that most container deployments today don’t make use of these capabilities is not an inherent flaw of containers. Rather, it’s a manifestation of where we are in the evolution of container-based applications and hybrid cloud deployments.
Second, even if we treat the n-tier argument as semantics, some of the flaws and limitations Mr. Morgenthal connects to n-tier architecture – such as the difficulty in scaling down out – are actually resolved or at least mitigated by containers.
Containers are super easy to deploy, orchestrate and kill, so scaling up or down is a cinch. As for scaling out, with containers an application can be broken down into finer processes that can be scaled out individually, thereby allowing for specific bottlenecks to be addressed very effectively. Elastic scale is a hallmark of containers.
Ultimately, I think this all boils down to a bottom-up vs. top-down argument. Do you start with the process of how applications are developed, or do you start with a high-level design and mend the process accordingly? Obviously the top-down approach is better in theory, but the market seldom evolves that way. The market has spoken and it chose the bottom-up approach that has essentially put developers and DevOps in the driver’s seat.
As much momentum as containers currently have, there are several developments that need to happen before they can claim their place as universal alternatives (or replacements) for VMs:
- Whether application architectures will not only be containerized but re-architected to take full advantage of what containers can do. This will take time but, in my opinion, is inevitable. The benefits are too great to be ignored.
- Whether cloud and container orchestration tools will evolve to support efficient and consistent application deployments. From what I’ve seen in the market, we’re already on our way there. Existing tools are evolving to provide such functionality for containers, and additional new players are emerging that target container orchestration specifically.
- Whether the Linux kernel will evolve to allow containers to run on bare-metal in web-scale environments, and ditch the traditional host layers. This is currently happening with the Googles and Facebooks of the world, but they are using proprietary technology that isn’t necessarily portable to other commercial users. Again, I believe this will happen but it is a capital-intensive endeavor. Linux Foundation initiatives like the Cloud Native Computing Foundation and Open Container Initiatives are helping to standardize and connect the dots.
All that said, I completely agree with Mr. Morgenthal assertion that containers are not a panacea for cloud application development. I have yet to see a single technology that is. But containers offer enterprises a very sensible way to move towards web-scale, hybrid cloud applications on a path that has better chances of success and lower risk compared with the alternative of complete application rewrites.
Whether or not that makes containers revolutionary may be up for debate, but they are for certain evolutionary – on steroids.
About the Author/Rani Osnat
Rani Osnat has more than 20 years of enterprise software industry experience, in project management, product management and marketing, including a decade as VP of marketing for innovative tech startups in the IT security and cloud arenas. He is currently VP of marketing at Scalock, which develops container security solutions. Previously Rani was a management consultant in the London office of Booz & Co. He holds an MBA from INSEAD in Fontainebleau, France.