Serverless Meetup Japan Virtual はほぼ毎回見ているのですがメモを取ったのは久しぶりです。
ハッシュタグ :#serverlessjp
今日の動画のアーカイブ
技術選定でサーバーレスを採用した話
講師:コロニー株式会社 座安 勇貴氏
APIG + Lambda + RDS (Service APIs)
- フロントエンド: Amplify(Angular, TypeScript)
- バックエンド: APIG + Lambda
- RDS Proxy + RDS
- Cognito
- DynamoDB
- Lambda タイムアウト問題
- Private Subnet の片方に NAT I/F の設定が漏れていた
Appsync + DynamoDB (Chat Functions)
- フロントエンド: Amplify (GraphQL)
- バックエンド: AppSync
- Pipeline Resolver
- DynamoDB -- Trigger --> Lambda
- Pipeline Resolver
- VTL はつらい
- Lambda トリガー
- メッセージの書き込みで発火処理実装可能
Cognito + Lambda + SES (カスタム認証機能)
- Cognito のカスタム認証トリガーで Lambda を発火
- 自前でランダムコードを生成して SES で送信
- 認証チャレンジの検証
- ググると出てくるので小さく簡単に実装できた
- セキュリティ要件次第で将来拡張可能
S3 + RDS (Hosting File Service)
- アップロード時に RDS にメタ情報など追加
- S3 の署名URLを作ってオブジェクトアップロード
- ダウンロードリクエスト時に署名URLを返却
- 署名URL便利
- ファイル名にマルチバイト文字を含むとダウンロードできない
- Content-Dispositionヘッダーのattachmentでファイル名を指定していた
- Content-Dispositionヘッダーのマルチバイト文字はエンコードが必要
まとめ
- 細かいところでハマるけどサーバーレスは便利
- アンチパターンに気をつける
- 機能を小さくコード化できるのでノウハウを定型化しやすい
- 複雑な機能軍を短期間で小さく開発できる、ビジネスに有利
- 課題
所感
お手本のような構成+モダンな構成も取り入れた、今どきのサーバーレス環境を作っていると感じました。
スケール対応はサーバーレスだと得意分野とは思ったのですが
AWS側のソフト・ハードリミットにいつの間にか迫ってるってシーンもありますねー。DynamoDBテーブル数や各種レートリミットとか。
— Yusuke Wada 和田祐介 (@waddy_u) February 17, 2021
「AWS の制限」は気にしておく必要がありそうです。
基本今から AWS を使う場合は「機能を小さくコード化できるのでノウハウを定型化しやすい」サーバーレスで実装できるかをまず考えるべきですね。