77
西谷 圭介 / Keisuke Nishitani (@Keisuke69) Specialist SA, Amazon Web Services Japan KK Nov 3 rd , 2017 © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Growing up serverless

Growing up serverless

Embed Size (px)

Citation preview

Page 1: Growing up serverless

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

西谷圭介 / Keisuke Nishitani (@Keisuke69)

Specialist SA, Amazon Web Services Japan KK

Nov 3rd, 2017

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Growing up serverless

Page 2: Growing up serverless

Who am I

Keisuke NishitaniSpecialist Solutions Architect, ServerlessAmazon Web Service Japan K.K

@Keisuke69 Keisuke69 Keisuke69 Keisuke69Keisuke69x

Page 3: Growing up serverless

Agenda

Page 4: Growing up serverless

サーバーレスとは?

サーバーを気にすることなく、アプリケーションを構築し実行

Page 5: Growing up serverless

コンピューティングの進化

データセンタ内の物理サーバ

データセンタ内の仮想サーバ

クラウド上の仮想サーバ

Page 6: Growing up serverless

コンピューティングの進化

データセンタ内の

物理サーバ

データセンタ内の

仮想サーバ• 高い使用率

• より速いプロビジョニング速度

• 改善されたアップタイム

• ディザスターリカバリ

• ハードウェアの独立性

• 運用コストと投資コストのトレード

• よりスケール

• 弾力性のあるリソース

• より速いスピードと俊敏性

• メンテナンスの削減

• より良い可用性と耐障害性

クラウド上の仮想サーバー

Page 7: Growing up serverless

未だ残る制限

Physical servers

data centers

Virtual servers

data centers

• 投資コストと運用コストのトレード

• よりスケール

• 弾力性のあるリソース

• より速いスピードと俊敏性

• メンテナンスの削減

• より良い可用性と耐障害性

• 仮想マシンの管理が必要

• キャパシティや利用率の管理が必要

• ワークロードのサイズを変更が必要

• 可用性や耐障害性を管理する必要

• 断続的なジョブを実行するには高コスト

クラウド上の仮想サーバー

Page 8: Growing up serverless

サーバーレスへの進化

サーバーレス

クラウド上の

仮想サーバー

データセンター内の物理サーバー

データセンター内の仮想サーバー

Page 9: Growing up serverless

サーバーは管理しないほうが簡単

こういった責任からの開放

プロビジョニングと利用

可用性と耐障害性

スケーリング

運用と管理

Page 10: Growing up serverless

サーバーレスはよりセキュア

• パッチが適用されていないサーバーは存在しない

• SSH不要

• すべてのリクエストは認可され、監査可能

• ファンクションは短命

Page 11: Growing up serverless

イベントドリブン 連続したスケーリング 利用量に応じた支払い

オンデマンドの提供、アイドル時の支払い一切なし

Page 12: Growing up serverless

コンピュートの選択肢

デプロイ可能な単位のサイズ

ファンクションAppコンテナ仮想マシン

IaaS Docker

PaaS責任

クラウドプロバイダ

お客様

シェアード

Function as a Service (FaaS)

Page 13: Growing up serverless

コンピュートの選択肢

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

Function as a Service (FaaS)

責任

デプロイ可能な単位のサイズ

ファンクションAppコンテナ仮想マシン

クラウドプロバイダ

お客様

シェアード

Page 14: Growing up serverless

FaaSはオペレーションの責務が異なる

FaaS

FaaS

Function as a Service (FaaS)

FaaS

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

デプロイ可能な単位のサイズ

ファンクションAppコンテナ仮想マシン

クラウドプロバイダ

お客様

シェアード

Page 15: Growing up serverless

サーバーレスは管理業務がないことを意味する

FaaS

FaaS

Function as a Service (FaaS)

Serverless

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

デプロイ可能な単位のサイズ

ファンクションAppコンテナ仮想マシン

クラウドプロバイダ

お客様

シェアード

Page 16: Growing up serverless

サーバーレスは管理業務がないことを意味する

