「JOIN禁止」が通り続けたのは、一人のせいだとは思えない
【読むのに約 1 分】
SQLのJOIN禁止ルールが数千万赤字を生んだ現場の衝撃(Xのトレンド)
SQLのJOINを禁止した人がいて、そのせいで数千万円の赤字と、メンタルをやられた人が出た現場があった、という投稿を見た。
ただ、わたしはこれを、JOIN禁止を言い出した一人のせいだとは思えない。
おかしなことを言う人はたまにいるし、普段はまともな人が間違った判断をすることもある。当時は妥当だった方針が、システムや組織の変化によって合わなくなることもある。
たとえばRailsで、できるだけActive Recordを使って単純に書くという方針は、処理が簡単なうちは保守しやすい。しかし複雑な集計や一括更新が増えれば、SQLやDBの機能を直接使ったほうが単純になる。それでも昔の方針が絶対ルールとして残れば、JOIN禁止と似たことになる。
元投稿によれば、DBは適切に正規化され、設計担当者も優秀だったという。それなら技術者がいなかったわけではない。
セキュリティや監査が理由なら、技術的な効率だけでは決められない禁止ルールもある。しかしJOINを使うかどうかは、処理時間、負荷、実装量などを比べられる技術的な問題である。それがITを仕事にする会社で、周囲が反対しても覆らなかったというのは不思議だ。
言い出した人にも上司にも責任はあるだろう。ただ、異論が通らず、数字で検証されず、問題が出ても方針を変えられないなら、どちらか一人ではなく組織環境全体がおかしい。
技術的な判断は、サーバー費用や開発工数を増やし、リリースを遅らせ、損失につながることはある。ただ、JOIN禁止だけで数千万円の赤字が出たと言うには説明が足りない。会社の赤字なのか、案件の予算超過なのかも分からない。
投稿からは、JOIN禁止と、それを言い出した人への強い恨みが伝わってくる。それだけ大変な現場だったのだろう。しかし、会社で起きた複雑な失敗を「あのルールとあの人のせい」とまとめると、原因を見誤る気がする。