Yet, while containers do offer an effective way to recompile code and test in a lightweight and rapid manner, the container landscape could be transforming. So, what exactly do containers offer developers, and what role will they play in the future?
It has really been the emergence of cloud-based providers, such as Amazon Web Services, that has led the idea of using containers to deploy code for live production applications to become widely accepted as the preferred way to do things. This has largely been driven by stiffer competition, as companies have needed to become more agile in their software development; gone are the days of long production cycles. Instead, they have begun a develop-on-the-fly approach, DevOps, that allows for much shorter innovation cycles.
One of the major benefits of using containers is that they make it easier to implement an agile approach to building, testing and deploying software. This is due to a container-based approach isolating runtime components, allowing developers to drop in a new version of the code and immediately test it and see if it is correct, therefore simplifying the development cycle. This is unlike the previous method of installing the code to be tested onto virtual machines or native OS, which was more time-consuming and required installing software. Ultimately, containers offer a more agile and responsive framework and mean that developers don’t have to go through a long build and deployment cycle which was often the case previously when the
Limitations of containers
As the adoption of containers has increased, many of the disadvantages of using them have largely been or are in the process of being overcome. For instance, running Docker on Windows isn’t a comfortable fit, but this is something we know Microsoft is working hard to overcome, and soon should no longer be an issue.
In fact, the more common problem facing the use of containers is the number of people in the market who don’t understand what a container is and what the benefits are of the encapsulation of code and the runtime environment which allow it to operate. These people tend to be stuck in a native operating system mindset and have yet to grasp the capabilities and potential of containers. In these cases, a paradigm shift still needs to occur; however, we are seeing the market begin to get over this stumbling block.
Whether you use containers ultimately comes down to underlying architecture and the non-functional requirements you need to meet with your deployment. For example, if a developer wants massive horizontal scaling by spinning up on-demand resources within a major cloud environment then deploying via containers makes sense. Yet, if the user is running an enterprise application on dedicated hardware in a highly controlled environment, and it’s mission critical to have a sub-second response time, containers may not be the best option. Rather, the system is always going to be more predictable, performant and stable when running natively on an operating system, on well-managed dedicated hardware, instead of going through an additional virtualisation layer.
The adoption of containers is only set to grow, with Forrester reporting that the number of containerised applications used within organisations will increase by 80% in the next two years. We will also container use increase as people buy software as a service and providers behind the scenes deploying containers in order to roll out an upgrade within seconds and with minimal disruption to service. Containers lend themselves to high availability scenarios for applications, making applications highly scalable and it possible to spin up more when demand increases then scale back as needed.
As it stands, there are no immediately apparent successors set to replace the use of containers. However, in an increasingly cloud-heavy environment, there seems to be a trend for cloud-native applications that are composed of discrete functional units that are capable of being run independently, behaving like micro-containers and supported by the Cloud environment. This would see more features move out of containers and into the underlying platform, with the resultant tie in to a specific flavour of Cloud. That said, with such a strong case for the use of containers, it is likely containers will long be the preferred approach for developers, allowing them to deploy software quickly and efficiently and in a manner that reduces the tie-in to specific Cloud vendors.