Migrate from IBM WebSphere Application Server to Apache Tomcat on Amazon EC2
Created by Neal Ardeljan (AWS) and Afroz Khan (AWS)
Environment: Production | Source: Applications | Target: Apache Tomcat on an Amazon EC2 instance |
R Type: Replatform | Workload: IBM; Open-source | Technologies: Migration; Web & mobile apps |
AWS services: Amazon EC2 |
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
Target architecture
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
Task | Description | Skills 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 |
Task | Description | Skills required |
---|---|---|
Create a virtual private cloud (VPC). | SysAdmin | |
Create the security groups. | SysAdmin | |
Configure and start Amazon RDS for Oracle. | DBA, SysAdmin |
Task | Description | Skills 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 |
Task | Description | Skills 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 |
Task | Description | Skills 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 |
Task | Description | Skills 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:
Create the Amazon Simple Storage Service (Amazon S3) backup for database backup files (optional).
Back up the Oracle DB data to the network shared folder.
Log in to the migration staging server to map the network share folder.
Copy data from the network share folder to the S3 bucket.
Request an Amazon RDS Multi-AZ deployment for Oracle.
Restore the on-premises database backup to Amazon RDS for Oracle.
Setting up the application tier
Install Tomcat 8 (or 9/10) from the Apache Tomcat website.
Package the application and shared libraries into a WAR file.
Deploy the WAR file in Tomcat.
Monitor the start log to
Linux cat
any missing shared libraries from WebSphere.Watch the start record to
Linux cat
any WebSphere-specific deployment descriptor extensions.Collect any missing dependent Java libraries from the WebSphere server.
Amend WebSphere-specific deployment descriptor elements with Tomcat-compatible equivalents.
Rebuild the WAR file with the dependent Java libraries and updated deployment descriptors.
Update the LDAP configuration, database configuration, and test connections (see Realm Configuration HOW-TO
and JNDI Datasource HOW-TO in the Apache Tomcat documentation). Test the installed application against the restored Amazon RDS for Oracle database.
Create an Amazon Machine Image (AMI) for Linux from the EC2 instance.
Launch the completed architecture with the Application Load Balancer and Auto Scaling group.
Update the URLs (by using the WebSEAL junction) to point to the Application Load Balancer.
Update the configuration management database (CMDB).