Upgrading a mission critical module of the application and eliminate technical debt
As an offshore technology partner Coforge started the engagement with Haufe Umantis group in year 2017 and initially was involved to perform a technology upgrade of a mission critical module of the application and eliminate technical debt by refactoring/replacing a part of the application. After successful completion of the same Coforge was offered various project where Coforge is working on various missions to achieve a common goal
Based on a thorough assessment, Coforge
proposed migrating from Perl implementation to Java Microservices architecture, while maintain the functional specs of the existing application.
executed a PoC to establish solution validity.
performed a detailed impact analysis of the change to the application ecosystem and shared results on Confluence.
created a roadmap, based on the impact assessment, to migrate dependent modules to the new Java microservices architecture.
executed the entire migration using “Global Agile” methodology.
sliced entire set of applications to be migrated into incremental, fully functional and backward compatible builds.
setup test automation to reduce overall development cycle time.
setup various build and deployment environments in AWS cloud
From a front-end perspective, our goal was to use a technology stack that we find easy to work with and is something common in the marketplace:
React JS - Front end framework.
Less - CSS pre-processing
Yarn - Build management
NPM - Front end package manager
Webpack - Bundler for modules and dependencies
ESlint - Style guide linter tool
The back-end technology was architected with the same simplicity in mind. Given the robustness of the Kubernetes. We choose to use Kong API and Kubernetes stack for discovery and gateway, we decided to stick with Java and gain the benefits of microservices architecture:
Java 8 - Server-side language
Spring Boot - Web service layer
JUnit - Server-side unit testing
Postgres – Database
Kubernetes – container management and Service discovery
Kong - Routes API calls into the environment (proxy server)
Nginx - Load balancing
AWS EKS cluster - Clustering
Apache Kafka - Messaging
One Signal - Push Notification
AWS SES - Email
At Coforge, we believe that documentation is as important as the code we write. For that reason, project uses some critical tools to facilitate documentation.
Swagger - Framework for generating API documentation alongside code.
Confluence - Collaboration tool
APIRey - API documentation
Currently, you can deploy in several ways, with additional methods on the horizon:
Maven - Local builds
Docker - Containerized deployments
RPM - Manual deployments into AWS
Jenkins - Pipelines for continuous integration (CI) and continuous delivery (CD)
Kubernates - Created multiple clustred environment with all microservices.
E2E automation using selenium where TestNG and Kafka consumer were also used alongside to test events and APIs.
Enabled scalable and optimally performing Java Microservices for the processing of asynchronous jobs of various modules of HRM application.
Enabled functional decoupling of various modules of the application.
Improved test automation of the application
Enabled application build environments in AWS platform.