###前提・実現したいこと
サーバーレスアーキテクチャで新たにWebサービスを作ろうと考えています。
クライアントサイド(HTML/CSS/JS等)をS3でホストし、
サーバーサイドをAPI Gateway+Lambda(Java)+DynamoDBで実装しようと思っています。
その際、数多くのLambda関数へjarをデプロイする際に
どのようにプロジェクトを分割してデプロイするのが良いのか、
ベストプラクティスを知りたいと思っています。
成功したパターン、失敗したパターンなどがあれば
教えていただけると助かります。
###懸念している点
・従来のサーバーありきの設計で実装した場合、サービスが大きくなるにつれてコードもライブラリも増えていき、jarのサイズも大きくなり、Lambdaの50MB制限に引っかかること。
・jarサイズが大きくなると、何らかの形でパフォーマンスに影響すること。(具体的に何にどこまで影響があるのかはまだ把握できておりません)
・これまで通り1つのjarに全て(多く)のメソッドを実装してjarにし、同じjarを多くのLambda関数へデプロイするようにした場合、コードを修正する度に対応する関数へのデプロイが必要になること。
・Lambda関数ごとにgitリポジトリを分けると、関数が数百個などサービスの規模が大きくなった際に管理がしづらくなること。
・基盤やDaoクラスなど同じソースを共有するメソッドの単位で1つのリポジトリにし、その単位でjarと複数のLambda関数へのデプロイを管理しようとした場合、共有するソースが切り離せなくなってリポジトリが肥大化すること。
あなたの回答
tips
プレビュー