80
Serverless Revolution Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Nov 11, 2016

Serverless Revolution

Embed Size (px)

Citation preview

Page 1: Serverless Revolution

Serverless RevolutionKeisuke Nishitani (@Keisuke69)

Amazon Web Services Japan K.K.Nov 11, 2016

Page 2: Serverless Revolution

ProfileKeisuke NishitaniSpecialist Solutions Architect, Amazon Web Service Japan K.K

@Keisuke69 Keisuke69

✤ スペシャリストSA- Serverless- Mobile- DevOps- Application Service

✤ RESTおじさん✤ 餃⼦の王将エヴァンジェリスト(⾃称)✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました✤ ⼩説⼤好き、マンガ⼤好き、空想好き✤ ブログ: http://keisuke69.hatenablog.jp/

Keisuke69 Keisuke69Keisuke69x

Page 3: Serverless Revolution

サーバレス流⾏ってますよね

Page 4: Serverless Revolution

なぜサーバレスなのか

Page 5: Serverless Revolution

⼀般的な3-tier Webアプリプレゼンテーション層 ロジック層 データストア層

Webサーバ/アプリサーバブラウザ/モバイル データベース

Page 6: Serverless Revolution

AWSで作る場合

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

Page 7: Serverless Revolution

Developerの⽬的とは?

Page 8: Serverless Revolution

価値を届けること

Page 9: Serverless Revolution

価値を届けること

Page 10: Serverless Revolution

価値=差別化

Photo credit: Ajith (അജി$്) via Visualhunt / CC BY-SA

Page 11: Serverless Revolution

価値を⽣み出すビジネスロジックに集中したい!

Photo credit: Leo Hidalgo (@yompyz) via VisualHunt / CC BY

Page 12: Serverless Revolution

でもなかなかそうは⾏かない現実

価値を⽣み出すビジネスロジックに集中したい!

Page 13: Serverless Revolution

サーバを所有すると✤ サーバのセットアップ

⎻ OSのセットアップとネットワークなどの設定⎻ ランタイムやミドルウェアのセットアップ

✤ キャパシティやスケーラビリティ管理

✤ 耐障害性を確保するための冗⻑化⎻ 複数台構成

✤ セキュリティパッチの適⽤

Page 14: Serverless Revolution

アプリケーションの観点でも✤ モノリシック

⎻ デプロイが⼀⼤イベント⎻ 重厚⻑⼤なパイプライン

✤ 差別化には繋がらない機能の実装⎻ スロットリング⎻ 認証・認可

Page 15: Serverless Revolution

ビジネスロジックに集中できない!

Photo credit: kizzzbeth via Visual hunt / CC BY

Page 16: Serverless Revolution

⼀般的な3-tier Webアプリ

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

Page 17: Serverless Revolution

⼀般的な3-tier Webアプリ

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

サーバ

Page 18: Serverless Revolution

⼀般的な3-tier Webアプリ

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

サーバ

サーバ

Page 19: Serverless Revolution

⼀般的な3-tier Webアプリ

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

サーバ

サーバ

サーバ

Page 20: Serverless Revolution

⼀般的な3-tier Webアプリ

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

サーバ

サーバサーバ

サーバ

Page 21: Serverless Revolution

サーバレススタックによる置き換え

ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc

S3CloudFront

Page 22: Serverless Revolution

サーバレススタックによる置き換え

ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc

S3CloudFront

AWSによるマネージ(フルマネージド)

Page 23: Serverless Revolution

Serverless = No servers to manage and scale

Page 24: Serverless Revolution

サーバレスのメリット✤ サーバレスはバックエンドのアウトソース

⎻ サーバサイドやインフラがわからないフロントエンジニアだけでシステムを実現することも可能

⎻ ⾃分の書いたコードをすぐ試せる、そのままプロダクションに持っていける⎻ AWSによってマネージされ、スケーラビリティやキャパシティ、セキュリティの⼼配

が不要⎻ ⾮常にコスト効率化が⾼く、多くの場合コスト減が⾒込める

✤ アプリ開発に多くのメリット⎻ バックエンド側のコードとサーバが減るため開発運⽤コストを最⼩化⎻ トライ&エラーが容易なため、フィードバックループを速く回せるようになる

✤ 開発者がビジネスにフォーカスできる

Page 25: Serverless Revolution

You donʼt do that, we do that.

Page 26: Serverless Revolution

All you need is code.

