Introduction to the ICN Tool
Interface Change Notification (ICN) is an IBM internal tool and process used to notify product contacts about impending changes that might have adverse impacts on their products.
By Gregg Arquero and Tom Ginader10/13/2020
Journey to ModernizationWhen I took over the ICN process in 2017, it was immediately apparent that the old ICN tool relied on antiquated technology and would be a maintenance nightmare. The old ICN tool was a conglomeration of multiple Lotus Notes applications each managed by a different set of people which made enhancements and problem analysis especially difficult. After about a year of listening to user pain points and experiencing many myself I decided it was time for a change.
Several of my colleagues and I came up with requirements to alleviate these pain points in a manner that allows the tool to be more flexible, maintainable, scalable, efficient and modern. We knew we from the start we wanted the new tool to be web-based and utilize frameworks that were popular in the industry and well documented online. One of the key facets of this modernization effort was taking advantage of Docker containers. Containers are a lightweight mechanism for packaging up the application and all of its dependencies and abstract it away from its environment. Containerizing the application made it portable and allowed us to easily deploy it in virtually any target environment whether it be in the cloud, in a private data center, or on our personal computers.
Taking Advantage of zCXWhen deciding where to host our application, we came across a recently released solution on z/OS 2.4 called IBM z/OS Container Extensions (zCX). zCX is a content solution that allows users to deploy Linux® applications as Docker containers on z/OS as part of a z/OS workload. This is incredibly useful when developing applications that use tools which were designed to run on Linux or Linux-like environments. It enables users to access the Docker command line on a z/OS LPAR and performs similar to running docker in any other Linux setting. This is perfect for deploying REST applications, such as the ICN tool, which is packaged in separate Docker containers. We currently use four Docker containers that make up our application. One container runs Node.js and starts the actual server, another runs CouchDB for our production database, another CouchDB container based on the same image for our test database, and a container that acts as a Jenkins agent which enables our continuous integration pipeline. These containers are all based on the s390x/ubuntu:18.04 docker image.
Using specific Docker options, we can expose ports on these containers that enables them to interact with one another. REST API requests go to our Node server which then contacts the CouchDB database to access the stored information. In general, zCX is straightforward to work with. If you're familiar with the Docker CLI, application deployment should be a breeze. The only caveat is that you're working with s390x images. This means that if you already have existing Docker files that were used in an x86 environment, they will likely have to be altered so that they can run on s390x. Fortunately there is a GitHub repository [[LINK: https://github.com/linux-on-ibm-z/dockerfile-examples ]] that houses a good amount of already ported s390x Dockerfiles for popular tools. For us, getting set up on zCX was as easy as taking a Docker file, making some slight modifications to it, then running “Docker build” and “Docker run” commands.
Deploying Containerized Applications With zCXUsing Docker containers has enabled us to speed up the development time of new features and bug fixes for the ICN tool from weeks to days. Our continuous integration pipeline pulls our new code from git, runs our automated regression bucket, and deploys the updated application on the zCX server. zCX is great for anyone who wants to deploy a containerized application on an s390x system. It's simple, easy to use and doesn't require any extra steps when compared to a regular Docker environment. I would recommend it to anyone who has prior Docker experience, or someone who wants to learn Docker for the first time.
Sponsored ContentAchieve Compliance Without Impacting Productivity
Post a Comment
Note: Comments are moderated and will not appear until approvedcomments powered by Disqus