Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

「大規模システム」の指す範囲

「100万行オーバーのモノリシックRailsアプリをマイクロサービス化したクックパッドの手順」*1では、100万行弱のコード(うちテストコードが約51万行、実行環境で動作していたのは約41万行)をもって「世界一のモノリシック」「巨大すぎる」と形容している。

また、GoogleBigtableの開発には「7人年(=84人月)の工数がかけられた」*2ということをもって、大きな工数がかかっていることが形容されている。

一方で、「みずほ35万人月」*3とか「郵政民営化1億ステップ」*4のように、SIの世界では文字通り桁の違う数字が「大規模プロジェクト」の例として挙げられる。

この感覚の差はどこから来るのだろう?

エンタープライズアプリケーションの世界で仕事をしている私自身としても、モノリシックなシステム(エンタープライズアプリケーションで言うところの「サブシステム」)の「実行環境で動作するコードが41万行」と言われても「ちょっと大きいけどまぁそんなもんでしょう」という感覚にしかならない。1サブシステムが20万行を超えると「可愛くはない規模」で、50万行を超えると「けっこう大きいな」という感じがする。ドメインモデルスタイルで設計してるシステムと、トランザクションスクリプトスタイル(サブシステムを業務単位のコンポーネントに分割でき、コンポーネント間はDBでデータ連携する)で設計してるシステムとの違いなのかな?