client -> car placement service -> user data service-> payment service -> notification service -> analytics service
Note that if we want to maximize availability and scale, we can place queues in between each service. We can use Kafka, for example. Then we can have consumers at each service that process the Kafka messages at the rate the systems allow. This approach will ensure we can scale without problems and will prevent high throughput to take down the system.
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?