[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2009-02-13

FOSSで節約IT生活

ITにかかるコストを下げる。これは企業にとって常に重要な課題であるが、最近はフトコロ事情のせいでこの課題に対する要望や圧力が高まっていることだろう。

専用ハードウェアや商用のミドルウェアは高価なものが多い。UNIX系のプラットフォームを利用してごく一般的なN層アーキテクチャのシステムを構築する場合でも、フリーソフトウェアやOSSを利用せずにシステムを構築してしまうととても高価になってしまう。今の時期はたとえ会社の利益が出ているとしても、財布の紐は緩めたくないものである。かといってシステムを構築する際、細部をケチってもあまり高価はない。あるコンポーネントを80%節約したとしても、それが全体のコストのうちたった5%しか占めないものであれば、その節約は全体で見るとわずか4%の節約にしかならない。(全く節約しないよりは遙かにいいのだが。)

一つのコンポーネントだけを節約するのはあまり効果はないのだが、それが積み重なれば話は別である。80%節約できる部分を洗い出して全体の50%まで達したとしよう。すると40%の節約になる。とても当たり前のことであるが、塵も積もれば山となるのである。なので、システム全体を見通して安価なもので代替が利く場合には最大限入れ替えるといい。個々のコンポーネントを細やかに見直していけば、最終的にコスト削減幅は大きなものになるはずである。

今日はどんなコンポーネントを節約できるのか紹介する。

1. サーバー

もし、POWER、Itanium、SPARCなどのチップを搭載したサーバを利用している場合、x86系のサーバ利用を検討しよう。これらのチップはアーキテクチャが違うため、ネックになるのはOSである。そしてOSを変更するときのネックはミドルウェアやアプリケーションが対応しているかどうかである。最近はLinuxやWindowsに対応しているアプリケーションはとても多いので、以前ほどx86を利用する際の敷居は高くないはずだ。

とはいえ、アプリケーションによっては非x86系のプラットフォームを利用した方が価格性能比や消費電力効率が良い場合があるので、そのような場合にはわざわざx86系のプラットフォームを利用するべきではない。例えば、SunのNiagaraチップはアプリケーションサーバと非常に相性が良く、x86サーバ数台分を安価・省スペース・省電力でまとめることが可能である。

2. ストレージ


一言でストレージと言ってもピンキリである。内蔵ディスクによるソフトウェアRAID、内蔵RAIDチップによるハードウェアRAID、さらにはディスクアレイ装置など様々であり、ディスクアレイ装置も小型の100万円以下で買えるようなものから、1億円を超える巨大なシロモノまで幅広い。

一般的にディスクアレイ装置は高い。これをなんとか他の手段で置き換えることが出来れば、ストレージにかかるコストを抑えることができるだろう。例えば次のような手段で。
  • ZFS・・・ディスクアレイ装置は高価であるが、JBODはそれほどでもない。そして、ZFSではJBODを利用することができるので、高価なディスクアレイ装置を使わなくて済むというメリットがある。JBODをHAクラスターにおける共有ストレージとして利用することも可能である。
  • DRBD・・・以前の投稿でも紹介したが、共有ディスクを利用しないクラスタリングソリューションである。内蔵RAIDなどを活用することができるので、それほど容量を必要としない場合はディスクアレイ装置は必要ない。最近は単体ディスクの容量が増えてきているので、以前より利用しやすいソリューションである。
最近はSSDの低価格化・高速化・大容量化が進んでいる。高速SSDをZFSやDRBDと組み合わせによって、今後はますますディスクアレイ装置を使わなくて済むようになっていくことが予想される。今年はSSDによってストレージ業界が一変するのではないだろうか。

3. ネットワークスイッチ
ネットワークスイッチも安価なものから高価なものまで様々である。ネットワークが性能のボトルネックではない場合、スイッチをより安価なものに置き換えることに対して何の問題もないだろう。(ネットワーク管理者の操作の慣れ・不慣れという問題はあるが。)

クラスターのインターコネクトであれば、クロスケーブルでサーバ同士を直結するのがおすすめである。クロス直結のメリットは、コスト削減効果だけではなく性能が向上する点である。通信における中継機器が減れば、レスポンス・スループット共に改善するのである。もしクロス直結に出来るところがあれば、どんどん脱スイッチ化を進めよう。

逆に性能を追求したい場合には、EthernetではなくSCIやInfinibandなどもっと高速な媒体を利用するのが理に適っている。その方が結果的にコスト削減につながるはずだ。

4. ロードバランサー

いわゆるL4/L7スイッチのことだが、これがまたとても高価なのである。価格はこの辺を見て頂ければ分かるだろうか。

温故知新であるが、最近はロードバランサーを置き換える技術としてDNSラウンドロビンが見直されている。(たとえばこのページを参照。)DNSラウンドロビンを利用すれば、基本的にはL4スイッチを利用しなくて済む。楽天やYahooなどでもDNSラウンドロビンはよく利用されている。

安価なL4スイッチであれば、LVSを利用するという手もある。

5. クラスタリングソフトウェア

商用のものは実績があるもの、値が張るのも事実である。要件次第ではあるが、スキルがあるならLinux HeartbeatやOpen HA Clusterなど無料のものの利用を検討しよう。ただし、クラスタリングソフトウェアは適切なサポートがないと、トラブルが発生したときに泣きを見ることになるので注意が必要だ。

6. ファイルシステム

もし理由もなく商用のファイルシステム(VxFSなど)を利用しているなら、まずはOSに標準でついてくるもの、例えばZFS、XFS、ext3、UFSなどを利用するといいだろう。特殊用途であるが、lustreもGPLライセンスでリリースされているので無料で利用することができる。

7. データベース

最近はデータベースのコモディティ化も進んでいる。特に、Hibernate、Toplink(Java)やActiveRecord(Ruby On Rails)などのORMを利用している場合などはあまりデータベースのことを意識して開発する必要はない。適切にチューニングを施せば、MySQLやPostgreSQLは商用データベース(Oracle、MS SQL Server、DB2など)に匹敵する性能を発揮する。よほど何か特別な理由(○○の機能がなければいけない!!など)がなければ、MySQLやPostgreSQLを使って開発をはじめてみてはどうだろうか。OSS RDBMSでも少しお金を払えば有料サポートが受けられるので適宜利用するといいだろう。

8. アプリケーションサーバ

これまた高価なコンポーネントである。商用アプリケーションサーバの代表格といえば、WebSphereやWebLogicであろう。しかし、アプリケーションサーバで利用する言語がJavaであることを忘れてはならない。JavaといえばWrite Once Run Anywhere!である。アプリケーションサーバおよびアプリケーションそのものがJ2EEの仕様を満たしていれば、理論的には移植が可能である。しかし各アプリケーションサーバによって仕様の齟齬がどうしても存在するのもまた事実であり、移植作業はかなり手間がかかってしまう。新規開発時ならばそのような齟齬は問題になりにくいので、まずは無料で利用出来るものを利用してみてはどうだろうか。また、アプリケーションサーバには便利なミドルウェアが付属している場合が多いが、迂闊に利用するのは控えた方がいい。これはもちろんアプリケーションの移植性を損なうからであり、後にベンダーロックインに繋がるからである。

新規開発時ならJava以外の言語を利用するというのもアリである。大規模であればやはり実績のあるJavaが堅い選択肢であるが、小〜中規模であれば開発効率の高いRuby On Railsなどを利用すると開発期間の短縮という別のメリットもある。

まとめ

あなたはいくつのコンポーネントを節約できるだろうか。フリーソフトウェアやOSS(ひっくるめてFOSS)はもの凄いスピードで進化してきており、様々な場面において利用に耐えうる存在になってきている。ITの予算が厳しいならば、ぜひFOSSの利用を検討してみてはどうだろうか。次の表は節約の一例である。いかがだろう?とても節約できる感じがしないだろうか。(ちょっと極端過ぎだったかな・・・?)

FOSSを利用するには柔軟なシステム開発や運用が重要である。そのためには、ミドルウェアなど個々のコンポーネントに縛られないことが大切だ。例えばアプリケーションサーバ上での開発を行う場合などは、J2EEの仕様にのっとってアプリケーションを開発することは至上命題であるといえる。

コンピュータギークたるもの様々なツールを使いこなすべきである。様々なツールを使いこなすノウハウを知っていると、お金を節約できるのである。ただしいくらお金を節約できるからといって、何でも自分で解決しようとするのは間違いである。OSSならばソースコードを見て問題を発見したり、自分で手を加えてニーズに合わせるということが可能だが、一人で全てをやっていては時間がいくらあっても足りない。ではFOSSを利用する場合にどのように時間を節約するかというと、その答えはサポートである。餅は餅屋というが、専門でやっている人達はかなりのノウハウを持っているので迅速に問題を解決してくれるだろう。お金をかけて時間を節約するか、時間をかけてお金を節約するかである。FOSSのサポートはそれほど高くない。いや、むしろ非常に手頃なのである。お金を払うべきところにはちゃんと払いつつも、FOSSを利用してTCO削減に取り組んで頂きたい!!

0 コメント:

コメントを投稿