From Legacy AIX to Cloud-Native at Scale: A Struts Upgrade Success Story
Discover how JetRuby transformed legacy AIX and Struts systems into a cloud-native, automated modernization framework ready to scale across enterprise portfolios
Table of Contents
Modernizing legacy enterprise platforms goes beyond a single application and focuses on building a repeatable, predictable approach to upgrading multiple systems without reinventing the process each time. This was exactly the challenge our team tackled in the Struts Upgrade project.
The goal was ambitious: migrate a portfolio of IBM AIX-based Java applications to the cloud, modernize the technology stack end to end, and establish a unified delivery model that would scale across future upgrades.
The Challenge
The client’s applications were built on a traditional IBM AIX environment with aging technologies:
- Java 8 and Struts 1.0
- Ant-based builds
- Manual, environment-specific deployments
- Limited automated test coverage
- One-off upgrade and release processes per application
Each upgrade required significant manual effort and carried high operational risk. The client needed a standardized modernization framework that could be reused across dozens of applications.
Our Unified Upgrade Approach
JetRuby designed and implemented a single, shared upgrade and release flow for all applications. Instead of treating each system as a special case, we introduced standardized infrastructure, runtime, delivery, and testing layers.
Cloud Infrastructure & Runtime
- Migration from IBM AIX to Microsoft Azure
- Deployment to Azure Container Apps, with one containerized application per service
- IBM WebSphere Liberty 25.0.0.9 as the standardized runtime
- Centralized container management via Azure Container Registry
- Seamless integration with enterprise authentication and routing using ISAM and Okta
All infrastructure is fully reproducible and upgradeable on demand.
Automation First: CI/CD and Infrastructure as Code
To eliminate manual work and environment drift, we introduced a full Infrastructure as Code and CI/CD setup:
- Terraform definitions for Dev, QA, Prod, and DR environments
- CI/CD pipelines for:
- Infrastructure provisioning
- Application releases
- Code quality checks (Sonar, Veracode)
- Automated test execution
This ensured every application followed the same predictable path from commit to production.
Modernized Application Stack
A major part of the project was upgrading the backend technology stack:
- Build system migration from Ant to Maven
- Centralized artifact storage with Artifactory
- Proper dependency management for shared Java libraries
- Platform upgrades:
- Java 8 → Java 21
- javax → jakarta
- Struts 1.0 → Struts 7.1.1
These changes significantly improved maintainability, security, and long-term supportability.
AI-Enabled Migration at Scale
To accelerate large-scale refactoring, we applied AI where it delivered the most value:
- GitHub Copilot was used extensively for routine upgrade tasks:
- Updating JSP Struts tags
- Migrating servlets to filters
- Refactoring repetitive legacy code
- AI assistance reduced manual effort and shortened upgrade timelines without compromising quality
This approach allowed the team to focus on architecture and validation instead of mechanical code changes.
Testing as a First-Class Citizen
Quality and confidence were ensured through a modern automated testing strategy:
- End-to-end and UI testing with Playwright
- Introduction of Behavior-Driven Development (BDD)
- Test scenarios written in Gherkin, generated with AI assistance
- The same Gherkin scenarios are used for:
- Manual regression testing
- Automated Playwright-based test suites
AI was also used to generate test scripts from application screenshots, page HTML structures, and functional descriptions, dramatically speeding up test coverage creation.
Results and Impact
- 7 applications successfully migrated to Azure
- Full upgrade, delivery, and testing flow validated end-to-end
- Production deployments are scheduled to begin in late January 2026
- A reusable modernization framework ready for future rollouts
Most importantly, the client now has a predictable, automated upgrade pipeline that can be applied to additional applications without redefining infrastructure or processes.
What’s Next
With the foundation in place, future migrations will reuse the same architecture, pipelines, and testing strategy. This transforms modernization from a risky one-time initiative into a sustainable, repeatable process.
At JetRuby, this project demonstrates how combining cloud-native platforms, automation, and AI-assisted development can turn legacy modernization into a scalable success story.
