The client provides digital transaction and marketing tools for financial institutions and operates to help financial institutions bring a seamless experience to their users. The company's flagship product is a scalable banking platform that provides banks and credit unions with a modern digital banking experience, along with websites and marketing tools.
Monolithic Systems Challenged by Significant Growth
Over the last few years, the client has faced significant growth in its client base and the services it needs to provide. It was becoming a real challenge for some of its monolithic systems to deal with millions of transactions and slow downstream services. Communication between their microservices ran almost exclusively through HTTP, which means providing a more asynchronous character was a burden and compromised performance. Interactions between banks and credit unions are carried out through protocols that provide data on demand, so reacting to events proved to be challenging. That's when the client reached out to Xebia.
The Need for Architectural Changes
After an initial review of the client's list of challenges, the Xebia team worked in tandem with the existing client team on developing and implementing a series of architectural changes, migrations, and tech stack research and recommendations.
Upgrading and Splitting Monolithic Systems
The Xebia team designed and implemented several strategies to decommission the monolith, transitioning to a purely micro services-oriented architecture, and providing the proper level of isolation, scaling capabilities, and resilience. The new architecture allowed us to use different inter-service communication protocols like sync HTTP, RPC, or async AMQP protocols, depending on the specific challenge or problem. Additionally, those changes include creating back-pressure to prevent underlying services from exhausting and implementing isolation bulkheads and timeout mechanisms to deal with slow downstream services and to avoid system degradation.
In addition, while focusing on critical systems development, several solutions were proposed that could be exported to other areas, serving as the standard for the rest of the organization for microservices development, including documentation and best practices.