8/9 に開催された AWS Black Belt Online Seminar「AWS 上でのサーバーレスアーキテクチャ入門」に参加した.最近 Lambda など Serverless Architecture 全般に興味があって,勉強会に参加したり,Serverless Framework を試したりしている.
資料
www.slideshare.net
メモ φ(..)
- 様々なアーキテクチャ
- モノリシック
- サービス指向 (SOA)
- マイクロサービス
- サービス指向アーキテクチャをさらにブレイクダウンしたような感じ
- サーバーベースだとオペレーション面で設計することがたくさんある
- サーバレス
- フルマネージド
- 開発者の生産性向上
- 継続的なスケーリング
- サーバレス
- Lambda
- CPU はメモリ量に正比例する
- Lambda のネットワーク環境
- Default だと No VPC
- Customer VPC だと VPC 内で Lambda を起動できる
- インターネットアクセスができないため NAT Gateway や VPC Gateway を設定する必要がある
- クイックデモ : API Gateway + S3 + Lambda + DynamoDB
- Enable CORS は重要
- Serverless Architecture のユースケース
- マイクロサービス
- モバイルバックエンド
- リアルタイム分析エンジン
- ベストプラクティス
- Lambda
- function サイズを小さく
- 関数はステートレスに実装する
- カスタムメトリックスを使う
- API Gateway
- Mock Integration
- Cognito 連携
- リクエスト/レスポンスマッピングテンプレートを使う
- その他
- IAM ロールを利用する
- 設定は DynamoDB に外部化する
- Lambda
所感
Lambda の CPU リソースが割り当てたメモリ量に正比例するのは知らなくて勉強になった.ドキュメントにも書いてあった.
AWS Lambda のリソースモデルでは、お客様が関数に必要なメモリ量を指定するとそれに比例した CPU パワーとその他のリソースが割り当てられます。たとえば、256 MB のメモリを指定すると約 2 倍の CPU パワーが Lambda 関数に割り当てられます。128 MB のメモリを指定した場合と比較すると CPU パワーは倍となり、512 MB のメモリを指定した場合と比較すると半分になります。メモリは 128 MB から 1.5 GB まで、64 MB ごとに増加できます。 https://aws.amazon.com/jp/lambda/faqs/
Lambda を使うときは用途に応じて VPC を考慮する必要がある.例えば MySQL や RDS にアクセスするなら VPC 内に立てるけど,S3 や SQS なら No VPC で良いなど.