How to Deploy your First Cloud-native App on IBM Power with Red Hat
Learn the 4 key steps for deploying a cloud-native app on IBM Power with Red Hat OpenShift.
An always-on, increasingly digitized world has meant most organizations are shifting their strategies to accelerate the modernization of their IT environment. Businesses see an opportunity to gain a competitive advantage if they can shift more of their business operations and services to be “digitized”. This shift requires the modernization of aging software environments by leveraging new technologies to put more power in the hands of customers, making solutions more accessible and easier to use. One key element of most modernization strategies is building new mobile cloud-native apps. Whether you are new to the app modernization journey or are already underway, it is important to understand best practices for building modern applications in an incremental manner with security in mind, while helping ensure that it operates in a highly performant and resilient environment.
This article describes the key steps for deploying your first cloud-native app. It also describes how to redeploy an existing cloud-native app running in a public cloud to IBM Power with Red Hat OpenShift. A real world example is provided that describes the steps a fintech took to overcome reliability and availability issues seen in a hyperscaler environment. The fintech redeployed their cash withdrawal cloud-native app in only one day on an IBM Power cloud platform with Red Hat OpenShift.
Questions to consider:
- Have you started your app modernization yet?
- Have you created your first cloud-native app?
- Are you running a cloud-native app in production in the cloud?
- Is your cloud-native app not meeting your SLA requirements in terms of scalability or reliability that your customers demand?
- Is your public cloud provider meeting your expected price point?
If you answered ‘no’ to any of these questions, then this article is for you.
Deploying your First Cloud-native App on IBM Power with Red Hat OpenShift
Developing new cloud-native apps uses the same process no matter where you choose to deploy them. The same is true for app deployment. The deployment steps and process are independent of the underlying hardware platform the app runs on. The only difference is with allocating the cloud instance to get the specific hardware resources that you need to run the app, in this case, IBM Power. All the other installation and deployment related commands used to get the environment and software installed and working are the same regardless of the platform.
There are 4 key steps for deploying a cloud-native app on IBM Power with Red Hat OpenShift
1. Identify the IBM Power server to use.
The easiest way to develop and deploy an app is by using computing resources in a public cloud. IBM offers several alternatives to get access to IBM Power hardware for development, testing, and deployment of CICD environments: https://developer.ibm.com/articles/accelerate-open-source-dev-with-access-to-power/.
When you make a request for remote access, be sure to request a configuration with the necessary resources that you will need in order to sufficiently test the app. Think about the number of cores needed for running the app, the amount of memory, the amount of storage needed for installing the software stack and storing sample data, and other computing resources.
If you would prefer to use an existing IBM Power server that you already have inside your lab, you have an additional step to fully create an on-prem cloud environment. You need to create a minimum of 6 LPARs in order to install Red Hat OpenShift. You can follow these instructions for creating a logical partition using PowerVM with a Power server. Getting started with PowerVM: https://www.ibm.com/docs/en/power9/9080-M9S?topic=environment-getting-started-powervm
2. Install the software stack.
As you are developing the app, you may decide to use existing software in order to enrich the capabilities of your app and to make app development go faster. You need to install all the dependent software that is required in order to run the app in the Power cloud instance. This may include the following types of software:
a. Red Hat OpenShift: To install Red Hat OpenShift Container Platform on the IBM Power infrastructure that you provision, you must first install Red Hat Enterprise Linux CoreOS (RHCOS) on the machines. RHCOS can be downloaded along with Red Hat OpenShift using publicly available scripts: https://docs.openshift.com/container-platform/4.10/installing/installing_ibm_power/preparing-to-install-on-ibm-power.html
b. Red Hat Application and Integration software: If your app takes advantage of any Red Hat Application Services portfolio, you can install them next. Examples of Red Hat Integration products available on IBM Power include Red Hat Fuse, Red Hat AMQ Streams, or Red Hat 3scale API Management. View available software on the Red Hat Marketplace. Red Hat Operators are used to install these.
c. Open source packages: You can use IBM’s Open Source POWER Availability Tool to verify that all the open source packages that are required by your solution are ported and available for running on the Power platform: ibm.biz/ppc64le-package-search
d. IBM software
e. Other third-party software from Independent Software Vendors (ISVs)
3. Install your cloud-native app on IBM Power.
Use your DevOps platform or development framework to deploy the app on IBM Power. If you don’t have your own app yet, you can install another app for learning purposes. To see example apps, go to the Red Hat Marketplace, find an app you want to try, and install it.
4. Run and test the app.
Load any necessary sample data and run the app to ensure everything is running as expected. To validate that the application was loaded successfully, watch for errors from Red Hat OpenShift. If there is a failure with deploying the app, Red Hat OpenShift will produce an error. You can also look at log files or diagnostic dashboards to validate that the application is running successfully. It is desirable to test the app running in a way that mimics a real production workload so that you can determine if the desired SLA requirements will be met.
Debugging deployment and app failures in steps 3 and 4 can be time consuming. The following link provides helpful information for troubleshooting Operator issues: https://docs.openshift.com/container-platform/4.10/support/troubleshooting/troubleshooting-operator-issues.html
You can get the app certified by Red Hat in order to make it available to the public in Red Hat’s service catalog. This step is optional; however, it can be an easy way to make your app available to others. The following link provides additional certification information: https://developer.ibm.com/articles/certify-your-operator-with-red-hat-openshift-operator-certification/
One of the initial steps for certification points you to the steps to turn your solution into a service in Kubernetes and Red Hat OpenShift, and publish it to Red Hat Marketplace: https://developer.ibm.com/articles/a-guide-to-turning-your-solution-into-a-service-on-kubernetes-and-adding-it-to-service-catalogs/
Porting an Existing Cloud-native App to IBM Power
If you have cloud-native apps that were originally developed and deployed on other environments, and you want to redeploy them to an IBM Power environment, you follow the same steps mentioned above, except there will be more work during Step 3. Instead of simply installing the app, you will need to port the code so that it is able to run on the IBM Power platform. The amount of work this requires depends on key factors such as the programming language used and its level of platform independence. The main porting work involves cloning the code, building the code for Power, running the app on Power, fixing errors, and iterating through this process until all errors are fixed. You can learn more about the typical kinds of things that may need fixing here in this IBM Learning Path: https://developer.ibm.com/learningpaths/port-your-app-to-lop/. The learning path also provides tips and techniques to make it easier to port and redeploy apps from x86 environments to IBM Power. If you have a choice of programming languages, consider choosing a language that is inherently portable such as Java or Python.
Now, let’s look at an example of a fintech who created a new, custom cloud-native app, deployed it in production on the x86 platform in the public cloud, and were unable to meet the demanding SLA requirements. This fintech then redeployed the app on IBM Power.
Cash Withdrawal Cloud-native App Example
A large fintech created a new, custom cloud-native app to handle country-wide cash withdrawals at ATM machines. The cloud app contained a set of services that enable users to use their mobile bank application to withdraw money at an ATM. This app enables the reconiliation with the user’s bank, and interaction with the user about their cash withdrawal request. At first this fintech chose to develop and deploy the app in production on a x86 platform in the public cloud. The fintech’s cash withdrawal solution was originally developed using the following tools and solution stack:
- DevOps Platform: GitLab
- Programming Language: Java
- Development Framework: Spring Boot
- Operating System: Red Hat Enterprise Linux
- Container Platform: Red Hat OpenShift
After the cash withdrawal solution was deployed into production, the use of the app at ATMs across the country grew very quickly. Their banking customers experienced downtime due to cloud unavailability during an extended period of time, leaving customers without the ability to get cash when they needed it.
To mitigate this serious issue, the fintech looked for alternatives that could provide the scalability and reliability required across their country-wide ATM networks. The IBM Acceleration Team helped them successfully prototype the app running on IBM Power with Red Hat OpenShift. The developers at the fintech used the four steps described above to successfully redeploy the cloud-native app to IBM Power. Specifically, here is what the fintech did for each step in the process.
The Solution: Redeploying on IBM Power
1. Identify the IBM Power server to use.
The fintech already had an existing Power server inside their lab that they reallocated to use for the project and then created the required LPARs.
2. Install the software stack.
The bank installed the same software dependencies on IBM Power that were originally used on x86. First, they installed Red Hat Enterprise Linux CoreOS (RHCOS) and Red Hat OpenShift. The latest version of OpenShift has a CICD environment that allows for rapid iterations on their application to deal with new customer requirements and changing API requirements from the banks. Next, they installed two packages. They installed Maven which is an open-source package manager for easily creating Java-based apps such as the cash withdrawal app. They also installed Git which is an open-source code management platform that makes software development easier.
3. Port the cash withdrawal app to run on IBM Power.
The fintech collaborated with the IBM Acceleration Team to port the app, which they completed in one day. To accomplish this, they cloned the code in Git, built and ran the code for Power. The application was written in Java using the open-source framework Spring Boot, which is nearly platform independent and enabled the porting process to be completed quite quickly.
4. Run and test the app.
After redeploying their app on Red Hat OpenShift on IBM Power, the app ran successfully with no issues or code changes.
Banking App Architecture on IBM Power and Red Hat
The success of the prototype encouraged the fintech to develop a roadmap for deploying the solution in production on IBM Power with Red Hat OpenShift. Figure 1 shows the architecture of the fintech’s future cash withdrawal solution on IBM Power with Red Hat. The three key underlying services (Red Hat Fuse, Red Hat AMQ Streams, Red Hat 3scale API Management) will enhance the cash withdrawal application.
Developing new cloud-native apps or redeploying existing apps on the IBM Power platform with Red Hat, can provide a businesses’ customers with the reliability and performance they need. Together, IBM Power with Red Hat Enterprise Linux, Red Hat OpenShift, and Red Hat Application Services are a winning platform solution for cloud-native apps by accelerating new service creation on IBM Power.
Figure 1: Solution architecture of a fintech’s cash withdrawal app.
Try Red Hat OpenShift with a no-cost product trial.
About the authors
Beth Hoffman is an IBM banking solution architect in IBM Cognitive Systems ISV Enablement organization. You can contact her at [email protected] or www.linkedin.com/in/bethhoffmanibm.
Murthy Garimella is a Red Hat global solutions architect in the Red Hat Partner Alliance Organization. You may reach him at [email protected] or www.linkedin.com/in/murthy-garimella.