Application containerisation is a very popular approach to the development and deployment of applications in the cloud.
It simplifies a lot of processes and solves many problems. But is it a silver bullet with the answer to all your problems, or does containerisation create issues of its own?
As you’d expect, things aren’t quite so black and white. For example, Docker’s Container Runtime and the Kubernetes container orchestration tool won’t solve all your problems. Here at Loft, our experience migrating and running applications using containers has highlighted a few things to watch and consider.
1. You might still need to manage your underlying infrastructure
Containers need to run on infrastructure which is secure, provides enough capacity and can scale up or down when required. Even with orchestration tools like Kubernetes you might need to manage auto scaling and keep the hosting server up to date and secure. There are managed solutions like AWS Fargate which handle infrastructure but you have less control over the setup and that could turn out to be more expensive in the long run.
2. Not everything runs well on containers
Containers are great for stateless, loosely coupled solutions like micro services, machine learning models or even some legacy applications. However, they’re not so great when you need speed for things like high performance computing (HPC), low latency network traffic and persistence. When you have requirements like these, you might go as far as using bare metal or a managed platform and/or infrastructure services (PaaS, IaaS).
3. Cost effectiveness
One of the biggest advantages of application containerisation is scalability. You can easily scale up or down when needed. This helps manage costs, and if you use solutions like AWS Fargate then you don’t have to worry about the additional cost of infrastructure. But it depends on the case. When managed well or together with serverless and lambda functions running on containers, application containerisation can be a good choice.
Containers and container orchestration tools bring new challenges when it comes to security. Suddenly, some of the old and proven approaches need to be reconsidered and some of your monitoring tools and techniques might not work anymore. For example, automated server patching is not going to work here. You might need periodically released patched containers and to do full releases for these changes. The importance of security can’t be underestimated and new tools and approaches will be required.
5. What about people?
Learning curve and complexity are definitely things to consider. Development teams will need to learn new tools, new approaches. Container orchestration is great when it comes to handling platforms as code, but it might not be the easiest thing to learn and mistakes will be made.
Go for containerisation – there’s nothing wrong with that. Despite all the points we’ve highlighted, containers and application containerisation are trends you can’t ignore. They bring a lot of advantages and as with everything they will evolve. Many of the initial problems we’ve witnessed will be overcome. Still, it’s good to be aware of the challenges which you can face on your application containerisation journey.