序文
バックエンドAPIから非同期処理を切り出したくLambdaで設計した際に、以下のようなディスカッションをした。
「1つのLambdaに色々な処理を詰め込むモノリスLambdaはアンチパターンと言われているけど、処理ごとに作るのも開発速度が遅くなってしんどそう」
その際にとても良い記事を見つけることが出来たのでメモ代わり&日本語の検索導線を増やしたい気持ちで紹介記事を起稿。
本題
紹介記事冒頭の意訳
この投稿では、モノリスのLambda API関数(別名Lambdalith)について、APIエンドポイントごとの単一目的のLambda関数と比較して、賛否両論を検討する。
"ベストプラクティス"に挑戦し、APIに関しては多くの場合モノリスLambda関数の方が優れていると主張する。
【重要】
この投稿は、APIに面したLambda関数にのみ適用できる。
それ以外のものには、単一目的の関数を使おう。
【TL;DR】
最初から範囲をAPIエンドポイントごとに制限するという議論は、細かすぎるし大袈裟で最適化も早すぎる。
範囲の境界は、従来のソフトウェアがそうであったように、API/サービスレベル全体であるべきだ。
AWSの高度な機能を使用せず、移植性を最高レベルにしたい場合は、Lambalithを使用するといい。
またこれは、単一目的Lambdaで実現したい要件を満たすための多くの抜け道がある。
余談
2023の某アドカレにほぼ上位互換の記事がありました。
https://zenn.dev/watany/articles/183d40f8e31a45