Download - サーバーレスのおさらい...2020/02/13 · • iOS/Androidネイティブアプリ ピーク時4,200リクエスト/分 API API API モバイル向けAPI • PC Web アプリ
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.1
サーバーレスのおさらい主要サービス、利⽤パターン、事例2019年11⽉
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.2
アジェンダ
• サーバーレスとは- 主要コンポーネントについてのおさらい
• リソース管理とエラー制御の基本• サーバーレスにおけるデータベースの考え⽅• パターンで考える
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.3
サーバーレスのおさらいと主要コンポーネント
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.4
サーバーレスとは
サーバーがない?
サーバーの存在を意識しない
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.5
サーバーレスとは
アプリケーションデータ
アプリケーション処理コード
サーバーサイド間通信 暗号化
冗⻑化
プラットフォーム、アプリ実⾏基盤
OS保守、パッチ適⽤
ネットワーク構成
コンピューティングリソース、ストレージ、物理ネットワーキング
お客
様
Clou
d
管理⼯数(⾃動化=⼯数少)
既存移⾏向き
新規・追加刷新向き
⾃動管理に伴う 制限・制約
お客
様
コンテ
ナ
オンプレ インフラサービス
インフラ+コンテナ
マネージド/サーバーレス
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.6
API GatewayHTTPS REST
Lambda処理ロジック
DynamoDBデータ管理
これまでの⽅式との対⽐Web
サーバーApp
サーバーDB
サーバー + 規模の⾒積もり+ 可⽤性設計+ データ保全の検討
ü ⾃動スケールü 設計済みのリトライü データ信頼性
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.7
サーバーレスとは
サーバー管理が不要(準備、OS保守 etc)
柔軟なスケーリング(拡張/縮退)
⼗⼆分に考慮された⾼可⽤性
アイドル時のリソース確保が不要
$
サーバーの存在を意識しない
アプリケーションの本質 “ロジック開発” に注⼒できる
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.8
サーバーレスによる代表的な効果
サーバー管理が不要(準備、OS保守 etc)
柔軟なスケーリング(拡張/縮退)
⼗⼆分に考慮された⾼可⽤性
アイドル時のリソース確保が不要
$
⾼⽣産性
変更容易性
マネージド業務注⼒
マネージド⾃動リソース管理
コスト最適化
スケーラビリティ(機会損失防⽌)
リアルタイム(付加価値/機能差別化)
エンジニア意識改⾰
• 実際の処理負荷に応じて⾃動で拡張/縮退
• ユーザーの責任領域を⼩さくしそこだけに注⼒
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.9
1/10 アイドル時間のリソースが解放され、利⽤費が最適化
9:1 “開発:保守/運⽤” の作業⽐率が 1:9 から⼤きく改善
1/3 コード量の減少(従来⽐)= ⽣産性向上、保守改善
5x 従来より⽣産性が向上アプリ展開を加速化
サーバーレスによるお客様の効果例
1⼈ 運⽤を 1 ⼈で楽に実施機能改善に注⼒可能
2ヶ⽉ スケール、冗⻑化などの考慮不要で短期実装可能
1/6 安定した定常稼働により運⽤の労⼒を⼤幅に短縮
1-2⽇ 簡易な機能追加は短期で実装・デプロイ可能
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.10
サーバーレスアプリケーション
• 利⽤者がやることü アプリケーション設計ü ロジック開発/DB設計ü 監視・エラー制御
• クラウドがやることü リソース管理ü 再実⾏処理ü ログ管理ü サーバー保守
アプリケーションデータアプリケーション処理コードサーバーサイド間通信暗号化冗⻑化プラットフォーム、アプリ実⾏基盤OS保守、パッチ適⽤ネットワーク構成
コンピューティングリソース、ストレージ、物理ネットワーキング
Clou
d
マネージド/サーバーレス
⾼⽣産性
⾼保守性
品質安定化
セキュリティレベル向上
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.11
Function as a Service: AWS Lambdaコードを⽤意 → 実⾏時に適切にインフラを確保して処理を実⾏
f(x) = {…}
呼び出し元 処理対象
例・API呼び出し・データ変更イベント・ファイル配置イベント…
例・DBアクセス・ファイル出⼒・別の処理を呼び出し…
負荷に応じて処理を多重化
リソース管理 リトライ ログ出⼒
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.12
サーバーレス: 主要コンポーネント
処理ロジック
認証: 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
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.13
実戦でよく使われるユースケースパターン
https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.14
これまでの⽅式との対⽐(再掲): 物理構成
API GatewayHTTPS REST
Lambda処理ロジック
DynamoDBデータ管理
Webサーバー
Appサーバー
DBサーバー
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.15
API GatewayHTTPS RESTAPI GatewayHTTPS REST
Lambda処理ロジック
DynamoDBデータ管理
これまでの⽅式との対⽐: アプリ設計Web
サーバーApp
サーバーDB
サーバー
S3静的コンテンツ
静的コンテンツキャッシュアクセス設定
商品情報会員情報在庫情報注⽂データ
V
C
商品情報取得会員情報取得在庫情報取得注⽂処理
Mod
el
運⽤ツールLog LogLog
V
CM
商品情報取得会員情報取得在庫情報取得注⽂処理
キャッシュアクセス設定
商品情報会員情報在庫情報注⽂データ
CloudWatchログ管理
例: Single PageApplication
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.16
AWS Cloud
Microservice
LIFULL様モバイル向けAPI: サーバーレスによるマイクロサービス
バックエンドシステム
S3
API Gateway Function
• iOS/Androidネイティブアプリピーク時 4,200リクエスト/分
API
API
API
モバイル向けAPI
• PC Web⽤アプリ PC Web向けアプリ
⾼⽣産性 変更容易性マネージド業務注⼒
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.17
リソース管理とエラー制御の基本
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.18
サーバーレスにおけるリソース管理
1. 呼び出し要求に応じてファクションを実⾏(処理リソースを確保)
2. リクエスト増加→ 必要に応じて処理リソースを追加確保
……
不適切なリソース利⽤の防⽌ 効率的なリソース再利⽤の促進= 同時実⾏数による制限・保護(デフォルト1,000) 2019/05現在
= 処理タイムアウトの設定(最⼤15分) 2019/05現在
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.19
処理リソースにおける失敗・エラー処理
• 基本的な考え⽅: 処理リソースの単位(ファンクション)でエラー処理を考慮する
もう少し⼤きなスコープで処理を管理したい…
• 処理の分岐、ループや待ち合わせ処理• ⼤きなスコープでのエラー処理
正常
エラー
エラー処理/通知
正常
エラー
エラー処理/通知
正常
エラー
エラー処理/通知
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.20
Step Functions
フロー管理: Step Functions
• 複数の処理(Lambda含む)を⼀連のフローとして管理
• 異なる⾔語のファクションの組み合わせでもOK
• 実⾏履歴を確認可能、処理の可視性を向上
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.21
提携メディア
Gunosy様「グノスポ」におけるサーバーレスアーキテクチャ
⾼⽣産性 スケーラビリティ
静的コンテンツ
動的データ記事/試合状況
フォロー状況管理
認可(フェデレーション)
⼀般ユーザー
ログの保存ETL処理
ログ収集 データ分析
クローリング
記事に対する処理(タグ付けなど)
変更通知
前処理/インデックス付け
画像に対する処理(顔座標の検出)
変更容易性
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.22
サーバーレスにおけるデータベースの考え⽅
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.23
サーバーレスにおけるデータベース
……
データベースとして RDBを使えないか….
⼤量のDB接続リクエストが発⽣する可能性!!
RDB 側のリソースがパンクする
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.24
サーバーレスにおけるデータベース
……
同時リクエスト数がそこまで⾼くない or⼊り⼝でスロットリングする
1
DB接続を制御する2
分散型のDBを選ぶ3
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.25
サーバーレスにおけるデータベースの選択
AWS Lambda
RDS Proxy
セキュリティの向上
Amazon RDS
Amazon Aurora
シームレスなフェイルオーバー
コネクションプール
DB接続を制御する
分散型の DBを選ぶ
AWS Lambda Amazon DynamoDB
※ 2020/01現在、RDS Proxy 機能は Public Preview です
考慮点• アプリから⾒た I/F
- SQL? API?• データ設計
- RDB型? Key-Value?• DBの可⽤性設計/スケーラビリティ
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.26
パターンで考える
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.27
サーバーレス設計の⾏き着く先 … 複雑化?
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.28
LIXIL 様スマート宅配ポストサービス
IoT B2C
API
B2B
API
ユーザー
App
管理
App
データ可視化
コスト最適化マネージドリソース⾃動管理変更容易性
IoT バックエンド
流⼊データの連続処理
ログデータ収集処理
モバイルバックエンド
業務系API
業務系API
業務系API
モバイルバックエンド
業務系API
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.29
実戦でよく使われるユースケースパターン
https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.30
パターン組み合わせの例
• モニタリング型モバイルアプリ• IoTアプリケーション• データ連携処理パイプライン
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.31
モニタリング型モバイルアプリの例
要件: • モバイルアプリから随時データが送信されてくる。• そのデータの加⼯・集計をしてタイムリーに可視化したい。
処理起動可視化
QuickSight or 3rdパーティ
モバイルアプリ部分
ログデータの分析ログデータ収集処理
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.32
AWS Cloud
• 開発⽣産性: 1ヶ⽉で実装• 運⽤効率化: 2⼈でシステム運⽤
CARTE by CyberAgent⾃律神経のスコア化サービス
API
認証サービス
マネージド⾃動リソース管理
マネージド業務注⼒ ⾼⽣産性
認証
数値化
可視化
数値化処理
データ可視化
n ⾃律神経研究の第⼀⼈者「順天堂⼤学医学部 ⼩林弘幸教授」全⾯監修n ⾃律神経の状態を測定し可視化
-スマホカメラに60秒指を置くだけで1〜100の数値でスコア化
https://carte-ca.jp/処理起動
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.33
IoTアプリケーションの例
要件:• 機器から随時データが送信。データを収集し、機械学習させたい。• モバイルアプリから機器の遠隔操作を可能にする。• ⼀部の機器については Alexa によるボイス操作を可能にしたい。
フロー管理
モバイルアプリ部分
Alexa Skill
IoTバックエンド
機械学習フロー
モバイルアプリによる機器の遠隔操作
Alexa経由でのボイスコマンド
ログデータ収集処理
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.34
ソニー様 Serverless Conf 2018「aiboクラウドサービスを⽀えるサーバーレス技術」
https://speakerdeck.com/ryoheimorimoto/serverlessconf-tokyo-2018-aibo
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.35
三菱電気様 (AWS Summit 基調講演より)
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.36
SNSトピック
SQSキュー
データ連携処理パイプライン
要件: • 各所から連続的にデータが送信されてくる。• それらに対して随時加⼯・集計などの処理を経て分析⽤データにしたい。• 最終的には機械学習のフローに回す。
フロー管理
SNSトピック
SQSキュー
前加⼯処理 集計処理
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.37
AWS Cloud
受取
ダイソー様サーバーレスによるPOSデータ処理
マネージド⾃動リソース管理
• 5,000 を超える店舗、70,000 以上の商品点数(2018/02時点)
•今後のデータ増加に⾃動でリソース拡張
変更容易性マネージド業務注⼒
それぞれの実際の負荷に応じて独⽴して⾃動で拡張/縮退処理優先 or コスト優先で処理量の調整を設定可能
チェック ためる 参照更新 参照
コマンド クエリ
SNS SNS SNS
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.38
AWS Summit での発表にて
R . I K C L 2 IK CML @@C C M L . KCABML K L K95528
0 L
B yB
B
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.39
サーバーレス検討のきっかけと狙い
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.40
モバイル/Webバックエンド
サービスAPI/業務機能API
ログ処理/サービス監視
画像加⼯処理
サーバーレステクノロジご利⽤の国内のお客様(抜粋)
データ前処理/機械学習パイプライン処理
ポイント/POS課⾦データ処理 分散並列バッチ
by リクルートライフスタイル
by アイデアマンズby ソルクシーズ
IoT関連ユースケース
ストリーム処理 SaaS/ソリューション基盤 by オージス総研 by サイオステクノロジー
顧客
向け
従業員
向け
by PSソリューションズ
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.41
API
サーバーレス実装が選択されたタイミング
新サービスの実装 既存の仕組みへの機能追加
既存処理の刷新
既存アーキテクチャの最適化
モバイル/Web
by オージス総研
by サイオステクノロジー
IoT
by PSソリューションズ
by リクルートライフスタイル
データ分析/データレイク
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.42
代表的な検討対象領域
規模/負荷の⾒積もりの観点で…• 将来予測が難しい
ü 新規事業ü スタートアップü 共通機能部分
• 時間/時期による変動が⼤きいü B2Cサービスü B2B連携ü スケジュール型のタスク処理
アプリ機能要件の観点で…• 機能変更頻度が⾼い
ü 新規事業ü スタートアップü B2Cサービスü 連携処理ü 規制対応領域
• 多くのデータ種別を取り扱うü データレイク前後のデータ変換/加⼯処理
ü IoTセンシングデータ
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.43
Project 責任者向けビジネス価値とは?- 事例 Pickup- IDC調査レポート
アーキテクト向けユースケースパターン- 16 のパターン- 組み合わせ活⽤例
これからの開発者向けサーバーレス技術情報- ハンズオン・技術資料- 開発環境、Tips...
amzn.to/2UJT4bBamzn.to/2WeZ1xz amzn.to/2WeZuQl
3つのサーバーレス関連Webページ
© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved.44