Zowe On The Go: A Mobile Application For Modern Mainframers
{Incubation}
In the recent internal hackathon event at Broadcom, we were given an opportunity to develop applications that leverage Zowe, a project hosted by Open Mainframe Project. Our team (CTRL+Z Team) decided to build a mainframe mobile application. 😎
We are now in the process of becoming a sub project of Zowe. Soon, the Zowe community will be able to use it, provide their feedback and start contributing! 😊
Watch out for the announcement from Open Mainframe Project! 😉
Why a Mobile Application?
Did you know that consumers downloaded 194 billion mobile applications in 2018? There’s no wonder that there has been a lot of talk about the Application Economy in recent years. Having a mobile application for any service is becoming non-negotiable. Mainframe services are no exception.
But which services? Where do we start?
The possibilities for the functionalities we can implement are endless. The challenge is actually to limit the scope!
So maybe the right question to ask is “Who is our persona?”
It’s a good thing our team has experience working for Mainframe Global Service Providers, performing 24x7 on-call support for mainframe applications and jobs, as well as providing systems and operations support.
Meet KRISTINA, Our Persona
Role / Responsibilities:
- Creates and maintains job definitions, schedules, and job streams
- Promotes jobs into Production, sending events to jobs (such as putting jobs on hold before planned maintenance), and resolves issues with jobs that are not working properly
- On-call support for Production batch processing
Challenges:
- Long running and critical Production jobs need constant monitoring
- Even for known issues, it takes 30 minutes or more to solve
- When on-call, info from L1 is insufficient to provide a quick overview, login to workstation is needed for more information
- Time-triggered jobs are usually scheduled in the middle of the night, login to workstation is needed for checking status
Expertise:
- Expert knowledge of Workload Automation, related to jobs
Certifications:
Drawing from this experience, we were able to construct a use case for a mobile application with sufficient features for early adopters.
“As an on-call support, my immediate needs are to check the status of running services and to perform a number of jobs services: get a list of jobs, get content from a job file output, submit a job, and more.”
This became the first motivation for our Zowe Hackathon idea.
Kristina is also a Modern Mainframe Developer. While working on mainframe environments with her older peers who are starting to think about retirement, she is keeping up with the times.
She wants to use modern tools like common IDEs and mobile solutions, just like her peers in other industries. She is keen to try out new technologies, such as Zowe, and she is advocating the use of modern solutions in her workplace.
This became our second motivation.
But... Why Zowe?
Zowe, the first open source project for z/OS, consists of components and services that are attractive to modern mainframe developers. Without a doubt, modern mainframe developers are mobile application consumers themselves.
Taking advantage of that, we developed the Zowe Mobile Application which enables users to interact with Zowe, while on the go. 🚗 It uses Zowe RESTful APIs to access the API Mediation Layer Gateway and the z/OS Jobs Services.
The Zowe Mobile Application Technology Stack
Now that the requirements are clear, we can focus on the “how”. Here is the list of the technology services we used to code, build, test, and run the Zowe Mobile Application:
- Zowe API Mediation Layer. The Single Sign On (SSO) as well as the access to dynamically discovered z/OSMF REST APIs and z/OS services provides the core functions we need. The high-availability and scalability features of the API Mediation layer gives confidence that the Zowe instance is able to handle multiple mobile requests.
- Zowe z/OS Jobs services — The full list of capabilities of the RESTful APIs can be exploited for the management of z/OS JES jobs.
- Ionic — This is the development framework that provides the UI toolkit for building the mobile application.
- Apache Cordova is leveraged by Ionic to build and deploy the code as a native application.
- Angular — This is the development platform for building the mobile application in HTML and Typescript.
- Git for version control and project kanban board
- Node.js for interacting with the Ionic ecosystem
The High Level Architecture:
The architecture is very simple. Using the Ionic framework, we are sending API requests to the Zowe Gateway that you have specified during login. Zowe will process these requests, it will access mainframe and it will send back a response. As mentioned earlier, we are using the API Mediation Layer Authorization Services for the login screen and z/OS Jobs Services to access the Mainframe Jobs Spool.
Development Process
The team started Day 1 of the Hackathon by ramping up our knowledge of mobile application development. Except for one member, the team did not have prior knowledge of and experience with the Ionic or Angular framework.
To get started, we went through the following steps:
- Install the Ionic CLI:
npm install -g ionic
- Clone the repository consisting of empty pre-made app templates
- Install the dependencies from the
/app
directory:npm install
- Run the local development server:
ionic serve --lab
- Code and Debug
Once the app is running in the browser, we used the built in developer tools (F12
) in Google Chrome and Mozilla Firefox to see the debug logs.
The good thing about the lab server is that it watches for changes in the source files and it automatically reloads with the updated build. It also provided emulators for both Android and iOS so we can test both platforms simultaneously.
Learning Experiences
Once we have established our development workflow, we began making changes to pre-made app template and the fun began.
- We were familiar with the Zowe services’ API endpoints, so we started from there, but we had to quickly learn how to formulate the HTTP requests in Angular. Below are just a few of the ones we used:
- To authenticate mainframe user credentials and return authentication token: gateway/auth/login
- To submit a job given JCL as a string: jobs/string
- To perform other z/OS jobs REST interface services: zosmf/restjobs/jobs (along with other parameters)
- The first issue we ran into was the CORS (Cross-Origin Resource Sharing) policy implementation, which blocked our API calls. We had to modify the API Mediation Layer and run a special build of Zowe on our test system. This special build handles the CORS headers in the right way and allows browser-like clients to interact directly with the API Mediation Layer’s Gateway, instead of going through a proxy or some back-end.
- Figuring out how to iterate over NgModules of the Angular platform was not as straightforward as we had hoped. Angular’s Routing & Navigation modules also stumped us so we had to rely heavily on Ionic and Angular’s technical documentation.
At the start of Day 2, we overcame most of the blocker issues so our development went full steam ahead.
- Experimenting with the different Ionic UI Components sparked our imagination. This led to our implementation of the “Refresher” component which enhanced the application’s usability.
- Using Ionic’s organized project structure, we were able to write modular code. This allowed us to re-use each other’s codes, learn from each other, and speed up feature completion.
- “Do you even UX?” Towards the end of Day 2, we finished all our planned features so we stepped up our UX game. We added loading screens when an API is called. We improved the refresh and tap options, and standardized our icons.
- We learned that it is important to celebrate small victories. The lab server showing the emulators on the big TV definitely boosted our moods and allowed us to cheer for each other after successful commits. Even after two long days, we were in high spirits after the hackathon ended.
Completed Use Case
Overall, we are satisfied with what we accomplished in ~24 hours.
We finished the following use cases, even our stretch goal of being able to edit JCLs:
- Login using mainframe credentials
- Check the status of all the Zowe services discovered by the API Mediation Layer
- Access the running z/OS Jobs services and z/OSMF REST APIs to:
- Filter jobs
- View job spool
- Restart jobs
- Edit JCL from spool and submit the job
- Delete jobs from spool
- Cancel running jobs
Kristina can now download and use this application to do the things that she needs to do. She can now focus on work-life balance and go to the park with her friends, while still being connected to mainframe.
Future Plans
After successfully completing all of our Use Cases, we are confident to say that the Zowe Mobile Application is ready for validation!
Welcome to the Mobile World, ZOWE!
Watch this video to see the Zowe Mobile Application in action:
Interacting with Zowe from your mobile is now within reach.
If you want to know more, I have included below the links about Zowe and Open Mainframe Project.
- Zowe Articles: https://medium.com/zowe
- Zowe Learning Paths: https://broadcom.com/zowe
- Zowe Official Website: https://www.zowe.org/
- Zowe Github Repo: https://github.com/zowe
- Open Mainframe Project Official Website: https://www.openmainframeproject.org/
- Open Mainframe Youtube Channel: https://www.youtube.com/channel/UC-WTXQQtz2m5iTflJLK59aw
- Open Mainframe Project Slack Channel: https://openmainframeproject.slack.com
- Modern Mainframe Articles: https://medium.com/modern-mainframe