Slide 1

Slide 1 text

Serverless WebSockets at Scale Simon Tabor Software Engineer @simon_tabor

Slide 2

Slide 2 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Who am I? @simon_tabor Software Engineer Simon Tabor

Slide 3

Slide 3 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Covering… • Our Requirements • AWS AppSync • WebSockets for API Gateway • AWS IoT • Our Solution • The Future!

Slide 4

Slide 4 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Key Moments

Slide 5

Slide 5 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Product Requirements • Support live events • Users get new Key Moments within 30s • Support catch-up events

Slide 6

Slide 6 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor System Requirements • Publish updates to users, rather than have the users poll • Retrieve previous messages and subscribe to new messages • Perform with high-traffic on a global scale

Slide 7

Slide 7 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Requirements

Slide 8

Slide 8 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Why WebSockets?

Slide 9

Slide 9 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Why Serverless? Capacity Time Capacity Requirement Autoscaled Capacity

Slide 10

Slide 10 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor ≈

Slide 11

Slide 11 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor How it’s sold AppSync aws.amazon.com/appsync/

Slide 12

Slide 12 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Pros: GraphQL AppSync

Slide 13

Slide 13 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Authentication AppSync

Slide 14

Slide 14 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Authentication AppSync

Slide 15

Slide 15 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Query + Subscribe AppSync

Slide 16

Slide 16 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Global Deployment AppSync

Slide 17

Slide 17 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: DynamoDB • Each user performs an AppSync query on connection • 1 AppSync query = 1 DynamoDB query • Limit of 3,000 read-units per second per partition • Limit of 3,000 new users connecting per second per fixture AppSync

Slide 18

Slide 18 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: DynamoDB Caching AppSync CloudFront DynamoDB Accelerator ElastiCache

Slide 19

Slide 19 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: DynamoDB Caching AppSync

Slide 20

Slide 20 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: DynamoDB Solutions • Duplicate data N times when writing to DynamoDB • Front-end selects a random number between 1 and N • Resolves query load for now • Increased costs, higher latency, no single source-of-truth AppSync

Slide 21

Slide 21 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: DynamoDB Solutions AppSync

Slide 22

Slide 22 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor

Slide 23

Slide 23 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor How it’s sold aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/ WebSockets for API Gateway

Slide 24

Slide 24 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor How it’s sold WebSockets for API Gateway

Slide 25

Slide 25 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Pros: Flexible WebSockets for API Gateway • Access to send messages to each individual connection • Incredibly versatile, more control than AppSync • Fully serverless, can use Lambda for all actions

Slide 26

Slide 26 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Broadcasting • Designed for sending specific messages to specific users • Not designed to broadcast a single message to millions of users • Need to invoke a Lambda for each connection and store state in DynamoDB • Need to make an API call to AWS for each connection WebSockets for API Gateway

Slide 27

Slide 27 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Broadcasting WebSockets for API Gateway

Slide 28

Slide 28 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor

Slide 29

Slide 29 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor How it’s sold AWS IoT aws.amazon.com/iot-core/

Slide 30

Slide 30 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Pros: Mature • Mature solution with huge number of features • Many irrelevant for us due to IoT focus • Good monitoring AWS IoT

Slide 31

Slide 31 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Cons: Authentication AWS IoT docs.aws.amazon.com/iot/latest/developerguide/protocols.html

Slide 32

Slide 32 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor ≈ Pubby

Slide 33

Slide 33 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Requirements • Shared WebSocket connection for Subscribe and Query • Global scale with no race conditions • Minimal operational overhead • Generic for use by other applications? Pubby

Slide 34

Slide 34 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Subscriptions Architecture Pubby

Slide 35

Slide 35 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Publishing Architecture Pubby

Slide 36

Slide 36 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Architecture Pubby

Slide 37

Slide 37 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Failovers Pubby 0 750,000 1,500,000 2,250,000 3,000,000 0 mins 2 mins 4 mins 6 mins 8 mins 10 mins 12 mins 14 mins EU Central 1 US East 1

Slide 38

Slide 38 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Failovers Pubby

Slide 39

Slide 39 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Conclusions

Slide 40

Slide 40 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Conclusions • Deals with a specific use-case • Service can be used by other teams at DAZN • Highly-available with seamless regional failover • Single, shared, native WebSocket connection Pubby

Slide 41

Slide 41 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Conclusions • AppSync is incredibly powerful • Key Moments requirements are simple • Subscriptions are weakest part of GraphQL • Managed services have downsides • Recommended for a service with many related models AppSync

Slide 42

Slide 42 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Conclusions • Opens huge opportunity to use WebSockets • Lack of broadcasting immediate deal-breaker • Great for non-broadcast services • Updates and improvements coming soon? WebSockets for API Gateway

Slide 43

Slide 43 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Conclusions • Massive scale • Solution would need to be designed specifically for AWS IoT • Authentication doesn’t suit us AWS IoT

Slide 44

Slide 44 text

Is AWS ready to provide serverless WebSockets at scale? @simon_tabor Future? Pubby

Slide 45

Slide 45 text

Thank you! Simon Tabor Software Engineer @simon_tabor engineering.dazn.com @dazneng