Transcript
Page 1: Introducing Serverless Computing (20160802)

Introducing Serverless ComputingKeisuke Nishitani (@Keisuke69)

Amazon Web Services Japan K.K.Aug 2, 2016

Page 2: Introducing Serverless Computing (20160802)

ProfileKeisuke NishitaniSolutions Architect, Amazon Web Service Japan K.K

@Keisuke69 Keisuke69

✤ ソリューションアーキテクト✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくします

✤ モバイルニンジャ1号機✤ RESTおじさん✤ Lambda Wizards

✤ 餃⼦の王将エヴァンジェリスト(⾃称)✤ ⾳楽が好きです、フジロッカーです、今年も⾏きます

✤ でもサマソニも毎年⾏きます✤ ⼩説⼤好き、マンガ⼤好き、空想好き✤ ブログ: http://keisuke69.hatenablog.jp/

Keisuke69 Keisuke69Keisuke69x

Page 3: Introducing Serverless Computing (20160802)

What is Serverless Computing?

Page 4: Introducing Serverless Computing (20160802)

AWSのComputeサービス

Amazon EC2 Amazon ECS AWS Lambda

スケールの単位インスタンス アプリケーション ファンクション

抽象化ハードウェア OS ランタイム

使いドコロ

Page 5: Introducing Serverless Computing (20160802)

AWSのComputeサービス

Amazon EC2 Amazon ECS AWS Lambda

スケールの単位インスタンス アプリケーション ファンクション

抽象化ハードウェア OS ランタイム

使いドコロ • OS、ネットワーク、ストレージのレベルで構成を制御したい

• 好みのOSを利⽤したい

• OS以上の全てを⾃分でコントロールしたい

• サーバを⾃分で構成して実⾏したい

• アプリケーションの構成を制御したい

• スケールを⾃分でコントロールしたい

• 必要なときだけコードの実⾏を⾏いたい

• インフラの構成・管理を⾏いたくない

Page 6: Introducing Serverless Computing (20160802)

AWSのComputeサービス

Amazon EC2 Amazon ECS AWS Lambda

スケールの単位インスタンス アプリケーション ファンクション

抽象化ハードウェア OS ランタイム

使いドコロ • OS、ネットワーク、ストレージのレベルで構成を制御したい

• 好みのOSを利⽤したい

• OS以上の全てを⾃分でコントロールしたい

• サーバを⾃分で構成して実⾏したい

• アプリケーションの構成を制御したい

• スケールを⾃分でコントロールしたい

• 必要なときだけコードの実⾏を⾏いたい

• インフラの構成・管理を⾏いたくない

Serverless

Page 7: Introducing Serverless Computing (20160802)

AWS Lambdaのユースケース

Page 8: Introducing Serverless Computing (20160802)

Real-time File Processing✤ イメージのサムネイル⽣成やビデオの変換✤ ドキュメントのメタデータをインデックス化✤ ログの処理✤ メディアコンテンツのバリデーション

元画像 サムネイル画像

1

2

31.ファイルストレージを

提供するAmazon S32.処理ロジックを提供す

るAWS Lambda

Page 9: Introducing Serverless Computing (20160802)

Real-time Stream Processing✤ クライアントのアクティビティトラッキング✤ クリックストリーム分析✤ メトリクス⽣成✤ データクレンジング✤ ログフィルタリング✤ インデクシング✤ デバイスデータのテレメトリと測定

1.ストリームデータの保存を提供するAmazon Kinesis

2.データ処理アプリケーションとしてのAWS Lambda

Page 10: Introducing Serverless Computing (20160802)

Extract, Transform and Load✤ データバリデーション✤ バックアップ✤ 分析

1.NoSQLデータストアを提供するAmazon DynamoDB

2.変換およびロード処理を実⾏するAmazon Lambda

3.DWHを提供するAmazon Redshift

Page 11: Introducing Serverless Computing (20160802)

Serverless Web and Mobile Applications✤ 静的コンテンツを提供するAmazon S3✤ 動的コンテンツを提供するAWS Lambda✤ HTTPアクセスを提供するAmazon API Gateway✤ NoSQLデータストレージを提供するAmazon DynamoDB

AWS Lambdaの動的コンテンツ

Amazon DynamoDBに格納

されたデータAPI Gateway

Amazon S3の静的コンテンツ ブラウザ

Page 12: Introducing Serverless Computing (20160802)

