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...