A simplistic and futuristic enterprise architecture for Bank

Consider a scenario in which customer is shown the spending patterns (Monzo example) by Bank in its online and mobile banking application.  The spending patterns are derived from the customer transactions - Customer pays to merchants and over time this data (transactions) is accumulated to prepare a customer spending pattern.

Customer making payments using Bank's account is the core banking feature and it can be assumed the transaction data is held in RDBMS or Mainframe or any SQL store. 

  1. The transaction data will probably be integrated with other data such as customer details, customer preferences, merchant details, GPS (location of the transaction), etc.  and moved to a data warehouse or data lake using ETL or ELT job.  
  2. Once the integrated data is available in the data lake, the data can be enriched to add categories such as Bars, Restaurant, Shopping, and so on.  The enrichment may be a rule-based batch job that applies the category based on a few transaction attributes.   It can be a machine learning algorithm that applies the labels (categories) on each transaction and gets trained on the data of the past few years. 
  3. The enriched transaction data is grouped according to spending categories and materialized views (spend report for a period) are exposed as service/APIs 
  4. The services/APIs are consumed by channels (mobile, online, staff application, and so on).  Customer must see the same spending patterns on each channel. 
  5. Bank also decides to do some cross-selling and display a few insightful marketing banners/ads based on customers spending patterns.  These banners appear in the front end channel - this requires intelligence integrated into the front end channels.  Salesforce or Adobe so similar software can do this - for example, Mobile app will fetch the banner content in real-time from Adobe or Salesforce.    
  6. As customer performs new transactions it should be streamed to the data lake for immediate enrichment.  Kafka comes here - all the layers: channels, APIs, SQL/NoSQL data stores, data lake, and enrichment job/program communicate using Kafka or similar streaming solution
  7. Customer can change the category of any transaction and this has to be communicated to our machine learning algorithm so it improves its enrichment program
The overall simplified and futuristic architecture looks like below (and it applies to many use cases):
I got the inspiration of above from a presentation by SBERBANK on Kafka.