新しいアプリケーションエコシステム:Alexaアプリ + Slack = Serveless bot!

Alexa、"今からデモを送る"をSlackで送信し

スケジュールされたポーリングによりメッセージを取得

Kevinから、"成功を祈る!"

(Slack APIを使って)メッセージをアップロード

チーム(チャネルユーザー)

Slack

Page 13: Introducing Serverless Computing (20160802)

Real-Time Message Handling

New message published

Amazon SNS AWS Lambda

Amazon SNS

Amazon Kinesis

Page 14: Introducing Serverless Computing (20160802)

Audit CloudTrail Activity

AWS Lambda

Amazon S3Amazon CloudTrail

Amazon SNS

AWS IAM

Page 15: Introducing Serverless Computing (20160802)

Automated Infrastructure Management

AWS Lambda

Amazon SNS

Amazon CloudWatch Alarm

ec2runInstance

ecsstartTask

beanstalkupdateApp

kinesissplitShard

Any API call

https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/

Page 16: Introducing Serverless Computing (20160802)

Forward AWS Events to External Endpoints

http://danilop.net/aws/2015/07/26/sns2ifttt/ |https://github.com/danilop/SNS2IFTTT

AWS Lambda

Amazon SNS

IFTTT via the Maker channel

Amazon CloudWatch Events

Auto Scaling

Page 17: Introducing Serverless Computing (20160802)

Deploy Lambda Functions

https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/

AWS Lambda

Amazon SNS

GitHub Repo

lambda createFn ()

Page 18: Introducing Serverless Computing (20160802)

事例

Page 19: Introducing Serverless Computing (20160802)

VidRoll課題• EC2の管理が難しくなりつ

つあった• ITインフラではなくビジネ

スへのフォーカスが必要

解決⽅法• プレイヤーがAPI Gateway

経由でLambdaを実⾏• 動画のリアルタイム変換に

も利⽤

ベネフィット• ⽣産性が向上し、収益が10

倍になっても、エンジニアの追加なし

Page 20: Introducing Serverless Computing (20160802)

Legacy Architecture

Limelight Edge

Laptop Encoders

RTMPWowza Transmux

Servers

Wowza Transcode Servers

Wowza Record Servers

RTMP

RTMP

RTMP

Auto Uploader

MP4 HLS

S3 VOD bucket

CloudFront mobile client

Live Streaming

VOD

CloudFront mobile clientHLS

HLS

Page 21: Introducing Serverless Computing (20160802)

Current Architecture

Laptop Encoders

HLS

S3 Playback

VOD Stream mobile client

CloudFront Streaming

Live stream mobile client

CloudFront S3 Ingest

480p Transcode

HQ Copy

360p Transcode

Audio-only Transcode

Thumbnail

QOS Analytics

Cascading Lambda Functions

Page 22: Introducing Serverless Computing (20160802)

easy tenMobile app that helps you learn 10 new, foreign words a day

Users have learned

170 000 000+new words

1 200 000+downloads

• Featured in 85+ countries• Top 5 grossing apps overall (Russia)• Top 8 grossing apps overall (Brazil)

Page 23: Introducing Serverless Computing (20160802)

スクリーンショット

Page 24: Introducing Serverless Computing (20160802)

これまでのアプローチ✤ モノリシックなアプリを複数のEC2インスタンス

上で稼働

✤ 複雑なデプロイ。⼀⾏の変更でも全体の再デプロイが必要

✤ スケーラビリティ/俊敏性と新機能のバランスを取る必要があり頻繁なリリースができない

Page 25: Introducing Serverless Computing (20160802)

Lambda consumer

S3

Mobile Analytics

DynamoDB

SQS

Amazon EMR

Amazon Cognito

Amazon Kinesis

Mobile app

Amazon Redshift

Lambda interface

S3 dump

DynamoDB log

Microservice Core

Page 26: Introducing Serverless Computing (20160802)

⽇本のお客様も

Page 27: Introducing Serverless Computing (20160802)

オフィスアワーやります✤ 8⽉19⽇(⾦)にオフィスアワー(個別技術相談会)を開催します✤ Serverlessなシステムに関するアーキテクチャ相談✤ 1スロット、45分で7スロット受け付け予定✤ 要事前登録✤ もちろん無料✤ 告知サイトならびに登録ページは近⽇公開!

Page 28: Introducing Serverless Computing (20160802)