Skip to main content

Upgrading a mission critical module of the application and eliminate technical debt

Scope

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.
  • ES6 - JavaScript environment
  • Less - CSS pre-processing
  • Yarn - Build management
  • NPM - Front end package manager
  • Webpack - Bundler for modules and dependencies
  • Karma - Test runner for JavaScript
  • 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.

Benefits

  • 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.
  • Enriched documentation of application
  • High and consistent quality
Let’s engage