FaaS

FaaS

Function as a Service (FaaS)

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

デプロイ可能な単位のサイズ

ファンクションAppコンテナ仮想マシン

クラウドプロバイダ

お客様

シェアード

Page 17: Growing up serverless

サーバーレスアプリケーションのビルディングブロック

AWS Lambda Amazon DynamoDB

Amazon SNS

Amazon API GatewayAmazon SQS

Amazon Kinesis

Amazon S3

Orchestration and State Management

API Proxy Messaging and Queues Analytics

Monitoring and Debugging

Compute Storage Database

AWS X-RayAWS Step Functions

Edge Compute

AWS Greengrass

Lambda@Edge

Page 18: Growing up serverless

サーバーレスアプリケーションのビルディングブロック

Orchestration and State Management

AWS Step Functions

• Lambdaファンクションとその他のアクティビティを並列もしくはシリアルに実行

• バリア同期とリトライを実行

• サードパーティのシステムや既存ワークフローとの簡単なインテグレーション

Page 19: Growing up serverless

サーバーレスはデリバリを変える

マーケットに対する

スピードアップ

イノベーションのためだけの時間

デベロッパーの生産性向上 運用の複雑さを解消

Page 20: Growing up serverless

サーバーレスジャーニー

Page 21: Growing up serverless

サーバーレスによってイノベーションしたカスタマ

Page 22: Growing up serverless

事例:株式会社スクウェア・エニックス

• 1分あたり200〜300イメージを処理

• ピークで1分あたり6000イメージを処理

• 処理時間が数時間から10 数秒に

• オンプレミスと比べ 20 分の 1

程度までコスト削減

Page 23: Growing up serverless

事例:凸版印刷株式会社

• 商品のライフサイクル管理や真贋判定をすることができる ID 利活用プラットフォーム

• LambdaやAPI Gateway、Cognitoといったサービスを活用することで新事業への初期投資コストを最小限に

https://aws.amazon.com/jp/solutions/case-studies/toppan-printing/

Page 24: Growing up serverless

事例:株式会社日本経済新聞社

• 日経電子版の紙面ビューアー

• 紙面画像のリサイズ、JPEG変換、分割などをLambdaで処理

• 18000 invoke/分を処理

• Amazon EC2での同等な構成と比較すると、コストは10分の1程度

https://aws.amazon.com/jp/solutions/case-studies/nikkei/

Page 25: Growing up serverless

大規模に利用しているエンタープライズ顧客例

• FINRA: 日々の株式取引の検証のために1日あたり5000万件を処理

• Hearst: メディアアナリティクスパイプラインへのデータ取込と処理の時間を97%削減

• Vevo: 通常時の80倍のスパイクトラフィックを処理

• Expedia: 1月あたり12億リクエストをLambdaで処理

Page 26: Growing up serverless

サーバーレスのコンプライアンス

ISO PCI SOC HIPAA

API Gateway ◯ ◯ ◯

Lambda ◯ ◯ ◯

Step Functions

Cognito ◯ ◯

DynamoDB ◯ ◯ ◯ ◯

Kinesis ◯ ◯

S3 ◯ ◯ ◯

https://aws.amazon.com/jp/compliance/services-in-scope/

Page 27: Growing up serverless

Chatbots

• チャットボットのロジック

• Amazon Echo用Alexa Skill

ユースケース

Web

アプリケーション

• 静的Webサイト

• 動的Webアプリ

• FlaskとExpress

のためのパッケージ

Backends

• アプリとサービス

• モバイル

• IoT

</></>

Media & Log

Processing

• リアルタイムデータ

• ストリーミングデータ

Big Data

• MapReduce

• バッチ

Page 28: Growing up serverless

Big Data

• MapReduce

• Batch

Big data

Map Phase Reduce PhaseInputs Results

Page 29: Growing up serverless

サーバーレスのMap / Reduceフレームワーク

https://github.com/awslabs/lambda-refarch-mapreduce

Page 30: Growing up serverless

