- Learn about Node.js and why it is useful for you
- Find out when Node.js in CICS is the best choice
- Explore how to run Node.js application in CICS
What is Node.js?
Why should I choose Node.js?
There is a large community of full-stack developers able to design and code the UI, API and server components, and Node.js is their preferred runtime. The Node.js Foundation claim there are 9 million instances of Node.js.
When should I host my Node.js applications in CICS?
Hosting Node application in CICS brings together those components, making it easier for development and operations staff to manage them together in one place. This reduces the number of moving parts, and takes advantage of the world-class strengths of the mainframe such as security and resilience.
Some additional benefits of IBM SDK for Node.js – z/OS are outlined in article Reasons to Host your Node.js Applications on z/OS, including that it is eligible for container pricing.
When is Node.js the best choice to use with CICS?
Many CICS customers expose their core business applications as RESTful APIs, for example using CICS web services or z/OS Connect Enterprise Edition. In some cases the APIs need additional logic to combine several API requests into a single response, or to augment them with data from other sources.
Although Node.js applications can be hosted on many platforms, it can be more efficient, secure, and have fewer moving parts in the overall solution when hosting them on z/OS together with the applications and data they use.
CICS already supports applications in several languages. Why do I need Node.js?
CICS has always been unique in providing developers the choice to use the language most appropriate to the task at hand and the skills in your company – be it with COBOL, PL/I, C/C++, Assembler, or Java. With the CICS TS V5.5 open beta, CICS is extending this choice by adding support for Node.js.
How does Node.js differ from other languages supported by CICS?
Node.js is an inherently asynchronous programming language, it doesn’t share in the implicitly single-threaded mentality of traditional CICS languages and programs. A typical Node.js application will listen on an HTTP socket, will process all of the workload for that socket, and will efficiently distribute those many concurrent requests across a small number of threads. This model may sound familiar, it’s similar to what CICS itself offers for other languages; Node.js applications are written to expect this type of high volume workload, the runtime implements the sub-dispatching that is required within that single application.
The integration of Node.js with CICS brings two diverse user communities together; the ecosystem of CICS products and tools can be used to manage a collection of Node.js applications, and the power and flexibility of a modern language is brought to CICS.
CICS services such as the EXEC CICS commands, and transaction and security context are not available to Node.js applications. Instead, the Node.js application can call a RESTful API via CICS web services or z/OS Connect that do have access to CICS services.
Which type of IBM Z processors does the Node.js application run on?
Node.js applications are run on general purpose CPs and some operations make use of the Integrated Cryptographic Services Facility (ICSF).ï»¿ See Hardware and software requirements.
In what ways can Node.js ensure CICS and its COBOL applications stay relevant?
Node.js is ideally suited for integrating services and if those services or microservices expose useful function from COBOL applications, it keeps your business responsive and able to quickly fulfill business requirements from your existing CICS application estate. Keeping the COBOL applications, their services and APIs and the Node.js integration code in one place makes management easy and minimizes the likelihood of communications performance degradation.
How do I run my Node.js application in CICS?
A Node.js application typically consists of a .js file that is the initial script, a package.json file that describes the modules the script requires, and other scripts and static web site files.
First create a CICS bundle using CICS Explorer V5.5 and start the CICS bundle editor. Select New > Node.js Application and the wizard will guide you through selecting the Node.js application start script and creating a profile. The profile is used to customize the installation location of Node.js in zFS and any environment variables your application may need, such as TCP/IP port and working directory for log files.
Next export the CICS bundle to zFS. If your application requires modules that are not already installed in zFS, use Node Package Manager (npm) that is provided with IBM SDK for Node.js – z/OS to install them either in a global location or within the CICS bundle.
Finally define and install a BUNDLE resource in CICS. The Node.js application will be started.
What do I need to try hosting Node.js applications on my system?
- Download and install the July 2018 version of CICS TS V5.5 open beta and CICS Explorer V5.5 from the CICS trials and betas site.
- Download and install the IBM SDK for Node.js – z/OS trial, V6.14.2 or later.
Can I try this out without installing anything?
Yes – sign up at the page “Join our CICS early access program” and the beta team will provide a system you can access via your browser to try this out.