Banking & Finance
About the Customer:
One of the largest IT services companies and a multinational supplier of computer software, IT services, and innovative solutions to enterprise customers across the EU and worldwide.
Our reliable client, a large IT services company, reached Infopulse to assist with the modernization of their customer’s core banking solution. The financial services company wanted to enhance the effectiveness, maintainability, and security of their Batch Grid system. As the project was large-scale and long-term, different internal teams were involved in the solution development. The system itself lacked consistency and generated a range of dependencies between other systems responsible for regular batch processes (e.g., End of Day).
As a result, the customer had to deal with the following challenges:
- An increase in maintenance issues of the core banking solution.
- Releases of new features were complicated due to multiple development branches that had to be merged and tested individually before each release.
- The solution structure was prone to defects, with over ten systems responsible for the Core Batch Grid (CBG) system code. The tight coupling in the system made it difficult to handle versioning and feature toggling.
Upon conducting the detailed analysis, Infopulse experts came up with solutions that could address the discovered system issues and validated their effectiveness at the PoC stage:
- Iterative splitting would allow a sequential separation of systems, thus safeguarding from system failures.
- Integration of standalone system tests into the build pipeline would improve the work quality and speed up a feedback loop for all development teams.
- A transactional framework would help separate business logic from a technology platform.
- An enhanced development workflow would enable the distribution of duties between development teams, thus increasing their autonomy, reducing conflicts, and improving focus on functionality.
- A performance validation test suite would allow for faster and more accurate performance testing.
- The introduction of common architecture development standards helps decrease and prevent technical debt.
When we implemented and deployed all the above solutions to production, we turned a tightly coupled monolith application into a platform. This crucial change resulted in the following:
- Each subsystem codebase was reduced to business logic that related only to the subsystem data.
- Subsystems were placed into separate Git repositories.
- By introducing APIs integration, we implemented contracts between subsystems, allowing developers to change integrations via consensus, provided by pull request functionality.
- Shifting to the weak code ownership allowed individual teams to work independently on end-to-end functionality and control their workflow.
- Java 8/11 – a coding language
- Hazelcast – an in-memory data grid
- Spring Framework – a Java application platform
- Flyway – a database migration tool
- Oracle Database – a persistence storage
- jOOQ – a light database-mapping library and typesafe SQL querying in Java
- Narayana – a transactional manager for JTA
- IBM MQ – a Java message service
- ArchUnit, JUnit, Mockito, Cucumber, DbUnit – automated testing tools
- Jenkins, Docker, Maven, Python, Git (Bitbucket), Linux – development and CI deployment tools
- Prometheus – a monitoring tool
- Logstash, Logback – logging tools
- Business domain functionality was distributed into subsystems, thus providing independent maintenance.
- Modifications in one business logic component will not affect others, which lowers the number of defects, makes them easier to detect, and greatly improves the defect resolution time.
- The code duplicates were eliminated by introducing the abstraction layer between a business logic layer and a persistence layer, thus simplifying the product development process.
- Faster time to market and higher quality of new products.
- Due to the distribution of systems across separate repositories, the build time was significantly reduced, enabling faster feedback on changes and decreased costs on changes implementation.
- Common development standards established a unified framework for software developers. The overall efficiency of the development team greatly improved.
- The weak code ownership allows teams to decide how to implement the framework on their level, enabling technologies and process improvements.
- An employee engagement level increased as per development managers.
We have a solution to your needs. Just send us a message, and our experts will follow up with you asap.
We have received your request and will contact you back soon.