This document discusses how Amazon Simple Queue Service (SQS) and Simple Notification Service (SNS) can be used together to build scalable and reliable messaging in a mobile food ordering application. SQS is used to queue orders and notifications while SNS publishes notifications to multiple restaurant queues. This decouples components, allows for asynchronous processing, and ensures reliable delivery even during high load periods by keeping queues separate for each restaurant.
28. Amazon SQS + Amazon SNS
Store and retrieve any volume of messages
Serve any level of throughput
Without any operational burden
29.
30. Example: cupaNoodle Mobile Food Ordering
• Mobile app for food
ordering delivery
• Promise to customers
and to restaurants:
“It just works.”
31.
32.
33.
34. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
35. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
36. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
37. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
38. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
39. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
40. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
41. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
42.
43.
44. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
45. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
46. Turn low availability
services into high Data
Warehouse
Queue
Restaurant
Payment
CC
Billing
availability services
Queues placed
Favorite
Meals
Queue
Social Network
Crawling
Queue
allow non-essential
processing to be
deferred during
Favorite Meals Social Network
RDS DB Instance
Processors
Auto Scaling group
Crawlers
Auto Scaling group overloads
47. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
48. Separate queues per restaurant prevents delays in any
one restaurant from affecting deliveries by the others
Restaurant 1
Queue
Restaurant 2
Queue
Restaurant 3
Queue
49.
50. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
51. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
52. Data Restaurant CC
Warehouse Payment Billing
Queue
Orders
Topic
Restaurant
Notification
Queue
Durable delivery combined with configurable
re-delivery so each order is fully processed
53.
54. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
55. Seamlessly matches the Data Restaurant CC
throughput of both the Warehouse Payment Billing
Queue
order rate and restaurants’
delivery rates Restaurant
Notification
Queue
Restaurant 1
Queue
Always catch up, no Restaurant 2
matter how large the Restaurant
Notification Servers
Auto Scaling group
Queue
backlog becomes Restaurant 3
Queue
56.
57. Auto Scaling group
Data Restaurant CC
Mobile Client
Warehouse Payment Billing
Queue
Orders
Elastic Load API Servers Topic
Balancing
Client Restaurant
Notification
Queue
Restaurant 1
Queue
Favorite Social Network
Meals Crawling
CC Queue Queue
Processing
Restaurant 2
Restaurant Queue
Notification Servers
Auto Scaling group
Favorite Meals Social Network
Processors Crawlers Restaurant 3
RDS DB Instance Auto Scaling group Auto Scaling group Queue
Social
Networks
58. Unused queues are free; Data
Warehouse
Queue
Restaurant
Payment
CC
Billing
pay only for the requests
you make Restaurant
Notification
Queue
Restaurant 1
Queue
Amazon SQS costs
<$0.0001 per cupaNoodle Restaurant
Notification Servers
Restaurant 2
Queue
Auto Scaling group
order Restaurant 3
Queue