Travelers browse and book rooms through a fast read path served from caches, a search index, and read replicas. Landlords publish listings through a write path buffered by a durable queue — so the database is never overwhelmed by spikes.
Guest traffic hits Route 53, ALB, and stateless microservices that query Elasticsearch and read replicas. The primary database is never touched by browse requests — search stays fast under load.
The Host Service enqueues changes to SQS and returns immediately. The Update Service drains the queue, writes to the primary DB, and re-indexes Elasticsearch — turning bursty writes into a steady stream.
Every service tier is stateless behind the ALB — Auto Scaling groups add or remove instances freely. The queue absorbs write bursts, Elasticsearch scales reads separately from the DB, and CloudFront serves media from edge POPs.
Each domain (view, guest, payment, search, host) has different load profiles. Separating them lets each scale and deploy independently.
SQS decouples the Host Service from the database and search index. Failures retry automatically; poison messages land in a dead-letter queue.
Relational queries can't match the sub-100ms faceted search travelers expect. A dedicated index sharded across nodes handles this without competing with transactional writes.
Listing pages are photo-heavy. Serving images from S3 through CloudFront's global edge POPs cuts latency for distant users and reduces origin load.