#wrapITup is a series on CloudwithCaleb where we explore what containers are, why they are all the rage in IT, and how the cloud is the perfect place for them to live.
One of the things my roommate and I enjoy watching on Youtube in the evening hours is Shark Tank. If you’re unfamiliar, the show is about entrepreneurs who come and pitch their companies to 5 investors to try to secure an investment. I enjoy watching the alpha personality investors outwitting one another for the best possible deals and hearing the cunning responses from the pitchers often dance on the borders of deceit.
It puts a smile on your face when an entrepreneur pitches an ingenious invention that solves a familiar problem and the words that so often complement the moment are “it’s that simple”. That was my reaction when I finally saw a container running an app that I needed – it’s that simple.
So let’s dive into why containers, in my opinion, are absolutely essential for cloud-native scalable businesses.
The Perfect Office
Let’s imagine that InstaCloud Ltd just moved into a new office building in town. They have several teams that each get to work in one of the 8 rooms that fill the floor. Everyone is excited about the new space and after getting all the rooms set up things are looking good. But it doesn’t take long until HR’s mailbox is starting to see some activity.
The Marketing team complained that the windows let in too little light for their team, so they wanted to change the ceiling lights across the floor. The QA team mentioned that the food being served might be better if it was a bit diverse. Sales mentioned that the temperature should drop a couple of degrees for the whole floor, as it was centrally controlled, and they needed it lower to help with the cold calling.
The Dev team complained that it wasn’t fair that every employee was issued only 1 monitor, as they would be more productive with 2. The Media team complained that their computers were a bit on the slow side, but all the computers were bought in bulk. And of course, the problems between departments in the different rooms began to lead to frustration between teams, lots of wasted time and eventually productivity took a serious dive.
That’s a lot of drama that needs a solution. So, how can we go about resolving some of these tensions? Well, one of the ways is to make sure that we cater to the needs of each team independently and create solutions/systems that will enable the teams to make independent decisions for their own rooms. This way each team can control the temperature in their room, the lighting they use, the number of screens they need, and the computers that they run (The food thing might be a bit hard to solve, but you can’t have everything!).
What are containers?
This analogy, although a bit long, is comparable to the frustration that many IT teams face as they attempt to upgrade and maintain business software.
As the company’s software grows and becomes more complex, its individual software components become increasingly codependent on the underlying resources to keep it running. If these dependencies are changed, it can have unpredictable effects on all the applications that rely on them. Just like a change in the office temperature might help the Sales team but can be very unpleasant for the Dev team in another room.
Now let’s say each individual application needs a supporting ‘software X’ to work. Not all the applications need the same version of ‘software X because some use version 1 or 1.2 or 3.4.2 etc. This is a problem if there is only one version of ‘software X’ available for all the applications!
Enter the beauty of containers. Think of a container as an individual room in the office building that has been isolated from all the other rooms. This container houses a single application along with everything it needs to do its job – nothing more and nothing less. By placing apps in containers, each app can make use of the specific version of ‘software X that it needs. This solves a lot of problems!
By using containers, a company can limit unfortunate dependability conflicts between applications and thus is free to service them on a per-app basis. Making life much easier for both developer and operation teams.
Apart from this interderpendability, there are a host of other benefits that we will discuss in the upcoming weeks. Next week we will look a little more into what goes into a container and what makes them so incredibly consistent.