growing up serverless

Post on 21-Jan-2018

1.229 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 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

Who am I

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

@Keisuke69 Keisuke69 Keisuke69 Keisuke69Keisuke69x

Agenda

サーバーレスとは?

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

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

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

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

クラウド上の仮想サーバ

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

データセンタ内の

物理サーバ

データセンタ内の

仮想サーバ• 高い使用率

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

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

• ディザスターリカバリ

• ハードウェアの独立性

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

• よりスケール

• 弾力性のあるリソース

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

• メンテナンスの削減

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

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

未だ残る制限

Physical servers

data centers

Virtual servers

data centers

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

• よりスケール

• 弾力性のあるリソース

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

• メンテナンスの削減

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

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

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

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

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

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

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

サーバーレスへの進化

サーバーレス

クラウド上の

仮想サーバー

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

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

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

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

プロビジョニングと利用

可用性と耐障害性

スケーリング

運用と管理

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

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

• SSH不要

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

• ファンクションは短命

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

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

コンピュートの選択肢

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

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

IaaS Docker

PaaS責任

クラウドプロバイダ

お客様

シェアード

Function as a Service (FaaS)

コンピュートの選択肢

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

Function as a Service (FaaS)

責任

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

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

クラウドプロバイダ

お客様

シェアード

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

FaaS

FaaS

Function as a Service (FaaS)

FaaS

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

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

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

クラウドプロバイダ

お客様

シェアード

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

FaaS

FaaS

Function as a Service (FaaS)

Serverless

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

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

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

クラウドプロバイダ

お客様

シェアード

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

FaaS

FaaS

Function as a Service (FaaS)

Amazon EC2 Amazon ECS

AWS Elastic

Beanstalk

責任

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

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

クラウドプロバイダ

お客様

シェアード

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

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

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

Orchestration and State Management

AWS Step Functions

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

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

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

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

マーケットに対する

スピードアップ

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

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

サーバーレスジャーニー

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

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

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

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

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

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

程度までコスト削減

事例:凸版印刷株式会社

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

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

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

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

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

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

• 18000 invoke/分を処理

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

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

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

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

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

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

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

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

ISO PCI SOC HIPAA

API Gateway ◯ ◯ ◯

Lambda ◯ ◯ ◯

Step Functions

Cognito ◯ ◯

DynamoDB ◯ ◯ ◯ ◯

Kinesis ◯ ◯

S3 ◯ ◯ ◯

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

Chatbots

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

• Amazon Echo用Alexa Skill

ユースケース

Web

アプリケーション

• 静的Webサイト

• 動的Webアプリ

• FlaskとExpress

のためのパッケージ

Backends

• アプリとサービス

• モバイル

• IoT

</></>

Media & Log

Processing

• リアルタイムデータ

• ストリーミングデータ

Big Data

• MapReduce

• バッチ

Big Data

• MapReduce

• Batch

Big data

Map Phase Reduce PhaseInputs Results

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

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

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

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

• 25 TFLOPS

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

https://github.com/pywren/pywren

http://pywren.io/

http://ericjonas.com/

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

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

FUNCTIONS

DOWNSTREAM

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

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

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

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

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

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

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

• 適切な粒度は?

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

考慮点

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to

Functions

Microservices

to

Amazon API

Gateway

Amazon

SQS

Functions

Microservices

to

Amazon API

Gateway

Amazon

Kinesis

Amazon

DynamoDB

Functions

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

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

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

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

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

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

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

マイクロサービス

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

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

AWS SAM

AWS Serverless Application Model (SAM)

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

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

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

AWS Serverless Application Model (SAM)

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

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

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

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

DevOpsについては…?

Source Build Test Deploy Monitor

Source Build Test Deploy Monitor

サーバーベースのDevOps

Code

Fleet

Source Build Test Deploy Monitor

サーバーレスなDevOps

Code

Source Build Test Deploy Monitor

Fleet

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

</>

AWS CodePipeline + SAM

GitHub

Amazon S3

AWS CodeCommit

AWS CodeBuild AWS CodeBuild

Third-party tools

AWS CloudFormation

Commit Build TestDeploy

to Prod

AWS CodeStar

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

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

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

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

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

AWS X-Ray

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

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

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

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

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

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

X-Rayの使い方

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

Example

Example

Example

Example

Example

Example

Example

開発者向けツール

コードの記述

顧客にデプロイ

ビルドとテスト

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

エコシステム

Chalice

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

Serverless JavaContainer

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

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

一般的な3-tier Webアプリ

AWSで作る場合

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイルCDN

(CloudFront)

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

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

S3CloudFront

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

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

S3CloudFront

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

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

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

Lambda Everywhere

Devices: AWS Greengrass

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

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

Storage: AWS Snowball Edge

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

• AWS LambdaのコードをSnowball

Edgeにデプロイ

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

PoPs: Lambda@Edge

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

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

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

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

Origin

server

End user CloudFront

cache

Viewer response Origin response

Viewer request Origin request

Lambda@Edgeユースケース

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

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

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

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/

© 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

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

• AWS Lambda Tシャツあげます

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

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

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

Conclusion

Lambda is a fundamental

component of modern

application architectures

It has a place in everything

from data processing to

simple web apps

top related