Iris Software Perspective Paper
A Modernization Playbook - Upgrading Java and Spring Boot Apps
Iris Software Perspective Paper - A Modernization Playbook - Upgrading Java and Spring Boot Apps
Thank you for reading
How Quality Engineering Has Evolved in Software Development
Application modernization is a challenging process that encompasses a manual or semi-automatic refactoring approach to determine the impact and outcomes of upgrading, automating and migrating to cloud. Key considerations are cross-platform compatibility, maintenance costs, support and security needs, performance, scalability, as well as talent/ skills constraints.
Many critical enterprise applications are written using the Java ecosystem. Often legacy in nature, they utilize old versions of Java and popular frameworks like Spring Boot or Spring Framework. With many of these applications at or nearing end of life, such as Java 8 and Spring Boot 1.x/2.x, organizations are evaluating and/or upgrading to newer versions.
Iris iRenew is a structured methodology for modernizing legacy applications in a semi-automated fashion. Our approach involves a combination of open-source tools, processes, and expertise in application migration. It provides automation-driven efficiency, with gains of 36-39%, by automating parts of discovery, refactoring, and testing.
Faster time-to-market with accelerated modernization process
Cost and effort savings by reducing manual effort and minimizing rework
Higher overall consistency of changes, improving maintainability
Higher delivery quality through iRenew validation and early issue detection
Easier planning and tracking due to increased visibility of scope of updates
Following is our step-by-step playbook, with detailed illustrations and a case study, for successfully moving from legacy to modernized code.
Many critical enterprise applications written using Java ecosystem
Often legacy in nature, these utilize old versions of Java and popular frameworks like SpringBoot/Spring Framework
500 - 700 Java Classes
50,000 - 80,000 Lines of Code
Estimated effort: 10-14 elapsed weeks for 2-3 Senior Developers (without automation)
4,000 - 7,000 Java Classes
400,000 – 600,000 Lines of Code
Estimated effort: 26-30 elapsed weeks for 4-5 Senior Developers (without automation)
8,000+ Java Classes
800,000+ Lines of Code
Estimated effort: 45-55 elapsed weeks for 6-8 Senior Developers (without automation)
A structured methodology for modernizing legacy applications in a semi-automated fashion
Provides automation-driven efficiency by automating parts of discovery, refactoring, and testing
Utilizes a combination of open-source tools like OpenRewrite, DepGraph, JDeps, etc., processes and a team of specialized engineers, highly trained on the tools stack
Caters to large-scale refactoring incrementally, leveraging OpenRewrite’s pre-built Recipes and Custom Recipes
iRenew team brings deep expertise in troubleshooting, debugging and modernizing several projects
Base Branches
Master (Prod): stable production
Hotfix: emergency fixes
Release: main UAT branch
Develop: dev & integration
2. Create Feature Branches
Upgrade Feature: main feature branch (e.g., Java 17)
Upgrade Sub-feature: specific upgrades (e.g., WireMock)
3. Development & Execution
Changes tested in feature branch and merged to develop branch after bug-fixes
Hotfixes merged from master to feature branch(es), if needed
Selective changes cherry-picked from develop to feature branch
4. QA Testing
Feature branch merged to release and tested
Bug-fixes done in feature branch and merged to release after re-testing
5. Release & Deployment
After QA sign-off, feature branch changes merged to master (prod)
Isolated Changes
Improved Collaboration
Simplified Rollbacks
Efficient Bug Fixes
Parallel Workstreams
Bugs are triaged into automation and manual buckets
iRenew team resolves automation bugs via recipe adjustments and security configuration fixes
iRenew team also provides expertise to App Dev team(s) in handling complex bugs and edge-cases handling
Modernization may result in varying the validation baselines of regression security and performance
Test data adjustments may be required, and new attack vectors may need to be identified
Both teams collaborate with various testing teams to ensure a functionally stable, secure and performant system
Easier to plan and track due to increased visibility of scope of updates
Patch critical vulnerabilities for better compliance with security standards
Reduce increased latency in legacy APIs and services caused by increased performance demands
Upgrade or replace frameworks/libraries that use outdated standards
Reduce technical debt and lack of modern features in the current tech stack
Discovery and Analysis: Used utilities like depgraph, OpenRewrite to identify build order, inter-module relationships, and dependencies version inventory
Utilized OpenRewrite to Automate Spring Boot 1.5 -> 2.7, Java 8 -> 17 and Spring Boot 2.7 -> 3.2 migrations in an incremental approach
Upgraded 3rd Party Libraries like Jackson, Mockito, WireMock, Liquibase
Replaced Incompatible Libraries like Hystrix -> Resilience4j, Zuul -> Spring Cloud Gateway, Swagger -> OpenAPI
Build Tools/Plugins were updated, like Surefire, SpotBugs, CheckStyle
Vulnerabilities: Many static and dynamic code vulnerabilities were fixed to harden security
Code Coverage: Additional unit tests were written to improve code coverage from 80% to 85%
Performance improvements
Improved security & API standards compliance
Technical debts reduced by 70%
Automated refactoring saved 20% effort
Improved developer productivity
Vinodh Arjun is Vice President and global head of the Cloud Practice at Iris Software. He has more than 20 years of experience in software products and services with expertise in Cloud, Artificial Intelligence, Machine Learning, and digital transformation in verticals such as banking, finance, capital markets, healthcare, insurance, logistics and retail.
Samarth Srivastava is a Senior Java Cloud Architect in Iris’ Cloud Practice with more than 18 years of experience in software architecture, cloud computing, and large-scale enterprise modernization. He specializes in designing and implementing cloud-native, data-driven solutions for mission-critical applications. With deep expertise in Java, Spring Boot, and cloud platforms, he has led complex digital transformation initiatives across industries such as banking, healthcare, and retail.
Iris Software has been a trusted software engineering partner to Fortune 500 companies for over three decades. We help clients realize the full potential of technology-enabled transformation by bringing together a unique blend of domain knowledge, best-of-breed technologies, and experience executing essential and critical application development engagements. With over 4,300 skilled professionals, Iris builds mission-critical technology solutions across banking, financial services, insurance, life sciences, logistics, and manufacturing. Iris offers comprehensive services and solutions across Cloud competencies ranging from migration, modernization, cloud-native development, DevOps and optimization. Click here to read about the milestones of our 30-year journey.
Learn more about our Cloud capabilities at:
https://www.irissoftware.com/services/cloud/