flowchart TD
client[client] --> api_gateway{API Gateway}
api_gateway --> |/login, /create-user|user_service[User Service]
api_gateway --> |/get-feed, /view-user, /get-favorite|feed_service[Feed Service]
api_gateway --> |/tweet, /favorite, /share|tweet_service[Tweet Service]
api_gateway --> |/follow, /unfollow|follow_service[Follow Service]
user_service --> |/create-user, /login|user_db_master[(User DB Master)]
user_db_master --> user_db_read_replica[(User DB Read)]
tweet_service --> |/tweet, /share|tweet_write_mq{{Tweet MQ}}
tweet_write_mq --> tweet_db_master[(Tweet DB Master)]
tweet_db_master --> tweet_db_read_replica[(Tweet DB Read)]
tweet_service -->|/favorite|favorite_write_mq{{Favorite MQ}}
favorite_write_mq --> favorite_service[Favorite Service]
favorite_service <--> user_db_read_replica
favorite_service <--> tweet_db_read_replica
favorite_service --> favorite_db_master[(Favorite DB Master)]
favorite_db_master --> favorite_db_read_replica[(Favorite DB Read)]
follow_service --> follow_write_mq{{Follow MQ}}
follow_write_mq --> follow_db_master[(Follow DB Master)]
follow_db_master --> follow_db_read_replica[(Follow DB Read)]
feed_service <--> feed_cache
tweet_db_read_replica --> tweet_feed_mq{{Tweet Feed MQ}}
tweet_feed_mq --> feed_cache
follow_db_read_replica --> follow_feed_mq{{Follow Feed MQ}}
follow_feed_mq --> feed_cache
favorite_db_read_replica --> favorite_feed_mq{{Favorite Feed MQ}}
favorite_feed_mq --> feed_cache
feed_cache <--> tweet_db_read_replica
feed_cache <--> follow_db_read_replica
feed_cache <--> favorite_db_read_replica