Slide 1

Slide 1 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Danilo Poccia Principal Evangelist, Serverless @danilop A quick intro to serverless & AWS

Slide 2

Slide 2 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Why serverless?

Slide 3

Slide 3 text

© 2020, Amazon Web Services, Inc. or its Affiliates. IT often starts with a single server… Single Server

Slide 4

Slide 4 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Your customers are happy… Single Server Customers

Slide 5

Slide 5 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Your customers are happy… until they are not Single Server Customers

Slide 6

Slide 6 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Separate business logic from data Application Server Database Server Customers

Slide 7

Slide 7 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Scalability & availability Two Application Servers Database Server Customers

Slide 8

Slide 8 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Balancing traffic across multiple application server Two Application Servers Database Server Load Balancer Customers

Slide 9

Slide 9 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Managing failover across multiple application server Two Application Servers Database Server Load Balancer Customers

Slide 10

Slide 10 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability for the database Two Application Servers Active / Standby Database Load Balancer Customers

Slide 11

Slide 11 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability for the database Two Application Servers Active / Standby Database Load Balancer Customers

Slide 12

Slide 12 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Deploying on AWS... Two Amazon EC2 Instances Amazon RDS Database Application Load Balancer Customers

Slide 13

Slide 13 text

© 2020, Amazon Web Services, Inc. or its Affiliates. 3 it’s better than 2, elasticity is better than any number Amazon EC2 Auto Scaling Amazon RDS Database Application Load Balancer Customers Amazon Aurora RDS for MySQL RDS for PostgreSQL RDS for MariaDB RDS for Oracle RDS for SQL Server

Slide 14

Slide 14 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Scaling the database is more difficult Amazon EC2 Auto Scaling Amazon Aurora Database Application Load Balancer Customers Amazon Aurora MySQL or PostgreSQL compatible

Slide 15

Slide 15 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Which database to use? Amazon EC2 Auto Scaling Amazon Aurora Database Application Load Balancer Customers

Slide 16

Slide 16 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Database freedom Amazon Aurora MySQL or PostgreSQL compatible Amazon DynamoDB Amazon DocumentDB with MongoDB compatibility Amazon Neptune (Graph) Amazon QLDB (Ledger) Amazon Managed Apache Cassandra Service

Slide 17

Slide 17 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Using containers Amazon Aurora MySQL or PostgreSQL compatible Amazon DynamoDB Amazon DocumentDB with MongoDB compatibility Amazon Neptune (Graph) Amazon QLDB (Ledger) Amazon Managed Apache Cassandra Service Amazon Elastic Container Service Amazon Elastic Kubernetes Service Container Container Container Container Container

Slide 18

Slide 18 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Tasks, Pods, and Services Amazon Aurora MySQL or PostgreSQL compatible Amazon DynamoDB Amazon DocumentDB with MongoDB compatibility Amazon Neptune (Graph) Amazon QLDB (Ledger) Amazon Managed Apache Cassandra Service Amazon ECS Amazon EKS Task Pod Service

Slide 19

Slide 19 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Managing containers, not clusters Amazon Aurora MySQL or PostgreSQL compatible Amazon DynamoDB Amazon DocumentDB with MongoDB compatibility Amazon Neptune (Graph) Amazon QLDB (Ledger) Amazon Managed Apache Cassandra Service Amazon ECS Amazon EKS Task Pod Service AWS Fargate

Slide 20

Slide 20 text

© 2020, Amazon Web Services, Inc. or its Affiliates. AWS Lambda Function Function Function What about functions? Something happens! Event Any public or private resource

Slide 21

Slide 21 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Using functions AWS Lambda Function Function Function Amazon API Gateway Application Load Balancer AWS SDK Lambda Invoke API sync/async

Slide 22

Slide 22 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Adding storage AWS Lambda Function Function Function Amazon API Gateway Application Load Balancer AWS SDK Lambda Invoke API sync/async Amazon S3 Bucket HTML, CSS, JS Images

Slide 23

Slide 23 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Adding storage and authentication AWS Lambda Function Function Function Amazon API Gateway Application Load Balancer AWS SDK Lambda Invoke API sync/async Amazon S3 Bucket Amazon Cognito User Auth HTML, CSS, JS Images

Slide 24

Slide 24 text

