AWS Summit Japan 2024で「サーバーレス開発のベストプラクティス ~より効果的に、より賢く使いこなすために~」を視聴しました。そこで得た学びを共有させていただきます。
セッション情報
セッション名
サーバーレス開発のベストプラクティス ~より効果的に、より賢く使いこなすために~
スピーカー
アマゾン ウェブ サービス ジャパン合同会社 ガバメントクラウド技術本部 ソリューションアーキテクト 淡路 大輔氏
サービスフルなサーバーレス
LambdaはTransport(転送)ではなく、Transform(変換)に使用し、つなげるLambdaを減らしていく
この言葉が印象的でした。
1つのLambdaの責任を分散させればコスト削減やパフォーマンス向上・セキュリティ向上につながることを改めて知ることができました。
Lambda-lith
1つのLambdaに処理を集約させる形。適用させるIAMが広くなり、セキュリティが低くなる可能性がある
micro-Lambda
function単位で用意する形。ただし管理が複雑になる。
いずれもデメリットが大きくなるので、闇雲に分散させるのではなく、適切にグループ化させることが重要だなと感じました。
また、分散だけでなく、シンプルなLambda(プロキシの役割など)を削除し、API Gatewayなど他サービスで置きかえられないか考え、Lambda自体を減らす = 開発側の責任範囲を減らすことも重要だなと思いました。
生成AIとサーバーレス
Step Functionsを使用したサーバーレスシステム
外部モデルに接続する際に、今までだと
- シークレット管理
- リトライ処理
- エラーハンドリング
などを手動でAWSサービスを使用して実装する必要がありましたが、これらはコードが増える = 責任範囲が増えることになり、ビジネスで差別を生まない労働になってしまいます。
そこで、Step Functionsを使用すると、下記画像のような処理を代替できます。
・
まとめ
- Lambda実装の際はシンプルなLambdaを減らし、他サービスで置き換えることで責任範囲を減らす。
- 生成AIを使用する際のAPI呼び出しやエラーハンドリングなどは、Step Functionsを使用してマネージドに行うようにする
上記が重要だなと感じました!
以上、ここまで読んでくださりありがとうございました!