DB Fanboy
PL/SQLにビジネスロジックを全部書いたプロジェクトがあった。若気の至りだ。
当時も今もOracleのライセンス料は高い。でもITバブルの残り香のする2000年代、ライセンスが余っているから使っていいと言われたら、やりたいことをやるしかない。データベースの中で完結させる。アプリケーション層を薄くして、ロジックはすべてストアドプロシージャに。理想的に思えた。
たしかに動いた。
当時のPL/SQLは配列を戻せなかった。型も貧弱で、無理やり文字列連結で値を返したりしていた。エレガントとは言い難いが、動くものは動く。
結論から言えば、このプロジェクトは失敗した。
マスターDBへの負荷を分散できなくて死んだ。アプリケーションサーバーはスケールアウトできる。Webサーバーも増やせる。でもビジネスロジックがすべてDB上にある以上、負荷はマスターに集中する。リードレプリカに逃がすこともできない。書き込みも読み込みもロジックもすべてが一台に乗っている。
DBマスターのCPUリソースは、プロジェクト内のどのリソースよりも代替不能だった。他のすべてが水平に増やせる世界で、唯一スケールしない場所にすべてを載せてしまった。
高い授業料だった。Oracleのライセンス料には及ばなかったが。