© 2020, Amazon Web Services, Inc. or its Affiliates. How does serverless work? API Gateway Storage Databases Analytics . . . Your unique business logic API call User uploads a picture Customer data updated Anomaly detected . . . Fully-managed services Events Functions

Slide 25

Slide 25 text

© 2020, Amazon Web Services, Inc. or its Affiliates. What about availability and scalability?

Slide 26

Slide 26 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – AWS Global Infrastructure

Slide 27

Slide 27 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – AWS Region Region

Slide 28

Slide 28 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – Availability Zones Region Availability Zone Availability Zone Availability Zone

Slide 29

Slide 29 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – EC2 instances Region Availability Zone Availability Zone Availability Zone

Slide 30

Slide 30 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – EC2 Auto Scaling Region Availability Zone Availability Zone Availability Zone Auto Scaling group Auto Scaling group

Slide 31

Slide 31 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – Containers Region Availability Zone Availability Zone Availability Zone

Slide 32

Slide 32 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – Load Balancer Region Availability Zone Availability Zone Availability Zone

Slide 33

Slide 33 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Availability and scalability – Fully managed services Region Availability Zone Availability Zone Availability Zone API Gateway Lambda Function DynamoDB Table S3 Bucket

Slide 34

Slide 34 text

© 2020, Amazon Web Services, Inc. or its Affiliates. AWS operational responsibility models On-Premises Cloud Less More Compute Virtual Machine EC2 Elastic Beanstalk AWS Lambda Fargate Databases MySQL MySQL on EC2 RDS MySQL RDS Aurora Aurora Serverless DynamoDB Storage Storage S3 Messaging ESBs Amazon MQ Kinesis SQS / SNS Analytics Hadoop Hadoop on EC2 EMR Elasticsearch Service Athena

Slide 35

Slide 35 text

© 2020, Amazon Web Services, Inc. or its Affiliates. A serverless demo

Slide 36

Slide 36 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Serverless real-time apps – What to build? • Building a chat is the mandatory example for WebSockets • Can I build something that can help in being a “better” person? • Not in person communication is hard • Can machine learning help? Some services are super easy to use!

Slide 37

Slide 37 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Let’s build a “Positive Chat” J • Avoid negative sentiment • Reject negative sentences • Positive sentiment gamification • Automatically translate between different languages • Extract message topics to improve searchability and discoverability • Create and update a chat room “tag cloud” • Search or filter messages by “tag”

Slide 38

Slide 38 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Let’s build a “Positive Chat” J • Attach images to messages • Moderate content • Describe image content (objects, people, emotions) • Find text in images • Anonymize people faces • For all people or based on estimated age • Cover faces with emoticon based on actual emotions

Slide 39

Slide 39 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Positive Chat – Serverless architecture Amazon DynamoDB Amazon Cognito Amazon API Gateway WebSocket connection PositiveChat Lambda function Connections table Conversations table Topics table Web browser AWS Cloud S3 bucket for static assets (HTML, CSS, JS) Authentication Authorization To be implemented Amazon Comprehend Amazon Translate Amazon Rekognition To be implemented

Slide 40

Slide 40 text

© 2020, Amazon Web Services, Inc. or its Affiliates. $ wc -l positive-chat/app.js 326 positive-chat/app.js $ wc -l www/index.js 204 www/index.js backend + frontend ≃ 460 lines of code removing empty lines and comments https://github.com/danilop/serverless-positive-chat

Slide 41

Slide 41 text

© 2020, Amazon Web Services, Inc. or its Affiliates. How to start with serverless?

Slide 42

Slide 42 text

© 2020, Amazon Web Services, Inc. or its Affiliates. How to start with serverless? AWS Amplify AWS Serverless Application Model (SAM) https://aws-amplify.github.io https://aws.amazon.com/serverless/sam

Slide 43

Slide 43 text

© 2020, Amazon Web Services, Inc. or its Affiliates. $ amplify

Slide 44

Slide 44 text

© 2020, Amazon Web Services, Inc. or its Affiliates. $ sam

Slide 45

Slide 45 text

© 2020, Amazon Web Services, Inc. or its Affiliates. More tooling available

Slide 46

Slide 46 text

© 2020, Amazon Web Services, Inc. or its Affiliates. And serverless workshops J https://github.com/aws-samples/aws-serverless-workshops

Slide 47

Slide 47 text

© 2020, Amazon Web Services, Inc. or its Affiliates. Thank you! @danilop Please give me your feedback! J