サーバーレスのおさらい
主要サービス、利⽤パターン、事例
アジェンダ
•
サーバーレスとは
-
主要コンポーネントについてのおさらい
•
リソース管理とエラー制御の基本
•
サーバーレスにおけるデータベースの考え⽅
•
パターンで考える
サーバーレスのおさらいと
主要コンポーネント
サーバーレスとは
サーバーがない?
サーバーレスとは
アプリケーションデータ
アプリケーション処理コード
サーバーサイド間通信 暗号化
冗⻑化
プラットフォーム、アプリ実⾏基盤
OS保守、パッチ適⽤
ネットワーク構成
コンピューティングリソース、
ストレージ、物理ネットワーキング
お
客様
Clo
ud
管理⼯数
(⾃動化=⼯数少)
既存移⾏
向き
新規・追加
刷新向き
⾃動管理に伴う
制限・制約
お
客様
コン
テ
ナ
オンプレ
インフラ
サービス
インフラ+
コンテナ
サーバーレス
マネージド/
API Gateway
HTTPS REST
処理ロジック
Lambda
データ管理
DynamoDB
これまでの⽅式との対⽐
Web
サーバー
サーバー
App
サーバー
DB
+
規模の⾒積もり
+
可⽤性設計
+
データ保全の検討
ü
⾃動スケール
ü
設計済みのリトライ
ü
データ信頼性
サーバーレスとは
サーバー管理が不要
(準備、OS保守 etc)
柔軟なスケーリング
(拡張/縮退)
⼗⼆分に考慮された
⾼可⽤性
リソース確保が不要
アイドル時の
$
サーバーの存在を意識しない
アプリケーションの本質 “ロジック開発” に注⼒できる
サーバーレスによる代表的な効果
サーバー管理が不要
(準備、OS保守 etc)
柔軟なスケーリング
(拡張/縮退)
⼗⼆分に考慮された
⾼可⽤性
リソース確保が不要
アイドル時の
$
⾼⽣産性
変更容易性
マネージド
業務注⼒
⾃動リソース管理
マネージド
コスト最適化
スケーラビリティ
(機会損失防⽌)
リアルタイム
(付加価値/機能差別化)
エンジニア
意識改⾰
•
実際の処理負荷に応じて
⾃動で拡張/縮退
•
ユーザーの責任領域を
⼩さくしそこだけに注⼒
1/10
アイドル時間のリソースが
解放され、利⽤費が最適化
9:1
“
開発:保守/運⽤” の作業
⽐率が 1:9 から⼤きく改善
1/3
コード量の減少(従来⽐)
= ⽣産性向上、保守改善
5x
従来より⽣産性が向上
アプリ展開を加速化
お客様の効果例
1
⼈
運⽤を 1 ⼈で楽に実施
機能改善に注⼒可能
2
ヶ⽉
スケール、冗⻑化などの
考慮不要で短期実装可能
1/6
安定した定常稼働により
運⽤の労⼒を⼤幅に短縮
1-2
⽇
簡易な機能追加は短期で
実装・デプロイ可能
サーバーレスアプリケーション
•
利⽤者がやること
ü
アプリケーション設計
ü
ロジック開発/DB設計
ü
監視・エラー制御
•
クラウドがやること
ü
リソース管理
ü
再実⾏処理
ü
ログ管理
ü
サーバー保守
アプリケーションデータ
アプリケーション処理コード
サーバーサイド間通信 暗号化
冗⻑化
プラットフォーム、アプリ実⾏基盤
OS
保守、パッチ適⽤
ネットワーク構成
コンピューティングリソース、
ストレージ、物理ネットワーキング
Clo
ud
マネージド/
サーバーレス
Function as a Service: AWS Lambda
コードを⽤意 → 実⾏時に適切にインフラを確保して処理を実⾏
f(x) = {…}
呼び出し元
処理対象
例・API呼び出し
・データ変更イベント
・ファイル配置イベント…
例・DBアクセス
・ファイル出⼒
・別の処理を呼び出し…
負荷に応じて
処理を多重化
リソース管理
リトライ
ログ出⼒
最新のアナウンス
• VPC Lambda
はもう
アンチパターンでは
なくなります!
サーバーレス: 主要コンポーネント
処理ロジック
認証:
Cognito
外部I/F
REST API:
API Gateway
GraphQL:
AppSync
Java/Go/Node.js/Python/
.Net C#/Ruby and more:
AWS Lambda
ストリーム
流⼊データ:
Kinesis Data Stream
流⼊ログ:
Kinesis Firehose
データ保持/管理
NoSQL:
DynamoDB
RDB:
RDS/Aurora
Queue:
SQS
File:
S3
実戦でよく使われるユースケースパターン
これまでの⽅式との対⽐(再掲): 物理構成
API Gateway
HTTPS REST
処理ロジック
Lambda
データ管理
DynamoDB
Web
API Gateway
HTTPS REST
API Gateway
HTTPS REST
Lambda
処理ロジック
データ管理
DynamoDB
これまでの⽅式との対⽐: アプリ設計
Web
サーバー
サーバー
App
サーバー
DB
S3
静的コンテンツ
静的コンテンツ
キャッシュ
アクセス設定
商品情報
会員情報
在庫情報
注⽂データ
V
C
商品情報取得
会員情報取得
在庫情報取得
注⽂処理
M
od
el
運⽤ツール
Log
Log
Log
V
C
M
商品情報取得
会員情報取得
在庫情報取得
注⽂処理
キャッシュ
アクセス設定
商品情報
会員情報
在庫情報
注⽂データ
CloudWatch
ログ管理
例: Single Page
Application
AWS Cloud
Microservice
LIFULL
様
モバイル向けAPI: サーバーレスによるマイクロサービス
バック
エンド
システム
S3
API Gateway
Function
•
iOS/Android
ネイティブアプリ
ピーク時 4,200リクエスト/分
API
API
API
モバイル向けAPI
•
PC Web
⽤アプリ
PC Web
向けアプリ
⾼⽣産性
マネージド
業務注⼒
変更容易性
リソース管理と
サーバーレスにおけるリソース管理
1.
呼び出し要求に応じて
ファクションを実⾏
(処理リソースを確保)
2.
リクエスト増加
→
必要に応じて処理
リソースを追加確保
…
…
不適切なリソース利⽤の防⽌
効率的なリソース再利⽤の促進
=
同時実⾏数による制限・保護
(デフォルト1,000)
2019/05
現在
=
処理タイムアウトの設定
(最⼤15分)
2019/05
現在
処理リソースにおける失敗・エラー処理
•
基本的な考え⽅:
処理リソースの単位(ファンクション)でエラー処理を考慮する
もう少し⼤きなスコープで処理を管理したい…
•
処理の分岐、ループや待ち合わせ処理
•
⼤きなスコープでのエラー処理
正常
エラー
エラー処理/通知
正常
エラー
エラー処理/通知
正常
エラー
エラー処理/通知
Step Functions
フロー管理: Step Functions
•
複数の処理(Lambda含む)を
⼀連のフローとして管理
•
異なる⾔語のファクションの
組み合わせでもOK
•
実⾏履歴を確認可能、処理の
可視性を向上
提携メディア
Gunosy
様
「
グノスポ」におけるサーバーレスアーキテクチャ
⾼⽣産性
スケーラビリティ
静的コンテンツ 動的データ 記事/試合状況 フォロー状況管理 認可 (フェデレーション)⼀般ユーザー
ログの保存 ETL処理 ログ収集 データ分析 クローリング 記事に対する処理 (タグ付けなど) 変更通知 前処理/インデックス付け 画像に対する処理 (顔座標の検出)変更容易性
サーバーレスにおける
データベースの考え⽅
サーバーレスにおけるデータベース
…
…
データベースとして RDB を使えないか….
⼤量のDB接続リクエストが
発⽣する可能性!!
RDB
パンクする
側のリソースが
サーバーレスにおけるデータベース
…
…
同時リクエスト数がそこまで⾼くない or
⼊り⼝でスロットリングする
1
DB
接続を
制御する
2
3
分散型の
DB
を選ぶ
AWS Cloud
On-Premise
既存互換I/F
新アプリ向けI/F
アダストリア様
サーバーレスによるモバイルバックエンド
マネージド
業務注⼒
マネージド
⾃動リソース管理
S3
API
Gateway
•
モバイルアプリ「.st」
•
PC Web
⽤ ECサイト
認証
負荷に応じて⾃動でリソース拡張/縮退
API
API
バック
エンド
EC
システム
LIXIL
様
スマート宅配ポストサービス
Io
T
B2
C A
PI
B2
B A
PI
ユーザー
App
管理
Ap
p
データ可視化
コスト最適化
マネージド
リソース⾃動管理
変更容易性
IoT
バックエンド
流⼊データの連続処理
ログデータ収集処理
モバイル
バックエンド
業務系API
業務系API
業務系API
モバイル
バックエンド
業務系API
実戦でよく使われるユースケースパターン
VPC
リアルタイムモバイル
モバイル オフライン処理
動的Webアプリ
モバイルバックエンド
業務系 API
グループ企業間API
インタラクティブAPI
データ配信API
WebSocket
ユースケースパターン: モバイル、API 関連
•
王道的なサーバーレス実装の形
•
リクエスト/レスポンス型向け
•
内部データの公開ルートをAPI 化
•
VPC
内での API 公開も可能
•
リアルタイム通信要件や⾮接続状態
(オフライン)要件のモバイル向け
•
WebSocket
でリアルタイムに情報を配信
•
クラウド側のデータ変更をPush配信可能
パターン組み合わせの例
•
モニタリング型モバイルアプリ
• IoT
アプリケーション
モニタリング型モバイルアプリの例
要件:
•
モバイルアプリから随時データが送信されてくる。
•
そのデータの加⼯・集計をしてタイムリーに可視化したい。
処理起動QuickSight or 3
可視化
rdパーティ
モバイルアプリ部分
ログデータの分析
ログデータ
収集処理
AWS Cloud
•
開発⽣産性:
1
ヶ⽉
で実装
•
運⽤効率化:
2
⼈
でシステム運⽤
CARTE by CyberAgent
⾃律神経のスコア化サービス
API
認証サービス
マネージド
⾃動リソース管理
マネージド
業務注⼒
⾼⽣産性
認証
数値化
可視化
数値化処理
データ可視化
n
⾃律神経研究の第⼀⼈者「順天堂⼤学医学部 ⼩林弘幸教授」全⾯監修
n
⾃律神経の状態を測定し可視化
-
スマホカメラに60秒指を置くだけで1〜100の数値でスコア化
https://carte-ca.jp/
処理起動
IoT
アプリケーションの例
要件:
•
機器から随時データが送信。データを収集し、機械学習させたい。
•
モバイルアプリから機器の遠隔操作を可能にする。
•
⼀部の機器については Alexa によるボイス操作を可能にしたい。
フロー管理
モバイル
アプリ部分
Alexa Skill
IoT
バックエンド
機械学習フロー
モバイルアプリによる
機器の遠隔操作
Alexa
経由での
ボイスコマンド
ログデータ
収集処理
ソニー様
Serverless Conf 2018
「aiboクラウドサービスを⽀えるサーバーレス技術」
SNS トピック SQSキュー