なぜ本番環境を Production と呼ぶのか?
某所で発されたこんな問いがきっかけ。
この記事では、特に歴史的経緯とかは触れないが(調べるのが面倒)、議論して腹落ちしたので紹介。
生産工場のメタファー
同僚にたまたま英語ネイティブがいたので、 Production や Staging と呼ばれる環境について聞いてみた。
なるほど!と思いつつ、しかし「ソフトウェアを大量生産する……?」と言われるとちょっと良く分からない。物理ディスクを複製販売していたころならいざ知らず、今日びはSaaS (Software as a Service) として提供するのが一般的だからだ。
ドーナツを作るのか、生産設備を作るのか
ひょっとして、 "production line" という言葉をおれが誤解していたりするのか?と思って Wikipedia を見てみた。すると、ドーナツの生産工場の写真が乗っている。
ここで急に気づいたのだが、おれたちが作っているソフトウェアは、ドーナツではなくドーナツを作る設備なんじゃないか?ということだ。ドーナツは、言い換えれば顧客に提供する価値であり、おれたちが売っている対象だ。一方で、ソフトウェアエンジニアとして作っているものは、ドーナツではなくドーナツを大量生産する生産設備の方だ。
"production-readiness" という言葉がある。要は「本番デプロイオッケーです!」というような意味合いなのだが、「生産準備が完了している状態」と直訳するとなんかおかしな気がしていた。ソフトウェア自体はもう作ったんだから、準備もなにも終わっているはずなのだ。しかし、「価値をこれから生産するんだ」と考えるとしっくりくる。ソフトウェアは価値工場で、 Production 環境は生産環境なのだ。
この記事が良いと思った人は、おれにクリスピー・クリーム・ドーナツをおごってください。よろしくおねがいします。
この記事が気に入ったらサポートをしてみませんか?