flowchart TD
user[user] --> reverse-proxy[reverse-proxy]
reverse-proxy --> user-service-lb{load-balancer}
reverse-proxy --> redirect-service-lb{load-balancer}
user-service-lb --> user-service[user-service] <--> user-db[(user-db)]
user-service --> shortening-service[shortening-service]
redirect-service-lb --> redirect-service[redirect-service]
shortening-service --> url-db-master[(url-db-master)]
redirect-service <--> redirect-cache[redirect-cache]
redirect-service <--> url-db-replica[(url-db-replica)]
url-db-master --> url-db-replica
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?