既存の同種機能を複製して新機能を足すときは、アプリ実装だけでなくインフラ/IAM/監視/CI配線まで既存をテンプレに突き合わせる
インフラ
実装プロセス
機能横展開
運用
原則
既存機能(例: あるマスタのCSVインポート)と同型の新機能を横展開するとき、コード本体(API/Service/Worker/UI)の複製に目が行きがちだが、周辺の配線が漏れると実行時エラーになる。
典型例: 新規のファイルアップロードAPIで S3 の 500 エラー "Empty value provided for input HTTP label: Bucket" は、bucket 名の環境変数未設定が原因。アプリ側は動いてもインフラ配線が未整備だとこうした実行時障害になる。
突き合わせる配線の例: ストレージ/キュー(S3/SQS)のモジュールと環境変数、専用 worker の定義と起動登録、IAM 許可(bucket/queue の ARN、wildcard)、監視ダッシュボード、start/stop などの運用、preview 環境の worker 有効化リスト、デプロイ workflow のサービス一覧、ファイルアップロードを通すなら WAF の body 検査除外パターンなど。既存実装をテンプレートにして「この機能に必要な配線一式」をチェックリスト化して突合すると漏れを防げる。
合わせて: 項目数が少なく重複が薄い横展開では、過剰な共通化(抽象化)より既存専用実装の薄い複製の方がシンプル優先方針に合う、という判断もありえる(共通化は重複が厚くなってからでよい)。