In the ever-evolving landscape of technology, containers have emerged as a revolutionary concept, transforming the way software is developed, deployed, and managed across various platforms. This blog will provide an introduction to containers and what it means to the mainframe ecosystem.
In the world of mainframe computing, virtualization has long been a familiar concept, enabling efficient resource utilization and workload management. Containers extend this virtualization paradigm revolutionizing application deployment and management.
In the 1960s, mainframes emerged as powerful computing systems, IBM kept ahead of the workload growth by adding more and more capacity to new generations of the physical machines. However, the need to maximize resource utilization and support multiple workloads led to the birth of virtualization.
As mainframes evolved, the concept of logical partitions (LPARs) was introduced. LPARs enabled workload isolation, improved resource allocation, and increased overall system efficiency. This technology became a cornerstone of modern mainframes. Virtualization expanded beyond just operating systems to include other key resources within the mainframe environment–storage and network virtualization.
Figure 1: Virtualization on mainframe
First-layer virtualization is provided by the Processor Resource and System Manager (PR/SM) to deploy one or more Logical Partitions (LPARs). Each LPAR supports a variety of operating systems. A virtual hypervisor, z/VM or KVM, can also be run as the second layer virtualization in LPARs to create as many virtual machines (VMs) as there are resources assigned to the LPARs to support them.
Containers are similar to virtual machines. The key differentiator between containers and virtual machines is that virtual machines virtualize an entire machine down to the hardware layers and containers only virtualize software layers above the operating system level.
Figure 2: Virtual machines vs container
While there are several tools available for running containers (container engines), Docker and Podman are two popular options.
Here are the benefits of using containers:
Portability
Imagine you want to send a gift to a friend, and instead of putting it in a well-packaged box, you send the individual parts separately. This is analogous to deploying applications without containers. Containers are lightweight software packages that contain all the dependencies required to execute the contained software application.
Today, SMP/E is used to install mainframe software applications. The software gets promoted to various target and distribution zones, performing individual adaptations to fit the software to the target runtime environment. Time must then be scheduled (this is called a change window) to deploy into production. Imagine that you can avoid these manual steps with containers, as each container comes prepackaged with whatever it needs to run–application code, runtime, environment variables, exporting ports, required file system paths, etc.
Isolation and Resource Efficiency
Containers provide isolation just like virtual machines without the overhead of running guest operating system. This isolation allows applications to run independently. Many more lightweight containers can be run than virtual machines on the same hardware.
Improved Productivity
Imagine a recipe for your favorite dish. When you prepare it in your kitchen, it turns out delicious. However, if someone else tries to recreate the same dish in their kitchen without a recipe or proper instructions, it might not taste the same. Containers provide the recipe for your application, ensuring it runs consistently and produces the same results, regardless of where it's deployed.
Containers allow developers to create predictable runtime environments, including all software dependencies required by an application component, isolated from other applications on the same machine. There is no more “But it works on my system” excuse.
Containers are supported on various architectures such as Linux x86, Windows, zLinux, and z/OS.
Figure 3: Running containers in various mainframe environments
If you wish to leverage your dedicated Linux processors on the mainframe (called IFLs), you can deploy the containers on zLinux or virtualized zLinux systems. With this strategy, you can leverage open-source technologies alongside your z/OS workload.
However, if you want to go even closer to the z/OS system, z/CX enables you to deploy zLinux applications as Docker containers in a z/OS system to directly support workloads that have an affinity to z/OS. zCX workloads are zIIP eligible making them cost efficient. Within the zCX address space is the z/OS Linux Virtualization Layer, which enables virtual access to z/OS storage and networking.
IBM intends to deliver container support for IBM z/OS as per IBM’s Statement of Direction.
By now, you may be curious about the possibilities of using containers on the mainframe and how they can significantly improve your operations.
Bring applications closer together
If you are deploying some applications (e.g. web interfaces, monitoring tools, etc.) on a Linux or Windows system which has affinity towards mainframes, you have an option to containerize and run them closer on the mainframe to simplify the operations and improve the efficiency.
Leverage open-source application/frameworks/libraries
Containers offer a seamless way to leverage a multitude of open-source applications, frameworks, and libraries. For instance, you can effortlessly integrate popular technologies such as Cassandra, Postgres, MongoDB, logstash, WordPress, etcd, Kafka, IBM MQ Client, Nginx, and more. Additionally, utilizing Linux Shell environments, Jenkins, Ansible, Apache Ant, Apache Maven, GitHub, and Zowe empowers you to enhance productivity and streamline your development processes. Leverage machine learning tools to unlock the potential of your mainframe data and leverage it to make informed decisions and gain a competitive edge.
Broadcom’s Mainframe Operational Intelligence product is packaged in containers so that powerful open-source machine learning components can be leveraged to provide insights over mainframe operational data. Also, Broadcom is updating monitoring solutions to help you with the container journey on Mainframe. For example, SYSVIEW Performance Intelligence now contains support for monitoring your zCX instances.
Figure 4: SYSVIEW zCX Monitor
In a highly containerized environment with numerous running containers, the importance of an orchestrator becomes paramount. Stay tuned for my upcoming blog where I'll delve into the topic of orchestration. If you require any guidance or support throughout your container journey, don't hesitate to reach out to me machhindra.nale@broadcom.com.