Redis:
key: global_counter_key
value: count_value integer
when a client sends increment/decrement request, app server receives the reqeust and send request to redis to increment/decrement the counter in it.
graph LR
A((Client)) --> B(Application Server) --> C(Redis Database)
B --> D(MySQL Database)
graph LR
A((Client)) --> B(Application Server) --> C(Redis Database)
B --> D(MySQL Database)
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?