PyWren: Lambda用大規模データフレームワーク

• Lambdaを使ったオープンソースのMapReduceフレームワーク

• 25 TFLOPS

• S3に対して読み取り60GB/秒、書き込み50GB/秒

https://github.com/pywren/pywren

http://pywren.io/

http://ericjonas.com/

Page 31: Growing up serverless

サーバーレスはモダンなアプリケーションのコアコンポーネント

Page 32: Growing up serverless

EVENTSエンドポイントへのリクエストリソースの状態変化データの状態変化

FUNCTIONS

DOWNSTREAM

考え方の転換– どのようにアプリケーションを構築するか

イベントとAPIを通じたコミュニケーション

ステートレスでエフェメラルな関数

データ、キャッシュおよびステートとロジックの分離

Page 33: Growing up serverless

• 既存アプリの分解をどうするか

• どのようにコンポーネント群が通信するか?

• サービス境界はどうするか?

• 適切な粒度は?

• サーバー上のローカルにあるステート/ストレージをどうするか

考慮点

Page 34: Growing up serverless

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to

Functions

Page 35: Growing up serverless

Microservices

to

Amazon API

Gateway

Amazon

SQS

Functions

Page 36: Growing up serverless

Microservices

to

Amazon API

Gateway

Amazon

Kinesis

Amazon

DynamoDB

Functions

Page 37: Growing up serverless

• ご要望の多かったCloudFrontを外せるようになりました• Reginal とEdge Optimizedの2種類に

• 同一リージョンのEC2などからのレイテンシ改善

• IP制限、WAFなどのためにCloudFrontを2段にすることが不要に• ご自身のCloudFrontディストリビューションを利用することも可能

New! API GatewayがReginal Endpointをサポート

Page 38: Growing up serverless

サーバーレスプラットフォームの構築

Page 39: Growing up serverless

アプリケーションモデリングフレームワーク

モノリシックアプリケーション

マイクロサービス

Page 40: Growing up serverless

多くのファンクションを持つアプリがあった場合、何が起きるか?

サーバーレスアプリケーションの作成

Page 41: Growing up serverless

AWS SAM

Page 42: Growing up serverless

AWS Serverless Application Model (SAM)

AWS上のサーバーレスアプリケーションを表現するための標準モデル

ファンクション、API、イベントソースとデータストア

サーバーレスアプリケーションのために、デプロイと管理を簡素化

Page 43: Growing up serverless

AWS Serverless Application Model (SAM)

• AWS CloudFormationによるネイティブサポート

• あらゆるファンクションをSAMテンプレートとしてエクスポート

• AWS CLIを使ってSAMテンプレートをパッケージし、デプロイ

• コミュニティ拡張のためにApache2.0によるオープンな仕様

Page 44: Growing up serverless

DevOpsについては…?

Page 45: Growing up serverless

Source Build Test Deploy Monitor

Source Build Test Deploy Monitor

サーバーベースのDevOps

Code

Fleet

Page 46: Growing up serverless

Source Build Test Deploy Monitor

サーバーレスなDevOps

Code

Source Build Test Deploy Monitor

Fleet

Page 47: Growing up serverless

サーバーレスアプリケーションのCI/CD

</>

AWS CodePipeline + SAM

GitHub

Amazon S3

AWS CodeCommit

AWS CodeBuild AWS CodeBuild

Third-party tools

AWS CloudFormation

Commit Build TestDeploy

to Prod

Page 48: Growing up serverless

AWS CodeStar

Page 49: Growing up serverless

サーバーレスアプリケーションのトラブルシューティング

複数のファンクションやサービスからなる

分散アプリケーションをどのようにデバッグするか?

ファンクションがどのように実行されているか、

動作しているかについての洞察をどのように得るか?

Page 50: Growing up serverless

AWS X-Ray

• 本番環境の分散アプリケーションに対する分析とデバッグ

• アプリケーションのサービスコールグラフを可視化

• パフォーマンスボトルネックとエラーの特定

• サービス特有の問題を特定

