Containers are right for many cloud apps—but not all

Beware the common technologist trap of doing something because it is trendy rather than figuring out if it’s actually the right move

Containers are right for many cloud apps — but not all
Thinkstock (Thinkstock)

I like containers—I really do. They provide a built-in architecture for and reward a distributed systems approach to development, and they offer portability. Indeed, a good deal of my work involves designing and deploying containers, both for existing and new applications.

But there can be too much of a good thing, and I see signs that containers are used where they don't fit. It’s common for technologists to chase the hype cycle, and containers are the current flavor of the month. They're sometimes adopted because they're trendy, not because they're the right technology.

As a result, IT is spending too much money and time trying to force-fit an application’s round peg into a container’s round hole.

If there’s a silver lining, containerizing applications that don’t need to be in containers won’t cause them to fail. You’re not risking your operations, only wasting your resources. Given that containers are typically used with cloud deployments, such waste is very ironic: Cost savings are typically the biggest reason to move to the cloud in the first place. Unnecessary containerization steals from those desired savings.

How do you know you’re overusing containers? Let’s take an enterprise inventory application on the move to the cloud. The code is 20 years old and monolithic. Breaking the application into parts and building it up again as a set of clusters in containers—that is, changing its fundamental architecture—is an unnatural act. In this case, containerizing it is probably a waste of time and money. Keep it as a monolith instead.

To avoid such waste, do the following before you start your code work: Compare the as-is state of the application (without containers) to a containerized to-be state. Assess the effort to make that transformation and the benefits you’d actually get from that change in architecture. If the containerization effort is difficult and thus costly, without sufficient benefits to the application’s performance or delivery, don’t use containers for that application.

Without that analysis, you’re simply guessing where the use of containers is worthwhile. Don’t guess.