今回は少し予定を変えて,テクノロジとして見たLinuxの実力について考えてみよう。最近,特に,LinuxとWindowsの比較についての記事がIT Proでもよく見られるようになってきた。これに対して筆者の私見を述べる形で議論を進めていこう。

Linuxはセキュリティが弱い?

 Aberdeen Groupが発表したLinuxのセキュリティについてのレポート(関連記事)は,Linuxコミュニティにかなりのインパクトを与えたようだ。

 Aberdeen Groupのサイトでは無料登録により原文レポートが読めるようになっているが,一読した限りではLinuxがWindowsよりもセキュリティが弱いとする根拠が貧弱と感じた。インターネットの総合セキュリティ対策組織であるCERT/CC(Computer Emergency Response Team/Coordination Center)からのセキュリティ警告の数を唯一の根拠としているわけだが,何よりも,分母の大きさを無視しているのは問題だ。この理屈であれば,最もセキュリティが高いOSはMS-DOSだということもできてしまう。

 Webサーバーの調査を行っているnetcraft社の情報では,インターネット上のWebサーバーとしてはApacheがWindowsサーバーの2倍以上利用されている。ApacheがすべてLinux上で稼働しているとは思えないが,少なくとも,インターネットの世界ではLinuxはWindowsよりも普及しているだろう。

 また,セキュリティの警告の数が多いからといって,そのOSのセキュリティが弱いということはできない。ある意味,セキュリティ・リスクが迅速に公開されることで,コミュニティが直ちに修正版を提供できることこそが,オープン・ソース開発のポイントであるからだ。セキュリティ・リスクが広く知られていない,あるいは修正版がなかなか提供されないままに,悪意あるユーザーだけがセキュリティ・ホールを利用している状況こそが問題である。

 ただし,Aberdeen Groupの名誉のために言っておけば,このレポートの趣旨は「Linuxを使えば自然に高いセキュリティが確保されるわけではない。セキュリティ確保のためのサポート・コストは常に必要である」という現場エンジニアにとっては当たり前のことを,マネジメント層に知らせるということと思える。

 では,セキュリティ面でLinuxとWindowsのどちらが優れているのか? 1年前であれば,その答えはLinuxであっただろう。しかし,米Microsoftもセキュリティ強化に全社的に力を入れてきている。現時点でのテクノロジそのものとしてみれば互角とも思えるが,ActiveXのような本質的にセキュリティが脆弱なアーキテクチャをサポートしなくてもよい点,オープン・ソースゆえの迅速なバグ修正が可能である点でLinuxが今後ともやや有利と見てよいと思う。

Linuxはシンプルなだけに安定性/可用性は高いが...

 可用性を考える上で重要なポイントは,可用性はテクノロジの複雑性と成熟性に大きく影響するということだ。複雑性が増せば可用性は明らかに悪化する。また,長期的に利用されてきた枯れたコードの方が,新しく書き直されたコードよりも信頼性が高いのも当然だ。

 複雑性という点では,WindowsはLinuxと比べて明らかに不利だろう。成熟性という点では,“Microsoft製品はバージョン3で初めて使いものになる”というジンクスの通り,Windows 2000以降,クライアント側もサーバー側もともに安定性を大きく向上させている(Windows NTはなぜかバージョン3.1から始まっており,NTバージョン5に相当するWindows 2000が3番目のメジャー・バージョンと言うことになる)。

 ガートナーのクライアントからの情報を総合するとWindows 2000は,NTバージョン4と比較してMTBF(平均故障間隔)を4倍程度向上させており,Unixサーバーと同等の可用性を実現できているケースも増えているようだ。

 Linuxは,シンプルなOSであるだけに,定番的な構成でWeb用途に利用するのであれば,可用性の面ではWindowsよりも安定しているといってよさそうだ。しかし,今後,SMPスケーラビリティの向上などの点でLinuxのカーネルにも大きく手が加えられていく可能性がある。このような状況でコードの安定性を維持していくことは,Linuxコミュニティの大きな課題と言えるだろう。

エンタープライズ向け機能でも優れているのか?

 日経コンピュータの記事によれば,米IT技術調査会社の幹部は「Linuxと商用UNIXの差は縮まらない」と発言している(掲載記事)。これによると,(1)16プロセサ以上のSMP(対称型マルチプロセサ)構成をとるサーバーでの稼働,(2)高可用性を実現するクラスタリング機能,(3)パーティショニング機能,(4)ハードウエア・リソースを最適分割するワークロード機能などの点でLinuxとUnixの差は縮まらないという。

 この見解そのものには,賛同せざるを得ない。これらのハイエンドのエンタープライズ向け機能は元々のLinuxの設計目標とは異なるものであるからだ。

 しかし,ユーザーにとって重要な点は,常に機能的に最高レベルのシステムを使用することではない。そうであれば,いかなる業務においてもメインフレームを使用しなければならないことになってしまう(上記の4ポイントにおいて最も優れているのは,実は,メインフレームOSである)。

 つまり,一般のユーザーにとってどのOSが機能的に一番優れているのかという議論はあまり意味がない。想定している業務に対して必要にして十分な“good enough”な機能を提供するOSの中で,TCO(総合保有コスト)が最も低いのはどのOSなのかという形で意思決定を行うべきだろう。

 少しスペースが足りなくなってしまったようだ。次回はLinuxのTCO(総合保有コスト)の議論から話を続けていこう。

【おわびと訂正】
記事掲載当初,最初のWindows NTはバージョン3.5と記述しましたが,正しくはバージョン3.1でした。おわびして訂正します。