Architecture Modernization of A Legacy Application
About the Client
Our client is a leading HR consultancy in US providing Performance Management and Training solutions.
- The application has a dated UI/UX.
- The application is hosted in AWS and incurs a high monthly cost for hosting.
- The tech stack used in the application is very old and are no longer supported on the latest browser versions.
- Very low Customers satisfaction
1.The solution proposed was to rewrite the UI layer in a modern TypeScript framework. Angular was selected as the framework due to the following benefits
- Easy to develop, combining dependency injections, declarative templates, and integrated best practices.
- Highly optimized for today’s JS virtual machines
- Supported by popular IDEs to get intelligent code completion and instant errors
- Improved speed and performance
- Faster development process
- 2.During the analysis phase, it was found that the version of Java Spring MVC (version 3.4) used for the backend, does not support JWT-based authentication. The solution proposed was to upgrade the backend to Spring Boot v 2.4.5 (Spring Framework 5.3)and refactor/rewrite the backend code.
Data requirements of each application were analyzed.
Data points to be received by APIs were identified.
A common JSON structure for the API payload was designed.
The payload data points were mapped to each application’s corresponding data points.
Introduced Spring Security, which is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorization to Java applications.
Application is running on Tomcat server version 9.0.46.
Java version used in Java-8, which is a major feature release of JAVA programming language
JWT token replaced the server-side session storage, which was used for user authentication
Introduced Spring filters, which is an object used to intercept the HTTP requests and responses of your application. A filter is mainly used to perform filtering tasks such as conversion, logging, compression, encryption and decryption, input validation, etc.
Rest APIs, Beans, Components, Services, etc. were developed with the help of the spring annotation mechanism.
Introduced Spring Data JPA, which aims to significantly improve the implementation of data access layers by reducing the efforts that are needed. The developer can write repository interfaces, including custom finder methods, and Spring will provide the implementation automatically.
Introduced Spring Boot scheduling to automate the notification emails sending. Scheduling is a process of executing tasks for a specific time period. Spring Boot provides good support to write a scheduler on the Spring applications.
The database structure was incompatible with the spring JPA query. Some field names were rejected in the spring JPA.
There are existing clients in the old version of the application, and the underlying DB that was linked with legacy applications and new applications, both must be compatible.
We optimized the query and added necessary fields to the database tables without affecting the production version, which was the legacy application, and made it work with both systems. Clients from the legacy system are gradually migrated to new applications.
- Improved Speed and Performance.
- Accelerated Development Process.
- Improved look and feel.
- Lower application hosting costs by eliminating certain paid services.