In the world of software development and especially DevOps minded organizations, Docker and its software is well-known and widely used by tech companies. But even for non-tech companies, using containerization in your architecture can be useful. While there are many containerization tools, Docker is the most popular one and in general also used as a synonym for containerization. There is also Kubernetes, which is also a popular name in this ecosystem, but it’s not the same as Docker. Both can and are used togetherbut there are major differences in what they try to achieve with their different products.
Containerization, in general, is the natural next step in the software development industry. If you want to know what the difference is between containerization and virtualization, you can read this this article .
How is this useful for your organization?
In many organizations there is a mix of commercial off-the-shelf software and custom made applications. While there are also benefits for the first category, there are more in the second. Often, when you or a subcontractor build applications for your landscape, the same software components are needed over and over again. You need a frontend, backend, database, some networking, storage and access to local resources. Probably running on multiple environments with different versions. And this is where many repetitive tasks are waiting for you:
- Getting servers or VMs
- Installing OS
- Installing software packages
- Connecting to other components in your network
- Configuration of everything
- Testing if everything works
In this scenario switching your architecture to a container based one can be beneficial. Configuring container images with pre-defined OS, software, dependencies and the right configuration one-time is way faster than manually setting up applications on your machines. Of course configuration of container images also takes time, but this is more efficient because it’s designed for this purpose: copy-pasting configurations is possible and making changes is also possible. There is a whole ecosystem, making the lives of developers easier in a DevOps world.
More benefits of containerization:
- Standardize your build and software distribution process
- Deployable on public cloud as well on own infrastructure
- Makes your software-architecture more portable
- Many software vendors deliver their software also as pre-build images
- Perfectly fits in automated CI/CD-pipelines
When to containerize everything?
We have explained the benefits, now let's go through the scenarios where this is possible.
- Web applications or software running on the background on especially Linux based machines. While there is support for Windows and Mac based systems, typically for the Linux ecosystems there is much more support and the performance is proven.
- Many applications running together, typically a microservices landscape with a lot of dependencies. Maintaining these dependencies in a landscape full of applications can be complex. Docker provides a set of developer tools, especially in the building phase, making it more easy to build container images including everything needed to run an application – the application code, binaries, scripts, dependencies, configuration and environment variables.
- Especially custom web applications running on different environments, like on local, test, staging and acceptance. Distributing images was never so easy, because there is a clear distinction in pre-built software and necessary configuration. Knowledge sharing between developers is easier and you don’t have to know everything on a machine, because it’s documented in a descriptive way. This accelerates the onboarding of new team members and their adoption of your landscape, even for developers with no experience in operations.
Of course you can’t containerize literally everything, there are always exceptions and cases where you don’t want to do this:
- Desktop applications with a rich GUI require more performance resources.
- Niche and specialistic software, some software is just difficult to containerize.
- Simple applications with less or no dependencies, often maintained by 1 person. In this case it will be overkill and not worth the overhead.
What about eMagiz?
In our company containerization was adopted a while ago and our new, next generation runtime is released on a container based architecture in our own Cloud. Last quarter, we have already completed this for our own API Gateway. Our next step is to release other modules of the platform on this new architecture as well. This is our main goal for this year. Part of this development is also to support on-premises and local container deployments for eMagiz components running outside our own cloud. The outcome should be pre-built container images with eMagiz software (gateways, connectors etc.) with your context configuration, available for download in our portal and ready to be installed by you at your own premises.
Next time I will elaborate more on this and related subjects. Please let me know your opinion or experiences via a comment or via LinkedIn. Thank you for reading.
By Samet Kaya, Software Delivery Manager @ eMagiz