SlideShare a Scribd company logo
Serverless Revolution
Keisuke Nishitani (@Keisuke69)
Amazon Web Services Japan K.K.
Nov 11, 2016
Profile
Keisuke Nishitani
Specialist Solutions Architect, Amazon Web Service Japan K.K
@Keisuke69 Keisuke69
✤ スペシャリストSA
- Serverless
- Mobile
- DevOps
- Application Service
✤ RESTおじさん
✤ 餃⼦の王将エヴァンジェリスト(⾃称)
✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました
✤ ⼩説⼤好き、マンガ⼤好き、空想好き
✤ ブログ: http://keisuke69.hatenablog.jp/
Keisuke69 Keisuke69Keisuke69x
サーバレス流⾏ってますよね
なぜサーバレスなのか
⼀般的な3-tier Webアプリ
プレゼンテーション層 ロジック層 データストア層
Webサーバ/アプリサーバブラウザ/モバイル データベース
AWSで作る場合
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
Developerの⽬的とは?
価値を届けること
価値を届けること
価値=差別化
Photo credit: Ajith (അജി$്) via Visualhunt / CC BY-SA
価値を⽣み出すビジネスロジックに集中したい!
Photo credit: Leo Hidalgo (@yompyz) via VisualHunt / CC BY
でもなかなかそうは⾏かない現実
価値を⽣み出すビジネスロジックに集中したい!
サーバを所有すると
✤ サーバのセットアップ
⎻ OSのセットアップとネットワークなどの設定
⎻ ランタイムやミドルウェアのセットアップ
✤ キャパシティやスケーラビリティ管理
✤ 耐障害性を確保するための冗⻑化
⎻ 複数台構成
✤ セキュリティパッチの適⽤
アプリケーションの観点でも
✤ モノリシック
⎻ デプロイが⼀⼤イベント
⎻ 重厚⻑⼤なパイプライン
✤ 差別化には繋がらない機能の実装
⎻ スロットリング
⎻ 認証・認可
ビジネスロジックに集中できない!
Photo credit: kizzzbeth via Visual hunt / CC BY
⼀般的な3-tier Webアプリ
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
⼀般的な3-tier Webアプリ
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
サーバ
⼀般的な3-tier Webアプリ
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
サーバ
サーバ
⼀般的な3-tier Webアプリ
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
サーバ
サーバ
サーバ
⼀般的な3-tier Webアプリ
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によるマネージ
(フルマネージド)
Serverless = No servers to manage and scale
サーバレスのメリット
✤ サーバレスはバックエンドのアウトソース
⎻ サーバサイドやインフラがわからないフロントエンジニアだけでシステムを実現する
ことも可能
⎻ ⾃分の書いたコードをすぐ試せる、そのままプロダクションに持っていける
⎻ AWSによってマネージされ、スケーラビリティやキャパシティ、セキュリティの⼼配
が不要
⎻ ⾮常にコスト効率化が⾼く、多くの場合コスト減が⾒込める
✤ アプリ開発に多くのメリット
⎻ バックエンド側のコードとサーバが減るため開発運⽤コストを最⼩化
⎻ トライ&エラーが容易なため、フィードバックループを速く回せるようになる
✤ 開発者がビジネスにフォーカスできる
You donʼt do that, we do that.
All you need is code.
Serverless is a paradigm shift
Serverless is a paradigm shift
インフラだけでなくアプリ開発やオペレーションを含めたパラダイムシフト
誰にとって嬉しいのか?
✤ フロントエンドエンジニア
⎻ サーバサイドがわからないフロントエンドエンジニアだけでもサービスを実現
⎻ シングルページアプリケーションやモバイルのバックエンドAPIとして
✤ サーバサイドエンジニア
⎻ サーバサイドの⼀部をアウトソース
⎻ よりコアな機能・ロジックそのものに集中
✤ インフラエンジニア
⎻ イベントドリブンな運⽤を簡単に
⎻ サービスとサービスを繋ぎあわせるだけのシステム構築
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
多様なフルマネージドサービス
✤ Amazon DynamoDB、Amazon Kinesisに代表される⾮常にfunctional
なサービス
✤ ⾼い可⽤性とスケーラビリティ
⎻ ⼩規模から⼤規模までシームレスにスケール
✤ No Middlewares
⎻ ミドルウェアから、よりSpecificなアプリケーション機能そのものまでを提供
Computeの進化 - 仮想化からクラウドへ
InfrastructureInstances
Application	code
Computeの進化 – コンテナ
InfrastructureInstances
Application	codeContainers
Computeの進化– Serverless
Application	code
AWSのComputeサービス
Amazon EC2 Amazon ECS AWS Lambda
スケールの単位 インスタンス アプリケーション ファンクション
抽象化 ハードウェア OS ランタイム
AWSのComputeサービス
Amazon EC2 Amazon ECS AWS Lambda
スケールの単位 インスタンス アプリケーション ファンクション
抽象化 ハードウェア OS ランタイム
すべてのデベロッパーをハッピーに
AWS Lambda
⾼いコスト効率インフラ管理不要
使った分だけ100ms単位で課⾦
⾃分のコードを実⾏
標準的な⾔語のコードを実⾏ビジネスロジックにフォーカス
サーバレスなアプリケーションモデル
イベントソース ファンクション サービスなど
Node.js
Java
Python
λ
イベント
S3にオブジェクトが作られる
Kinesisにストリームデータが保存される
HTTPSによるリクエスト
etc...
Amazon S3 Amazon
DynamoDB
Amazon
Kinesis
AWS
CloudFormation
AWS
CloudTrail
Amazon
CloudWatch
Amazon SNSAmazon
SES
Amazon
API Gateway
Amazon
Cognito
AWS
IoT
Amazon
Alexa
Cron events
DATA	STORES ENDPOINTS
REPOSITORIES EVENT/MESSAGE	SERVICES
AWS Lambdaと連携するイベントソース
Amazon
Config
Amazon
Aurora
New!
AWS Lambdaを利⽤する場合のユースケース
Data Processing Control SystemsBackends
AWS Lambdaを利⽤する場合のユースケース
データの変更、システム状態の遷移もしくはユーザによ
るアクションといったものに対応したコードの実⾏
レスポンスのカスタマイズとAWS内の状態やデータ変更
に対するワークフローのレスポンス
Web、モバイル、IoTや外部APIへのリクエストを扱う
バックエンドロジックの実⾏
Data Processing
Backends
Control Systems
Real-time File Processing
✤ イメージのサムネイル⽣成やビデオの変換
✤ ドキュメントのメタデータをインデックス化
✤ ログの処理
✤ メディアコンテンツのバリデーション
元画像 サムネイル画
像
1
2
3
1.ファイルストレージを
提供するAmazon S3
2.処理ロジックを提供す
るAWS Lambda
AWS 導⼊事例:株式会社スクウェア・エニックス
✤ ドラゴンクエストⅩ
✤ ゲーム内で写真撮影し、Lambdaでサムネイル画像作成や
コピーライトの追加加⼯
✤ 処理時間が数時間→10 数秒で完了
✤ 同じ処理をオンプレミスと⽐べ 20 分の 1 程度まで削減
“AWS Lambda の効果は劇的でした。今まで数時間かかっていた画像処理がわ
ずか 10 数秒で完了しました。コストに関しても、同じ処理をオンプレミスで
⾏う場合と⽐べ 20 分の 1 程度にまで削減することができました。 AWS
Lambda にはそもそもリソースが⾜りなくなるという発想がありません。これ
はオンプレミスでは真似のできないものです。”
縣 ⼤輔⽒
第 6 ビジネス・ディビジョン テクニカルディレクター
Real-time Stream Processing
✤ クライアントのアクティビティトラッキング
✤ クリックストリーム分析
✤ メトリクス⽣成
✤ データクレンジング
✤ ログフィルタリング
✤ インデクシング
✤ デバイスデータのテレメトリと測定
1. ストリームデータの保存を提供
するAmazon Kinesis
2. データ処理アプリケーションと
してのAWS Lambda
Extract, Transform and Load
✤ データバリデーション
✤ バックアップ
✤ 分析
1. NoSQLデータストアを提供する
Amazon DynamoDB
2. 変換およびロード処理を実⾏する
Amazon Lambda
3. DWHを提供するAmazon Redshift
Alexaアプリ + Slack = Serverless bot!
Alexa、"今からデモを
送る"をSlackで送信し
て
スケジュールされたポーリングにより
メッセージを取得
Kevinから、
"成功を祈る!"
(Slack APIを使って)
メッセージをアップロード
チーム
(チャネルユーザー)
Slack
Real-Time Message Handling
New message
published
Amazon SNS AWS Lambda
Amazon SNS
Amazon Kinesis
Audit CloudTrail Activity
AWS
Lambda
Amazon S3Amazon CloudTrail
Amazon SNS
AWS IAM
Automated Infrastructure Management
AWS
Lambda
Amazon
SNS
Amazon
CloudWatch Alarm
ec2
runInstance
ecs
startTask
beanstalk
updateApp
kinesis
splitShard
Any API call
https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/
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
Deploy Lambda Functions
https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/
AWS
Lambda
Amazon
SNS
GitHub Repo
lambda
createFn ()
Lambdaにおけるファンクション
✤ 単体でデプロイ・実⾏が可能
✤ 各ファンクションは独⽴
✤ ファンクションごとで⾔語やデータストアを選べる
Lambdaにおけるファンクション
✤ 単体でデプロイ・実⾏が可能
✤ 各ファンクションは独⽴
✤ ファンクションごとで⾔語やデータストアを選べる
⾃然とMicroservicesに近づいていく
サーバレスなMicroservices
サーバレスなMicroservices
Microservice1
Microservice2
Microservice3
Amazon API Gateway
+
AWS Lambda
Amazon API Gateway
+
AWS Lambda
=
The easiest way
to build Microservices
Amazon API Gateway
統⼀化されたAPIの作成と管理
APIの定義とホスティング
クラウド上のリソースへの
アクセス認証
AWSのAuthを活⽤
バックエンド保護のための
DDoS対策やスロットリング
ネットワークトラフィックの管理
Amazon API Gateway
複数バージョンとステージ
Cognito User Poolsと連携して簡単に認証を追加
リクエスト時におけるAWS SigV4の利⽤
リクエストのスロットリングとモニタリング
バックエンドとしてAWS Lambdaが利⽤可能
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
岡三オンライン証券株式会社
✤ オンライン取引のデモプラットフォーム
✤ 実際の株式市場のデータを使った注⽂処理をAmazon API Gatewayと
AWS Lambdaで提供
✤ コストを7分の1に削減
“AWS のクラウドネイティブアーキテクチャーにより運⽤⾯での作業はほとん
ど必要なくなり、コストも従来型のアーキテクチャーと⽐較して、7 分の 1 程
度にまで削減することができています。
今のところセキュリティ、実績、コスト、機能の⾯で AWS に勝るクラウドベ
ンダーはありません。 ”
野崎 保 ⽒
事業戦略担当部⻑
サーバレスのエコシステム
Serverless Framework
Claudia.js
APEX
Python	Serverless Microframework
Build, CI/CD
ロギングとモニタリング 開発とデプロイ
sumologic
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"}
DEMO: Hello World API with Chalice
最後に
サーバレスは銀の弾丸ではない
Considerations for Serverless
✤ 全てをサーバレスにする必要はない
⎻ サーバレスにすることが⽬的ではない
⎻ Dockerによるコンテナとの使い分けを意識する
✤ 単純にサーバの代わりとは考えない
⎻ 従来の箱としてのサーバとは別物。同じように扱うとすると失敗する
✤ コストへの過剰な期待はやめる
⎻ コストの効率がいいのは事実だが、絶対的にコストが安いというわけではない
⎻ コストだけに着⽬すると思ったような効果は得られず、失敗する
Considerations for Serverless
✤ 各サービスの特性を理解し、活かす
⎻ まずはやってみる、 やらなければ経験値はたまらない
✤ Design for failureの考え⽅の重要性が増す
⎻ サービスを組み合わせて使うため、1コンポーネントのダウンがサービス全体
の停⽌を伴わないようにシステム全体を設計する
⎻ Fail Fast、Circuit Breaker、Graceful Degradationなど
忘れてはいけないのは⽬的
価値を届けること
Join the serverless revolution!
AWS re:Invent 2016 Serverless Follow Up
✤ AWS re:InventのServerlessにフォーカスしたフォローアップイベント
⎻ 12/7(⽔)19時〜
⎻ アマゾンジャパン(とサテライト会場)
✤ 登録は以下のURLから
http://aws-serverless.connpass.com/event/42950/
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 イベント」で検索)
Part1
http://qiita.com/advent-calendar/2016/serverless
Part2
http://qiita.com/advent-calendar/2016/serverless2
Appendix
Reference architecture: IoT back end using AWS
Lambda and Amazon Kinesis
https://s3.amazonaws.com/awslambda-reference-architectures/iot-backend/lambda-refarch-iotbackend.pdf
https://github.com/awslabs/lambda-refarch-iotbackend
Reference architecture: Mobile back end using
AWS Lambda and Amazon API Gateway
https://s3.amazonaws.com/awslambda-reference-architectures/mobile-backend/lambda-refarch-mobilebackend.pdf
https://github.com/awslabs/lambda-refarch-mobilebackend
Reference architecture: Web applications with
AWS Lambda
https://s3.amazonaws.com/awslambda-reference-architectures/web-app/lambda-refarch-webapp.pdf
https://github.com/awslabs/lambda-refarch-webapp
Reference architecture: Real-time file processing
using AWS Lambda
https://s3.amazonaws.com/awslambda-reference-architectures/file-processing/lambda-refarch-fileprocessing.pdf
https://github.com/awslabs/lambda-refarch-fileprocessing
Reference architecture: Real-time stream processing
using AWS Lambda and Amazon Kinesis
https://s3.amazonaws.com/awslambda-reference-architectures/stream-processing/lambda-refarch-streamprocessing.pdf
https://github.com/awslabs/lambda-refarch-streamprocessing
Serverless Revolution

More Related Content

Serverless Revolution