The NRT system and its building blocks
The first and foremost question that strikes us here is "when do we call an application an NRT application?" The simple and straightforward answer to this is a software application that is able to consume, process, and generate results very close to real-time; that is, the lapse between the time the event occurred to the time results arrived is very small, an order of a few nanoseconds to at most a couple of seconds.
It's very important to understand the key aspects where the traditional monolithic application systems are falling short to serve the need of the hour:
- Backend DB: Single point monolithic data access.
- Ingestion flow: The pipelines are complex and tend to induce latency in end to end flow.
- Failure & Recovery: The Systems are failure prone, but the recovery approach is difficult and complex.
- Synchronization and state capture: It's very difficult to capture and maintain the state of facts and transactions in the system. Getting diversely distributed...