Page 27: Serverless Revolution

Serverless is a paradigm shift

Page 28: Serverless Revolution

Serverless is a paradigm shiftインフラだけでなくアプリ開発やオペレーションを含めたパラダイムシフト

Page 29: Serverless Revolution

誰にとって嬉しいのか?✤ フロントエンドエンジニア

⎻ サーバサイドがわからないフロントエンドエンジニアだけでもサービスを実現⎻ シングルページアプリケーションやモバイルのバックエンドAPIとして

✤ サーバサイドエンジニア⎻ サーバサイドの⼀部をアウトソース⎻ よりコアな機能・ロジックそのものに集中

✤ インフラエンジニア⎻ イベントドリブンな運⽤を簡単に⎻ サービスとサービスを繋ぎあわせるだけのシステム構築

Page 30: Serverless Revolution

AWSのサーバレスオファリング

AWS LambdaAmazon API Gateway

Amazon DynamoDB

Amazon Kinesis Amazon Mobile Analytics

Amazon SNS

Amazon Cognito

AWS IoT

Amazon S3 Amazon Elastic Transcoder

AWS CloudWatch

AWS CloudTrail

Amazon SESAmazon Machine Learning

Amazon Route53Amazon SQS

Page 31: Serverless Revolution

多様なフルマネージドサービス✤ Amazon DynamoDB、Amazon Kinesisに代表される⾮常にfunctional

なサービス

✤ ⾼い可⽤性とスケーラビリティ⎻ ⼩規模から⼤規模までシームレスにスケール

✤ No Middlewares⎻ ミドルウェアから、よりSpecificなアプリケーション機能そのものまでを提供

Page 32: Serverless Revolution

Computeの進化 - 仮想化からクラウドへ

InfrastructureInstances

Applicationcode

Page 33: Serverless Revolution

Computeの進化 – コンテナ

InfrastructureInstances

ApplicationcodeContainers

Page 34: Serverless Revolution

Computeの進化– ServerlessApplicationcode

Page 35: Serverless Revolution

AWSのComputeサービス

Amazon EC2 Amazon ECS AWS Lambda

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

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

Page 36: Serverless Revolution

AWSのComputeサービス

Amazon EC2 Amazon ECS AWS Lambda

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

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

Page 37: Serverless Revolution

すべてのデベロッパーをハッピーに

AWS Lambda

⾼いコスト効率インフラ管理不要

使った分だけ100ms単位で課⾦

⾃分のコードを実⾏

標準的な⾔語のコードを実⾏ビジネスロジックにフォーカス

Page 38: Serverless Revolution

サーバレスなアプリケーションモデルイベントソース ファンクション サービスなど

Node.jsJavaPython

λイベント

S3にオブジェクトが作られるKinesisにストリームデータが保存されるHTTPSによるリクエストetc...

Page 39: Serverless Revolution

Amazon S3 Amazon DynamoDB

Amazon Kinesis

AWS CloudFormation

AWS CloudTrail

Amazon CloudWatch

Amazon SNSAmazonSES

AmazonAPI Gateway

Amazon Cognito

AWSIoT

AmazonAlexa

Cron events

DATASTORES ENDPOINTS

REPOSITORIES EVENT/MESSAGESERVICES

AWS Lambdaと連携するイベントソース

Amazon Config

Amazon Aurora

New!

Page 40: Serverless Revolution

AWS Lambdaを利⽤する場合のユースケース

Data Processing Control SystemsBackends

Page 41: Serverless Revolution

AWS Lambdaを利⽤する場合のユースケース

データの変更、システム状態の遷移もしくはユーザによるアクションといったものに対応したコードの実⾏

レスポンスのカスタマイズとAWS内の状態やデータ変更に対するワークフローのレスポンス

Web、モバイル、IoTや外部APIへのリクエストを扱うバックエンドロジックの実⾏

Data Processing

Backends

Control Systems

Page 42: Serverless Revolution

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

元画像 サムネイル画像

1

2

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

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

るAWS Lambda

Page 43: Serverless Revolution

AWS 導⼊事例:株式会社スクウェア・エニックス✤ ドラゴンクエストⅩ✤ ゲーム内で写真撮影し、Lambdaでサムネイル画像作成や

コピーライトの追加加⼯✤ 処理時間が数時間→10 数秒で完了✤ 同じ処理をオンプレミスと⽐べ 20 分の 1 程度まで削減

