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を使用してマネージドに行うようにする

上記が重要だなと感じました!

以上、ここまで読んでくださりありがとうございました!