Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
Rest API
POST/v1/pairings
{
"elo_rating"
"user_id"
}
Websocket request
wss://chessingameservice.com/ws/games/{gameid}
functional requirement 3
{
"type": move
"gameid": {gameid}
"playerid": {playerid}
"move"
"from": E1
"to": W2
}
functional requirement 4
restapi
GET/v1/{userid}/replay
{
"gameid":
"result": wins/loses/ties
"duration":
"new_eso_rating"
"moves":
}
GET/v1/users/{userid}/profile
{
"userid":
"bio":
"eso_rating"
"wins"
"loses"
"ties":
"gamesplayed":
}
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.