“AWS Lambda の効果は劇的でした。今まで数時間かかっていた画像処理がわずか 10 数秒で完了しました。コストに関しても、同じ処理をオンプレミスで⾏う場合と⽐べ 20 分の 1 程度にまで削減することができました。 AWS Lambda にはそもそもリソースが⾜りなくなるという発想がありません。これはオンプレミスでは真似のできないものです。” 縣 ⼤輔⽒

第 6 ビジネス・ディビジョン テクニカルディレクター

Page 44: Serverless Revolution

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

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

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

Page 45: Serverless Revolution

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

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

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

3.DWHを提供するAmazon Redshift

Page 46: Serverless Revolution

Alexaアプリ + Slack = Serverless bot!

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

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

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

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

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

Slack

Page 47: Serverless Revolution

Real-Time Message Handling

New message published

Amazon SNS AWS Lambda

Amazon SNS

Amazon Kinesis

Page 48: Serverless Revolution

Audit CloudTrail Activity

AWS Lambda

Amazon S3Amazon CloudTrail

Amazon SNS

AWS IAM

Page 49: Serverless Revolution

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 50: Serverless Revolution

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 51: Serverless Revolution

Deploy Lambda Functions

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

AWS Lambda

Amazon SNS

GitHub Repo

lambda createFn ()

Page 52: Serverless Revolution

Lambdaにおけるファンクション✤ 単体でデプロイ・実⾏が可能

✤ 各ファンクションは独⽴

✤ ファンクションごとで⾔語やデータストアを選べる

Page 53: Serverless Revolution

Lambdaにおけるファンクション✤ 単体でデプロイ・実⾏が可能

✤ 各ファンクションは独⽴

✤ ファンクションごとで⾔語やデータストアを選べる

⾃然とMicroservicesに近づいていく

Page 54: Serverless Revolution

サーバレスなMicroservices

Page 55: Serverless Revolution

サーバレスなMicroservicesMicroservice1

Microservice2

Microservice3

Page 56: Serverless Revolution

Amazon API Gateway+

AWS Lambda

Page 57: Serverless Revolution

Amazon API Gateway+

AWS Lambda=

The easiest wayto build Microservices

Page 58: Serverless Revolution

Amazon API Gateway

統⼀化されたAPIの作成と管理

APIの定義とホスティング

クラウド上のリソースへのアクセス認証

AWSのAuthを活⽤

バックエンド保護のためのDDoS対策やスロットリング

ネットワークトラフィックの管理

Page 59: Serverless Revolution

Amazon API Gateway複数バージョンとステージ

Cognito User Poolsと連携して簡単に認証を追加

リクエスト時におけるAWS SigV4の利⽤

リクエストのスロットリングとモニタリング

バックエンドとしてAWS Lambdaが利⽤可能

Page 60: Serverless Revolution

APIのコールフロー

Internet

Mobile apps

Websites

Services

AWS Lambda functions

AWS

API Gateway cache

Endpoints on Amazon

EC2/AWS Elastic

Beanstalk

Any other publicly accessible endpoint

Amazon CloudWatch monitoring

API Gateway

Page 61: Serverless Revolution

岡三オンライン証券株式会社✤ オンライン取引のデモプラットフォーム✤ 実際の株式市場のデータを使った注⽂処理をAmazon API Gatewayと

AWS Lambdaで提供✤ コストを7分の1に削減

“AWS のクラウドネイティブアーキテクチャーにより運⽤⾯での作業はほとんど必要なくなり、コストも従来型のアーキテクチャーと⽐較して、7 分の 1 程度にまで削減することができています。今のところセキュリティ、実績、コスト、機能の⾯で AWS に勝るクラウドベンダーはありません。 ” 野崎 保 ⽒

事業戦略担当部⻑

Page 62: Serverless Revolution

サーバレスのエコシステム

Serverless FrameworkClaudia.jsAPEXPythonServerless Microframework

Build, CI/CD

ロギングとモニタリング 開発とデプロイ

sumologic

Page 63: Serverless Revolution

Python Serverless Microframework for AWS✤ API GatewayとAWS Lambdaを使ったAPIの作成とデプロイを簡単に

✤ Chaliceというコマンドライン

✤ コードの⾃動⽣成

✤ IAM Policyの⾃動⽣成

✤ Developer Preview

github.com/awslabs/chalice

$ chalice new-project helloworld && cd helloworld$ cat app.py

from chalice import Chalice

