System design
In this section, we will design the system. First, we will put together a high-level system design with different components and design the flows that satisfy the functional requirements. Then we will identify the single points of failure or any issues with our design and list out the core challenges that we need to address. This will help us refine the design and arrive at the final high-level system design architecture and flow.
Before we dive deep into the core challenges, let’s put a high-level diagram first to put together the pieces and the flow.
High-level system design
The following diagram shows the initial high-level design with the important entities and the flow (Figure 10.1). The core entities we discuss here are Customer, Restaurant, and Order. The following high-level diagram just shows the basic components and simple databases to store the data. We will refine it later as we dig deeper.
Figure 10.1: High-level...