• アプリのユーザに対する問題の影響の特定

• ファンクション実行をトレース

Page 51: Growing up serverless

X-Rayの使い方

リクエストのトレース トレースの記録 サービスマップの表示 問題の分析

Page 52: Growing up serverless

Example

Page 53: Growing up serverless

Example

Page 54: Growing up serverless

Example

Page 55: Growing up serverless

Example

Page 56: Growing up serverless

Example

Page 57: Growing up serverless

Example

Page 58: Growing up serverless

Example

Page 59: Growing up serverless

開発者向けツール

コードの記述

顧客にデプロイ

ビルドとテスト

フィードバックの受け取り

Page 60: Growing up serverless

エコシステム

Page 61: Growing up serverless

Chalice

サーバーレスアプリケーション開発のためのフレームワーク

Serverless JavaContainer

Page 62: Growing up serverless

プレゼンテーション層 ロジック層 データストア層

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

一般的な3-tier Webアプリ

Page 63: Growing up serverless

AWSで作る場合

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイルCDN

(CloudFront)

Page 64: Growing up serverless

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

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

S3CloudFront

Page 65: Growing up serverless

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

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

S3CloudFront

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

Page 66: Growing up serverless

FaaSはマシンの境界からコードを抽象化すること

それなら、別の場所にファンクションを持っていくことも?

Page 67: Growing up serverless

Lambda Everywhere

Page 68: Growing up serverless

Devices: AWS Greengrass

• Lambdaファンクションをデバイスへと拡張

• 低レイテンシ、ニアリアルタイム

Page 69: Growing up serverless

Storage: AWS Snowball Edge

• コンピュートとストレージを内蔵したペタバイトスケールのハイブリッドデバイス

• AWS LambdaのコードをSnowball

Edgeにデプロイ

• 独自の圧縮、マニフェストの生成、セキュリティ監査…

Page 70: Growing up serverless

PoPs: Lambda@Edge

Lambda@EdgeはCloudFrontのエッジロケーションすべてで利用可能

• 低レイテンシ、リクエストとレスポンスのカスタマイズ

• ビューアーとオリジンのイベントをサポート

Page 71: Growing up serverless

CloudFrontがLambda@Edgeのファンクションを呼び出し

Origin

server

End user CloudFront

cache

Viewer response Origin response

Viewer request Origin request

Page 72: Growing up serverless

Lambda@Edgeユースケース

コンテンツのカスタマイズ

来訪者の検証 A/B テスト

Page 73: Growing up serverless

サーバレスはモダンなアプリケーションの基本的なコンポーネント

Page 74: Growing up serverless

AWS re:Invent Serverless reCap

• AWS re:Inventのサーバーレスにフォーカスしたrecap

• ライブストリーミングもあります

• 2017年12月11日(月)19:00〜

• 申し込みはこちらから会場参加: https://aws-serverless.connpass.com/event/67579/

• ストリーミング: https://aws-serverless.connpass.com/event/71179/

Page 75: Growing up serverless

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

AWS Developers Meetup 開催します

• 2017/12/07 夜 @ 目黒 AWS オフィス

• 開発者の方向け、セッション形式のイベント

• 内容のイメージ(予定)• DeveloperのためのライブAWSウォークスルー• ユースケースから見た実装カタログ 〜AWS逆引きリファレンス〜• RESTful APIをChaliceで紐解く 〜Python Serverless Microframework for AWS〜

• Happy Hacking on AWS!

• 申し込みはこちらhttps://pages.awscloud.com/DeveloperMeetup20171207.html

Page 76: Growing up serverless

• 記入したらブースへ• 未公開の日本語版ホワイトペーパーあげます

• AWS Lambda Tシャツあげます

• オンライン版もあります• http://bit.ly/scon17awsj

• サービスチームも来ているのでぜひ要望を

アンケートの回答をお願いします

Page 77: Growing up serverless

Conclusion

Lambda is a fundamental

component of modern

application architectures

It has a place in everything

from data processing to

simple web apps