app = Chalice(app_name="helloworld")

@app.route("/")def index():

return {"hello": "world"}

$ chalice deploy...Your application is available at: https://endpoint/dev$ curl https://endpoint/dev{"hello": "world"}

Page 64: Serverless Revolution

DEMO: Hello World API with Chalice

Page 65: Serverless Revolution

最後に

サーバレスは銀の弾丸ではない

Page 66: Serverless Revolution

Considerations for Serverless✤ 全てをサーバレスにする必要はない

⎻ サーバレスにすることが⽬的ではない⎻ Dockerによるコンテナとの使い分けを意識する

✤ 単純にサーバの代わりとは考えない⎻ 従来の箱としてのサーバとは別物。同じように扱うとすると失敗する

✤ コストへの過剰な期待はやめる⎻ コストの効率がいいのは事実だが、絶対的にコストが安いというわけではない⎻ コストだけに着⽬すると思ったような効果は得られず、失敗する

Page 67: Serverless Revolution

Considerations for Serverless✤ 各サービスの特性を理解し、活かす

⎻ まずはやってみる、 やらなければ経験値はたまらない

✤ Design for failureの考え⽅の重要性が増す⎻ サービスを組み合わせて使うため、1コンポーネントのダウンがサービス全体

の停⽌を伴わないようにシステム全体を設計する⎻ Fail Fast、Circuit Breaker、Graceful Degradationなど

Page 68: Serverless Revolution

忘れてはいけないのは⽬的

Page 69: Serverless Revolution

価値を届けること

Page 70: Serverless Revolution

Join the serverless revolution!

Page 71: Serverless Revolution

AWS re:Invent 2016 Serverless Follow Up✤ AWS re:InventのServerlessにフォーカスしたフォローアップイベント

⎻ 12/7(⽔)19時〜⎻ アマゾンジャパン(とサテライト会場)

✤ 登録は以下のURLからhttp://aws-serverless.connpass.com/event/42950/

Page 72: Serverless Revolution

AWS Black Belt Online Seminar✤ 11⽉の配信予定

⎻ 11⽉9⽇(⽔) 18:00-19:00 Amazon EC2 Spot Instances⎻ 11⽉16⽇(⽔) 18:00-19:00 Amazon API Gateway⎻ 11⽉22⽇(⽕) 12:00-13:00 HPC 分野での AWS 活⽤⎻ 11⽉24⽇(⽊) 18:00-19:00 AWS CloudFormation⎻ 11⽉29⽇(⽕) 12:00-13:00 AWS 上でのログ管理

✤ 申し込みサイトhttps://aws.amazon.com/jp/about-aws/events/webinars/(もしくは「AWS イベント」で検索)

Page 73: Serverless Revolution

Part1http://qiita.com/advent-calendar/2016/serverlessPart2http://qiita.com/advent-calendar/2016/serverless2

Page 74: Serverless Revolution

Appendix

Page 75: Serverless Revolution

Reference architecture: IoT back end using AWS Lambda and Amazon Kinesishttps://s3.amazonaws.com/awslambda-reference-architectures/iot-backend/lambda-refarch-iotbackend.pdfhttps://github.com/awslabs/lambda-refarch-iotbackend

Page 76: Serverless Revolution

Reference architecture: Mobile back end using AWS Lambda and Amazon API Gatewayhttps://s3.amazonaws.com/awslambda-reference-architectures/mobile-backend/lambda-refarch-mobilebackend.pdfhttps://github.com/awslabs/lambda-refarch-mobilebackend

Page 77: Serverless Revolution

Reference architecture: Web applications with AWS Lambdahttps://s3.amazonaws.com/awslambda-reference-architectures/web-app/lambda-refarch-webapp.pdfhttps://github.com/awslabs/lambda-refarch-webapp

Page 78: Serverless Revolution

Reference architecture: Real-time file processing using AWS Lambdahttps://s3.amazonaws.com/awslambda-reference-architectures/file-processing/lambda-refarch-fileprocessing.pdfhttps://github.com/awslabs/lambda-refarch-fileprocessing

Page 79: Serverless Revolution

Reference architecture: Real-time stream processing using AWS Lambda and Amazon Kinesishttps://s3.amazonaws.com/awslambda-reference-architectures/stream-processing/lambda-refarch-streamprocessing.pdfhttps://github.com/awslabs/lambda-refarch-streamprocessing

Page 80: Serverless Revolution