Skip to main content

Digital Foundations Construction: How We Ensured Stability for R-Flex and E-Flex

An architect designs a house, and we design a new solution for our group application. Explore the tools we use to ensure the foundations of R-Flex and E-Flex are stable and the entire structure is robust.


  • By Piotr Osowiecki

Before we begin – What is R-Flex and E-Flex?

R-Flex is a fully digitalized solution by the RBI group, aimed at simplifying currency exchange. Its two fundamental principles are simplicity and security. R-Flex functions as a web application, tailored to a responsive website. Currently, nearly 40,000 people in RBI Group banks in Romania, Croatia, and Hungary are using the application, with plans for expansion to other countries. The platform is cloud-based (AWS) and has received the AWS Innovation Award.

The application allows customers to view widgets with real-time currency exchange rates, exchange currencies with immediate settlement in the user's account, manage accounts, configure preferred currency pairs, and customize the main screen to individual needs. The application also enables browsing transaction history with detailed information and defining rate alerts to notify the customer of achieved rates. Additionally, there is an extensive reporting module available.

E-Flex, on the other hand, is a module designed for dealers and other bank employees to manage products available to R-Flex users. It provides access to essential customer data, allowing employees to monitor transactions in real-time, view transaction history, manage them, and create reports. E-Flex offers the ability to manage and configure settings for customers, such as currency pair availability, access to buy or sell, account access, margins, limits, etc., both at the individual and group levels. With a simple and intuitive interface, handling available functions is straightforward.

Requirements We Had to Meet

  •  A group solution, developed and maintained by an internal team, made available to multiple banks within the Group, aiming to standardize the approach to currency exchange in terms of process and interface for the customer, as well as reduce management and maintenance costs for the currency exchange application.
  • A competitive, simple, and fast currency exchange tool for customers, with the ability to configure the dashboard according to their preferences.
  • Easy management of customers and FX products. 
  • Display of currency exchange rates in real-time (blinking rates).
  • Ability to execute one-click transactions, without considering manual user actions, within a few seconds with immediate settlement in customer accounts.
  • Real-time updating of customer account balances.
  • Ensuring the highest quality and performance of the application, even with increased user activity, e.g., resulting from seasonal customer behavior in the FX market.
  • High independence in operation, even in case of non-functioning external sources.
  • Event audit performed in the application (especially regarding transactions conducted).

R-Flex in the Cloud

The group application R-Flex is hosted on AWS, where we utilize Merlin's solutions. Merlin is a group provider of cloud platform embedding (PaaS model), setting up the platform with the components we need in a straightforward manner (using AWS services, our solutions, and other group tools, such as ORCA, CDA). The system consists of two web applications: R-Flex for external customers and E-Flex for internal customers (bank employees). For R-Flex content serving, we use a popular and proven solution, consisting of AWS CloudFront and AWS S3 bucket. For E-Flex, a CDN service hosted on AWS Elastic Kubernetes Service fulfills this function. In this case, we also use AWS S3 for storing static content. Our front-end applications are developed using the Angular framework and provide RWD for mobile devices.

Dynamic Content

For serving dynamic content for external customers, we use the Kong API gateway and the heart of our solution, which are services embedded on AWS EKS. For R-Flex, we chose a modern microservices architecture, based on the CAP theory (Consistency, Availability, Partitioning), which allows us to create an efficient, scalable, and resilient system. Achieving such architecture was facilitated by adopting the event sourcing approach + Command and Query Responsibility Separation pattern (Axon framework), event streaming (Kafka Streams), and data streaming (project reactor).

Data Storage

Storing replica data from NWU in the system allowed us to separate ourselves from the NWU ecosystem and possible bottlenecks when fetching data from their systems. We store such data in relational databases (AWS RDS). Inside services, maintaining replicas of the data they need (mostly stored in NoSQL databases, AWS DocumentDB) allows us to maintain high service independence and continuity of operation. This is essential in case of service unavailability, which is the owner of the data. In such architecture, system integrations are mainly based on asynchronous communication, for which we use a Kafka cluster (AWS MSK) as a broker. Managing business processes that handle FX transactions is also crucial in our architecture. Here, we chose Camunda as a solution. It enables us to deliver transparent, high-quality, and easy-to-maintain business processes.

R-Flex – Group Solution

R-Flex is a group solution, meaning it can be used in multiple NWUs simultaneously. To meet the requirements in our application, we applied a Multitenancy approach. This allows our service to handle requests from multiple NWUs within the same working time, optimizing costs, facilitating maintenance, and providing parallel delivery of functionality to all interested parties.

Our Enhancements

Another milestone was the introduction of the ability to enable/disable business functionalities within NWUs, allowing changes to be implemented despite the unreadiness of all NWUs. We also introduced release flags, enabling more frequent deployments to production, even though changes in packages were not fully ready yet.

One of the recent enhancements we are introducing to our application is faster and standardized integration with subsequent NWUs through the group solution RICE. To achieve this goal on the R-Flex side, we implemented new adapters corresponding to group standards for synchronous communication, using RICE REST API. We also introduced a new adapter for asynchronous communication with NWUs, utilizing RICE streaming API. This will enable us to automate, increase efficiency, and improve the reliability of many processes in R-Flex. Another important step was the use of another RICE component called RCFS (RICE Customer Federation Service), which allowed us to implement high-quality Single Sign-On authentication for our platform. This was possible through the use of OAuth 2.0 PKCE flow and OpenID Connect standard.

And What's Next – Our Challenges

Maintaining full transparency, it is worth mentioning the challenges that still lie ahead of us. They mainly concern the performance, stability, resilience, and improvement of the quality of our application, as well as the ability to easily deliver further business functionalities. However, with such solid foundations, implementing the necessary improvements will undoubtedly help us achieve our intended goal. 

Related News