Migrate Linux application containers from x86 to IBM LinuxONE on Red Hat OpenShift 4.4 using multi-architecture


This code pattern describes a step-by-step and best practice approach to migrating an existing x86 application container to IBM® LinuxONE on Red Hat® OpenShift® 4.4 using multi-architecture. It focuses on deploying OpenShift Container using multi-architecture, and provides a validated process for deploying a production-ready OpenShift Container Platform cluster on LinuxONE.

IBM LinuxONE is a family of servers built to host enterprise Linux applications, whose architecture is known as s390x. These servers use bank-grade encryption to underpin confidential computing environments for heavily regulated industries with sensitive data. The s390x architecture generally uses fewer CPU cores to process the same amount of work as other architectures, which can mean significant savings on software costs that are licensed by the core.


TAT Banking is a conceptual online retail banking web application based on microservice architecture. It is designed to demonstrate a rehost or lift-and-shift approach to migrating an application container to LinuxONE on RedHat OpenShift without any modifications in the code. The approach involves lifting the whole application from RedHat OpenShift on an x86 environment to a Red Hat OpenShift on LinuxONE environment.

This code pattern provides the following microservices for the TAT Banking application:

  • Portal-UI
  • Customer-service
  • Account-Service
  • Transaction-Service
  • RabbitMQ


TAT Banking architecture flow diagram

  1. The portal container is a front-end application that’s based on the Spring Web MVC framework and consists of plain old Java objects (POJOs) that are processed by microservices containers. The POJOs are persisted in memory. For this application, you are not using any distributed databases.

  2. The microservice container module is responsible for processing business logic. It is written based on Axon, an open source framework that provides a Java API for writing Command Query Responsibility Segregation (CQRS). The main idea behind CQRS is to divide a data store into two parts: The first part, which is called command, serves only for performing insert, update, and delete; the other part, query, serves only for selecting queries. There are three microservices — Customer-service, Account-service, and Transaction-service. Each one uses an in-memory database called H2 which primarily relies on memory for data storage.

  3. The integration container module uses RabbitMQ as a messaging service hub to keep both interfaces (command and query) in sync.


Ready to get started? Check out the README for detailed instructions on how to:

  1. Clone the TAT-Banking repository locally.
  2. Build the TAT-Banking custom Docker image for LinuxONE.
  3. Install the manifest tool.
  4. Create multi-architecture images for TAT-Banking.
  5. Pre-build the container image for TAT-Banking.
  6. Deploy the TAT-Banking application using multi-architecture Images.
  7. Test the TAT-Banking application.