Assuming 50% of these queries come in during 4 hours of peak time per day ,
Peak read api throughput = = 14 tps. This throughput can be delivered by a single core. Here for the sake of High availability a minimum of 2 large ec2 instances ( 2 core , 4 gb memory can be considred )
Assuming 50% of the write volume per day happens during 4 hours,
Peak IO bandwidth = (112/2)/4 = 14 mb/hr = 3.8 kbps.
Based on these numbers, rdsInstance of 1 small or medium instanceType with 100 GB disk space available is sufficient for the master .
To ensure High Availability , a 2+2 instance deployment in 2 AZ s is recommended. Single master , hot secondary setup.
Write service estimate -- From the above calculation , total api write volume per day is 13200 .
Thus, Peak api write throughput = 1650 / hr = 0.5 tps.
For operational simplicity , the read and write api s can be served from same service as their combined throughput requirement as per this calculation is rather less . The estimation is dominated by high availability concern
THere should be an active data archival policy scheduled on regular interval to maintain the size
AuctionService is also responsible for providing a total order for the bids so that even in case of same bid amount , a winner can always be selected. Each AuctionService server instance maintains an atomic integer counter per auctionId . Within each server instance multiple threads are processing bid creation requests, each of these threads do access these counters atomic incrementAndGet method to get a unique count value that is assigned to the bid and persisted.
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...
Mitigation - Read service might intelligently identify the auctions whose details are most likely to be stale , e.g the ones with closes bid_closing time and augment the ES results with OLTP db data from read replica.