めざせ!サーバーレスプロフェッショナル
mazamachi.icon感想
あんまりサーバーレスのうれしさを分かってなかったので理解が微妙 AWS が面倒見てくれるというのがうれしい?
k8s との共存はあんまりなさそう
AWS サーバーレスだったら実現できることを、k8s とかでどう実現するのかを調べると良さそう
アーキテクチャデザインパターンはかなりまとまってて良い感じだった
a
アジェンダ
おさらい
開発テスト・フレームワーク
複数環境、CI/CD
監視・モニタリング
デザインパターン
おさらい
サーバーレスとは
サーバー管理が不要
AWS が全部やってくれる
柔軟なスケーリング
アイドル時のリソース確保が不要
組み込まれた高可用性
サーバレスのためのビルディングブロック
Compute
Lambda
これがよく言及される
他にも Storage, DB, Messaging, API Proxy などなどいろいろある
従来なら ELB → EC2 -> RDS みたいな仕組みが必要だった
サーバレスなら
API Gateway -> Lambda -> DynamoDB みたいな流れになる。
インスタンスを自分で管理しなくても勝手にスケールしてくれる
開発テスト・フレームワーク
開発環境
AWS Cloud9
クラウドネイティブな環境
他の AWS の環境とも密に連携できて便利
もちろん他のやつも
課題
サービスが増えていく
マイクロサービスと同じような課題がある
→どう管理するのか?
AWS SAM (Serverless Application Model)
AWS でサーバーレスアプリケーションを表現するスタンダードモデル
ライフサイクルのすべてのステップを簡素化してくれる
Cloud Formation の拡張として提供されている
SAM での Package & Deploy
SAM とソースコードをコンパイル?するとCloudFormation テンプレートに変換される
デプロイすると全部かってに構築してくれる
SAM を書くことが肝になってくる
mazamachi.icon表記法の説明が続くけど調べれば分かるので省略
awslabs にサンプルがいっぱいあるので見ると良いよ
Express.js のサンプルとかもあるよ
サーバーレスアプリのためのローカルテストツール
デプロイしなくてもテストできる
dynamo のイベントとかモックで動作する感じ?
複数環境、 CI/CD
開発・テスト・実行には複数環境が必要
なぜ?
リソースの重複を避けたい
インフラのの変更を安全にテストしたい
方法は?
アカウント戦略: AWS アカウントを分ける
mazamachi.icon なるほど……
環境変数
SAM
CI/CD
アカウント戦略
2つ方法がある
1. 同じアカウントでスタックを分ける
o リソース管理が簡単
o管理や監視ツールを見やすい
x 許可やアクセスの分離がむずかしい
→ 小規模チームや個人向き
2. アカウントを分ける
o 許可・アクセスを確実に分離できる
o アカウントごとのリソース制限を管理しやすい
x 複数アカウント感のコントロールを管理するのが大変
→大規模チーム向き
環境変数
KMS 経由で暗号化もできる
バージョニング・エイリアス
バージョンごとにエイリアスを作成できるのでそれで分離すると楽らしい
API Gateway
環境変数のように利用できる
1つの SAM から複数の環境を構築
CI/CD パイプラインの例
CodeStar を使うとテンプレートを選択すれば CI パイプラインを勝手に良い感じにしてくれるので便利やで
段階的なデプロイメント
三種類
n分間 10 %を新環境に流し、その後一気に全部更新
n分間ごとに10%を新環境に流す
一気に全部
Alarms
デプロイ中にエラーが発生した場合はデプロイをやめるとかがある
Hooks
PreTraffic で統合テストとかもできる
再利用
SAM として再利用
SA のマネージド型のリポジトリ
監視・モニタリング
デザインパターン
mazamachi.icon 結構いろいろあって参考になりそう