Migrate from IBM WebSphere Application Server to Apache Tomcat on Amazon EC2 - AWS Prescriptive Guidance

Migrate from IBM WebSphere Application Server to Apache Tomcat on Amazon EC2

Created by Neal Ardeljan (AWS) and Afroz Khan (AWS)

Summary

This pattern walks you through the steps for migrating from an on-premises Red Hat Enterprise Linux (RHEL) 6.9 or later system that’s running IBM WebSphere Application Server (WAS) to RHEL 8 running Apache Tomcat on an Amazon Elastic Compute Cloud (Amazon EC2) instance. 

The pattern can be applied to the following source and target versions: 

  • WebSphere Application Server 7.x to Apache Tomcat 8 (with Java 7 or later) 

  • WebSphere Application Server 8.x to Apache Tomcat 8 (with Java 7 or later) 

  • WebSphere Application Server 8.5.5.x to Apache Tomcat 9 (with Java 8 or later) 

  • WebSphere Application Server 8.5.5.x to Apache Tomcat 10 (with Java 8 or later) 

Prerequisites and limitations

Prerequisites  

  • An active AWS account 

  • Source Java code, with the following assumptions:

    • Uses the Java Development Kit (JDK) version of Java 7 or later

    • Uses the Spring or Apache Struts framework

    • Doesn't use the Enterprise Java Beans (EJB) framework or any other WebSphere server functionality that's not readily available for Tomcat

    • Primarily uses servlets or Java Server Pages (JSPs) 

    • Uses Java Database Connectivity (JDBC) connectors to connect to databases  

  • Source IBM WebSphere Application Server version 7.x or higher 

  • Target Apache Tomcat version 8.5 or higher  

Architecture

 Source technology stack

  • A web application built using the Apache Struts Model-View-Controller (MVC) framework 

  • A web application running on IBM WebSphere Application Server version 7.x or 8.x

  • A web application that uses a Lightweight Directory Access Protocol (LDAP) connector to connect to an LDAP directory (iPlanet/eTrust) 

  • An application that uses IBM Tivoli Access Manager (TAM) connectivity to update the TAM user password (in the present implementation, applications use PD.jar)

 On-premises databases

  • Oracle Database 21c (21.0.0.0)

  • Oracle Database 19c (19.0.0.0)

  • Oracle Database 12c Release 2 (12.2.0.1)

  • Oracle Database 12c Release 1 (12.1.0.2)

Target technology stack

  • Apache Tomcat version 8 (or later) running on RHEL on an EC2 instance

  • Amazon Relational Database Service (Amazon RDS) for Oracle

For more information about the Oracle versions supported by Amazon RDS, see the Amazon RDS for Oracle website.

Target architecture

Architecture for migrating from IBM WebSphere to Apache Tomcat on Amazon EC2

Tools

  • Application tier: Rebuilding Java application into a WAR file.

  • Database tier: Oracle native backup and restore.

  • Apache Tomcat migration tool for Jakarta EE. This tool takes a web application written for Java EE 8 that runs on Apache Tomcat 9 and converts it automatically to run on Apache Tomcat 10, which implements Jakarta EE 9.

Epics

TaskDescriptionSkills required

Complete the application discovery, current state footprint, and performance baseline.

BA, Migration Lead

Validate the source and target database versions.

DBA

Identify the hardware requirements for the target server EC2 instance.

DBA, SysAdmin

Identify storage requirements (storage type and capacity).

DBA, SysAdmin

Choose the proper EC2 instance type based on capacity, storage features, and network features.

DBA, SysAdmin

Identify the network access security requirements for the source and target databases.

DBA, SysAdmin

Identify the application migration strategy and tooling.

DBA, Migration Lead

Complete the migration design and migration guide for the application.

Build Lead, Migration Lead

Complete the application migration runbook.

Build Lead, Cutover Lead, Testing Lead, Migration Lead
TaskDescriptionSkills required

Create a virtual private cloud (VPC).

SysAdmin

Create the security groups.

SysAdmin

Configure and start Amazon RDS for Oracle.

DBA, SysAdmin
TaskDescriptionSkills required

Create or obtain access to the endpoints to fetch the database backup files.

DBA

Use the native database engine or a third-party tool to migrate database objects and data.

For details, see "Migrating database objects and data" in the Additional information section.

DBA
TaskDescriptionSkills required

Lodge the change request (CR) for migration.

Cutover Lead

Obtain the CR approval for migration.

Cutover Lead

Follow the application migration strategy per the application migration runbook.

For details, see "Setting up the application tier" in the Additional information section.

DBA, Migration Engineer, App owner

Upgrade the application (if necessary).

DBA, Migration Engineer, App owner

Complete the functional, non-functional, data validation, SLA, and performance tests.

Testing Lead, App Owner, App Users
TaskDescriptionSkills required

Obtain signoff from the application owner or business owner.

Cutover Lead

Switch the application clients to the new infrastructure.

DBA, Migration Engineer, App owner
TaskDescriptionSkills required

Shut down temporary AWS resources.

DBA, Migration Engineer, SysAdmin

Review and validate the project documents.

Migration Lead

Gather metrics such as time to migrate, percentage of manual versus automated tasks, and cost savings.

Migration Lead

Close out the project and provide feedback.

Migration Lead, App Owner

Related resources

References

Tutorials and videos

Additional information

Migrating database objects and data

For example, if you're using native Oracle backup/restore utilities:

  1. Create the Amazon Simple Storage Service (Amazon S3) backup for database backup files (optional).

  2. Back up the Oracle DB data to the network shared folder.

  3. Log in to the migration staging server to map the network share folder.

  4. Copy data from the network share folder to the S3 bucket.

  5. Request an Amazon RDS Multi-AZ deployment for Oracle.

  6. Restore the on-premises database backup to Amazon RDS for Oracle.

Setting up the application tier

  1. Install Tomcat 8 (or 9/10) from the Apache Tomcat website.

  2. Package the application and shared libraries into a WAR file.

  3. Deploy the WAR file in Tomcat.

  4. Monitor the start log to Linux cat any missing shared libraries from WebSphere.

  5. Watch the start record to Linux cat any WebSphere-specific deployment descriptor extensions.

  6. Collect any missing dependent Java libraries from the WebSphere server.

  7. Amend WebSphere-specific deployment descriptor elements with Tomcat-compatible equivalents.

  8. Rebuild the WAR file with the dependent Java libraries and updated deployment descriptors.

  9. Update the LDAP configuration, database configuration, and test connections (see Realm Configuration HOW-TO and JNDI Datasource HOW-TO in the Apache Tomcat documentation).

  10. Test the installed application against the restored Amazon RDS for Oracle database.

  11. Create an Amazon Machine Image (AMI) for Linux from the EC2 instance.

  12. Launch the completed architecture with the Application Load Balancer and Auto Scaling group.

  13. Update the URLs (by using the WebSEAL junction) to point to the Application Load Balancer.

  14. Update the configuration management database (CMDB).