数千万から数億のソリューションを買うのかオープンソースをハックできる人を育てるのか
数千万から数億のソリューションを買うのかオープンソースをハックできる人を育てるのか。もちろんそんなに単純な問題ではないが、じっくり考えてみるに値する。
企業にとっては、何らかの経営的課題が解決できれば別に自社で内製しようが、他社のプロプライエタリなソリューションを購入しようが、それこそオープンソースであれやこれやしようが単に手段が違うだけである。リスク、コスト、時間などを天秤にかけて決定すればいい。
わたしなんかは、オープンソース原理主義者的なレッテルを世間からは貼られているので、なんでもかんでもオープンソース(OSS)を推進しているように思われているが、理念としてのフリーソフトウェア運動に深く敬意を抱きつつも、ま、安ければなんでもいいんじゃない、という日和見主義者なので、商用製品を使うことになんら躊躇はない。
例えば、EMCのご大層なストレージを1TB用意するのと、ローカルストレージで1TB用意するのでは、億円対数万円くらいの差がある。もちろん信頼性の差は月とすっぽんだけど、ローカルストレージを3台用意して、リプリケーションして、信頼性を担保して運用すればいいじゃないかとか思ったりする。だけどりんごとオレンジを一緒に比較しちゃいかんという声もあり、一概には言えなくてむにゅむみゅみたいな感じになる。EMCのご大層なストレージも実はコモディティのディスクを二重化して持っているだけなんじゃないかとか、様々な便利なツールとか、運用上のなにがしかとかサービス部隊があれやこれやしてくれるんじゃないかとか、まあそれなりに付加価値はもちろんあるわけだけど、インターネットのサービス企業(例えばAmazonとかebayとかFacebookとかGoogleとか)で、ばりばり使われているかというと、多分そーゆーことはなくて、ふつーのコモディティ製品を大量に使っていて、当然ふつーに故障して、ふつーにリプレースされることを前提にシステムとか運用が設計されていて、圧倒的なコスト競争力を持っている。
ハードウェアは、高価なメインフレームをどーんと置くのではなく、安いふつーのインテル系PCサーバーを大量に置くというのがインターネットサービス企業の常識になっているのは皆様もご承知のとおりだ。
メインフレームの営業は、信頼性が違います、とか営業トークをするのだけど、値段も違います(とっても高いのだよ)というのとはあまり言わない。インテル系PCサーバーは量産効果でめちゃくちゃ安い。数が出ないメインフレームはとっても高い。極めて単純な原理原則である。信頼性を上げるためにあれやこれやしているのだけど、もちろん高い。安いハードウェアをいっぱい使って、同時に落ちる可能性を低くして信頼性を上げるというアプローチと真っ向から対立する。インターネットの主流はもちろん安いハードをいっぱい使って信頼性を確保するという流れになっている。
データベース管理システムも高価なOracle RACを使うのかMySQLやNoSQL系のストレージを使うのか。WebLogicを使うのかTomcatやJbossを使うのか。TeraDataを使うのかHadoopを使うのか。
商用製品を使うメリットってなんだろうか。
サポートがある?上司への言い訳が効く?いろいろ便利なツールがある?性能がいい?機能が豊富?バグが少ない?安い?営業に接待してもらえる?責任をとらなくていい?モテる?かっこいい?情報が多い?すぐに使える?利用者が多い?
まあ、それなりに使える場合もあれば、そーでない場合もある。
何億円もするDWH用のDBを使ってできることとHadoopでできることに何か原理的に差があるのだろうか。多分何もない。Hadoopを使いこなしてデータマイニングしてそれを経営判断に使うということはもちろん可能だ。問題は、そのようなソリューションが今あるかないか。作り込まないといけないのか、それとも、すぐに利用できるのかというようなことかと思う。
さらに言えば、何か問題があった場合、商用製品の場合、そのベンダーにサポートを依頼するしかないのだが、オープンソースの場合は、ソースコードがあるので、とことんまで原因を追求できる。原理的には、そーなのだけど、現実はソースコードをハックできるエンジニアはそれほど多くないので、言われているほど簡単ではないということだ。
企業にとってみれば、商用製品だろうがオープンソースだろうが経営的課題を解決できればどっちでもいい。その前提でいっても、多くのインターネットサービス企業はオープンソースを選択している。その事実をどう評価するか。
オープンソースを使いこなすことには、間違いなく優位性がある。そして、それはオープンソースを使いこなせないことにとてつもないハンディキャップをおっているという認識が必要である。
これは、単なる経済合理性の話である、ハッカーがどうだとか、オープンソースがどーだという話ではない。ベンダーにロックインされることが自社の競争優位性に繋がるのか否か。もし競争優位性に繋がらないとしたらオープンソースを利用するしかない。それしか選択肢がないのである。
で、エンジニアである自分にとって、この状況をどう理解するかということである。
数億円する商用製品に依存するのか、オープンソースのハッカーを雇用してそれを利用するのかという経営者視点で考えれば、競争力のあるインターネット企業が後者を選んでいる以上、自分がオープンソースのハッカーになってそれを競争力にするという選択肢は極めて経済合理性が高い選択肢になる。
ハッカーになる。それが自分のエンジニアとしてのジョブセキュリティを高めるという戦略である。
経営者は冷徹だ。利益になると判断すればそのような行動をとる。ハッカーを雇用するあるいは、ハッカーを育てることに経営的な意義を見出せばそのような合理的な行動をとる。当たり前のことだ。
エンジニアとして生き残ることを考えたらハッカーになるというのを選択肢の一つとして考えていたほうがいい。
githubに自分の履歴書を記すのがハッカーのスタイルになった。コードを書け。それが履歴書だ。
いい時代になったと思う。