Containerization for iToBoS cloud services

Containerization is a method that allows to run multiple applications on a single host machine using isolated environments called containers.

Each container includes all the necessary components (such as code, libraries, and dependencies) needed to run the application, along with its own filesystem, network stack, and other resources. The most popular containerization platform is Docker, but there are other options such as Singularity, LXC/LXD, and containerd. Containerization provides an easy and lightweight solution for deploying and managing applications, as containers can be easily deployed without requiring any changes to the application code or configuration, on one side, and no changes to the host machine on the other. This has the benefit of facilitating the development, testing, and production phases, by ensuring consistency between the different environments.

Figure 1: Containerized applications (left) compared to virtual machine stack (right) (source: docker.com, CC BY-SA 4.0, via Wikimedia Commons)

Containerization has become an important part of software development and deployment, as it offers many benefits such as improved scalability, portability, and resource utilization. Containerization shows benefits in terms of security too, as containers add a layer of security by isolating applications from the host operating system and other applications running on the same server. It also simplifies scaling up or down the application or service, according to its usage and the available resources, making the technology particularly suitable for offering cloud services.

Containers are closely related to virtual machines, which is another technology that offers operating system virtualization and can have similar use cases. Compared to virtual machines, containers share the host operating system kernel, while virtual machines have their own guest operating system. This means that containers are more lightweight and use fewer resources than virtual machines. Due to this, containers offer better performance than virtual machines, as there is no overhead for running a complete guest operating system and can be started and stopped much faster making them ideal for dynamic workloads. On the other hand, by running a separate guest operating system, virtual machines provide stronger isolation than containers. Regarding portability, containers are more portable than virtual machines, as they can run on any system that supports the containerization platform, without the need of using a compatible hypervisor as in the case of virtual machines. Containers are also easier to manage, as they can be deployed, updated, and scaled more quickly and easily in a coordinated manner. In fact, a number of containerization platforms have become available in the past years, which offer advanced capabilities in managing and deploying applications and services on production level, based on the orchestration of containerized software. Some of the most commonly used containerization platforms include Docker Swarm, Kubernetes, Apache Mesos and Red Hat OpenShift. Overall, containers offer an ideal solution for running dynamic workloads and for environments where resource utilization and portability are important, while virtual machines provide stronger isolation and compatibility with a wide range of operating systems.

Based on these facts, containerization is a favorable choice for the development, testing and deployment from many software modules of iTOBOS, especially the ones comprising the AI cognitive assistant. These modules will be deployed on the project-specific cloud infrastructure, the iTOBOS cloud, ensuring optimal use of its resources for handling the data collected from the iTOBOS scanner, towards the holistic melanoma risk assessment that will assist the clinicians’ in their work.