エンジニアのための勉強会 #4
Serverless Architecture
• パブリッククラウドの基礎
• AWS上に仮想サーバを立てる
• マネージドなサービスとは何か
• RESTful API
• RESTとは何か。どのようなAPIのことか
• JSONやHTTP通信の基礎(GET/POST/クエリパラメータなど)
前回までおさらいと今回のゴール
• サーバレスがどんなものかを知る
• RESTful APIをサーバレスで作ってみる
パブリッククラウドで便利になったこと
Cloud
Cloud
例:ECサイトのスケール
通常時
セール時
サーバ DB
サーバ
DB
サーバ
サーバ
サーバ
DB
サーバ
サーバ
• サーバの死活監視(ハードはAWSが面倒見てくれるけど…)
• スケーリングの設定(CPU利用率が何%超えたら増やす?)
• 常に仮想サーバを稼働させておく必要はある
クラウドでもサーバの管理負荷はかかる
• サーバ管理が不要なシステム構成のこと
• パブリッククラウドの各種サービスを利用して、サーバを用意しなくてもシステムを
組み上げることができる。
• 動いているサーバはクラウド上のどこかにあるが、利用者は意識する必要が無い
• スケーリングも自動
• 処理がキックされる等のイベントが生じた時に、動的にリソースが割り当てられる
サーバレスアーキテクチャとは
開発者がアプリのみに集中できる
• AWS Lambda
• Azure Functions
• GCP Cloud Functions
• ソースコードをアップロードすれば処理を動かすことができる
• FaaSと呼ばれる
• FaaS
• Function as a Service
• プログラムの実行環境を利用する形態
• 実際に処理が実行された時間に対して課金される
サーバレスの例
※ #2でLambdaはPaaS、と説明しましたが一般にはFaaSと言われることの方が多い気がします
• AWS LambdaでHello World
とりあえず使ってみる
• クラウドの様々なサービスを組み合わせる
サーバレスの構成イメージ
Cloud(サーバレス)
従来
APLサーバ
DBサーバ監視サーバ
APIサーバ
外部
• 用途やセキュリティ要件により様々なサーバを
立ててシステムを構築
FaaSサービス
マネジメント
型DB
監視サービス
APIサービス
外部
• クラウドのサービスを連携させる。
• AWSでサーバレスなAPIを作る
ハンズオン
AWS
Amazon Simple
Notification Service
Amazon API Gateway AWS Lambda
Amazon CloudWatch
Amazon DynamoDB
今回のハンズオンでは対象外
ログ監視
PGM実行
通知
API提供
• Lambdaにソースをアップロード
• API Gatewayと連携してデプロイ
• この時点でAPIとして外部公開可能に
• SNSでトピック作成
• CloudWatch Alarmを設定
• 異常終了したときに通知が飛ぶように
ハンズオンでやること
• サーバ管理が不要
• 耐障害性:サーバ障害が無い
• スケーラビリティ
• コストメリット
• 実行時間に対する課金
• 開発のアジリティ
サーバレスのメリット/デメリット
サーバレスが不向きな処理もあるので使い分けが重要
• サーバ処理に比べて機能制約がある
• Lambdaの場合、15分以上の処理は不可
• オンプレと同じコードが使えない
• サーバレスに適したコードである必要
• 開発者の学習コストがかかる
• 監視やデバッグ、テストが難しい
デメリットメリット
• AWSによるサーバーレスアーキテクチャ
• ビジネス+IT
• https://www.sbbit.jp/article/cont1/36839#head3
• https://www.sbbit.jp/article/cont1/35782#head4
• re:Invent 2019
• Tale of two cities: Goldman Sachs’s hybrid migration approach
https://www.youtube.com/watch?v=GJCVphUO_AM
• HSBC: Meeting requirements for open banking with serverless
https://www.youtube.com/watch?v=QNM9LVV_eI0
参考
Fin

エンジニアのための勉強会 #4 『Serverless』