オープンソースの弱点(3)運用

OSSが弱そうなところについて書いています。

のうち今回は運用について。

運用

運用はオープンソースに関わらずソフトウェアにとっての鬼門だ。開発するのと運用するのとの間には大きな断絶がある。左から右に流れるウォーターフォール的なプロセスで考えたら、企画や要件定義は最左翼にあるが、運用は最右翼にある。V字の谷の断絶はなかなか超えられるものではない。

運用性の高いソフトウェアを作ろうと思ったら、最初から運用されることを見越して作らないと難しい。一般に後から取ってつけた機能というのは不自然な作りになる。

しかしながら、最初から機能を全部盛りで作るなんてことはありえない。エクストリーム・プログラミング

You Aren't Going to Need It.

という原則があります。今必要なところから少しずつ作っていけという原則だ。この原則は正しいと思っている。とにかく動くものを作って、出して反応を見るのが大事だ。不完全でも動くものに価値がある。Zuckerbergも言っている。

Done is better than perfect.*1

ではOSSを作る人にとって運用性は今必要なことなのか?ほとんどの場合は否である。特に学者が作るような実験的なソフトウェアは運用のことなんて一切考えていないと思われる。*2面白いからという動機で作られたようなOSSも同様だ。

ChefやZabbixのような運用のために作ったOSSは別だ。運用のためのOSSが運用性が悪かったら存在価値がない。

一方で、企業が作ったプロプライエタリなソフトウェアはどうだろうか。企業にとっては運用が最大の関心だ。作る人も運用性が重要だと分かって作っている。そこが価値の源泉だと分かっている。執拗に可用性やセキュリティを気にするのそれが重要だからだ。総合ベンダーと呼んでもよいような企業が作っているソフトウェアは管理ソフトが非常に多い印象を持っている。

OSSは無料で手に入るからと飛びついても、運用まで考えると商用のソフトウェアのほうが良いケースは多いだろう。主観だが、RedmineやGitLabなんて絶対やめた方がいい。金を出してJIRAやGitHubを買うべきだ。

運用性が悪くても、魅力的な機能を持っているOSSもある。こういうものに関しては、後から取ってつけた形になって、たとえ不自然になったとしても、OSSの運用性を強化することは商売の種になる。例えば、ClouderaはHadoopディストリビューション自体はただで配って、運用管理用のCloudera Managerは有料としている。OSSで商売をする場合の古典的な手段である。

それがぼくには楽しかったから (小プロ・ブックス)

それがぼくには楽しかったから (小プロ・ブックス)

*1:私は実践できているかは別として、この言葉が好きだ。さらに付け加えて"Do is better than never."としている。DoneできなくてもDoの方がよい。

*2:ちゃんと調べたことがないが、Apache Sparkも流行っているけれども、この観点からは怪しそうだと疑っている。