Write a spring boot APIs that each serve a given BIAN Service Domain. The data that the APIs

exposed are sourced from Systems of Record to produce a realtime feed through Kafka. Our APIs are

either written on top of Kafka topics directly using Event Sourcing or we use the traditional approach

of sinking our data from Kafka to a database and write our API on top of the databases.

The purpose of this challenge is to have you work through a problem where the expectation is for you

to produce an API. We have specifically opted to make the problem statement as generic as possible

to allow you to:

The ONLY requirement is that this API MUST BE WRITTEN USING THE SPRING BOOT

FRAMEWORK.

Problem Statement

The Data Feeds

Let’s assume you have the two following data feeds:

Feed 1: The balances

This is a data feed, where each event represents a single balance update for a given account.

A single record looks like this

{“accountNumber”: “abc”, “lastUpdateTimestamp”: “2020-01-01T01:02:03.8Z”, “balance”: 89.1}

Feed 2: The transactions

This is a data feed representing transactions that are occuring. Each record will be a single transaction

at the bank. Keep in mind that there are two types of transactions: 1. DEPOSIT and 2. WITHDRAW.

A single record looks like this

For a DEPOSIT:

{“accountNumber”: “abc”, “transactionTs”: “2020-01-03T01:02:03.8Z”, “type”: “DEPOSIT”, “amount”: 89.1}

Or a WITHDRAW

{“accountNumber”: “abc”, “transactionTs”: “2020-01-03T01:02:03.8Z”, “type”: “WITHDRAW”, “amount”: 89.1}

The API [ the actual meat of the assignment 😉 ]

Please write an API that can serve the following queries:

  1. Given an accountNumber, return the latest balance.
  2. Given an accountNumber and a time range such as: Today, Last 7 days, last Month and the

more general case of a range between date X and date Y. For example, I should be able to ask for all

my transactions between January 8th, 2019 and November 28th, 2020.

  1. Repeat 2, but filter for type. I.E. Show me transactions with type WITHDRAW.

Some hints:

  1. Make sure that any technical choice you are making is backed up by good reasoning. Meaning,

if you decide to go with event sourcing? Why? If you choose to use a noSQL datbase? Why?

  1. Make reasonable assumptions about the problem. If any extra detail is left out, just ride the

wave and make assumptions. There are no wrong answers here.

Sample Solution

This question has been answered.

Get Answer