最近、MOSS関連の仕事が舞い込んでくるんですが、いっぱい罠があるんですよね。
以下、戯言なので興味があれば見てみてください。諸事情で詳しい内容は書いてませんが。
一番の難点はIISを使っている事。業務でIISを使った事があるかたなら経験があるかと思いますが、メモリーの解放が下手なんですよね。特に最近のは更に酷くなっている気がします。.Netでサーバーアプリを作るから余計にそうなる傾向が強いように思います。
MOSSも.Netで出来ているので、とにかく重たい。どうやったらここまで重く出来るんだろうと思うくらい。そんで数万件のテストデーターを入れただけでどうしてって位メモリーを使用する。サーバーにWindows 2003 Enterprise Editionの32ビット版を使用するとメモリーのアロケートエラーが発生する。32ビットの壁である1プロセス当たり2GByteの制限を越えてしまうわけです。具体的に言うと問題がありますが、ある程度の規模になると毎日再起動が必須になるほどです。
じゃあ、64ビット版使えばいいじゃないかと言う話になるんだけど、一緒に稼動するアプリの関係で64ビットの採用はなかなか行われない。64ビットになったからといって解消されるわけではなく、そこに達するまでの時間稼ぎが出来るのが正直なところ。マイクロソフトが64ビット版を使えば時間稼ぎが出来るって言っているんだから間違えない。
でも、MOSSの構築は行われていく。風の噂ではノーツからの移行が多いようだ。なんでここまで安定しないサーバーアプリを使うのか。特に大きな所で。
MOSSは開発者泣かせのシステムである事だけは間違えない。一応、開発用のAPIのあるのだが、とにかく分かり難い。日本で使われ始めて日が浅いので、日本語の情報は皆無と言っていいほどない。何かわからない事があれば、海外のサイトを探すしか手段がないのが実情。設計する人間も内容がわからないが、その人達が描いたシステムを構築する人間は1日の殆どを検索に費やす。
いろいろシステムをいじっていると気がつくのは、データーの不整合が出やすい事。これが厳しいんですよね。例えばAというユーザーが管理しているサイトのあるデーターを削除しようとすると、削除できない。何ででしょうね。Aが管理しているサイトのデーターなのに。これも必ずなるわけではなく、何かのトリガーがあるようなのだが、調べきれない。
まあ、いろいろ不満を書いてみたが、決して悪いシステムではないので、一から設計し直して完成度を上げて欲しいと思う。
MOSSの仕事をする事になった場合には、SQL Serverのデーターは絶対に除かないほうがいいです。スパゲティー状態のスキーマーなので心が折れます。
2010になると2007の倍のデータを扱えるようになるらしいが、実用性があるかと聞かれれば、答えに困ります。
極端な話になりますが、C#でアンマネージドのC++に近いネイティブコードが吐き出せるようにならないと遅くて使う気がしない。更に言わせて貰えば、Windowsサーバーも先祖帰りして、CUGベースに戻しメモリーの消費を抑えて欲しい。特に仮想化が進んでいる現在では、サーバー本体でGUIベースの操作が必要なのか疑問を感じる。
ここで書いている事はマイクロソフトを否定しているわけではない。クライアントベースで考えると普通の人が普通に使えるOSだと思う。相方にLinuxベースのOSを使わせたら、文句言われるだろうな。「○○○なソフトをインストールしたのに、どこから起動すればいいの?」が連発しそう。
C#も悪い言語じゃないと思う。ただ、昔のVBやC++の用に開発者が望むものが簡単に使えなくなっているのは確かです。特にActiveXコントロールのラッパーは一部をわざ(手抜き?)と実装していない。まあ、検索すれば出てくるからそこまで問題になりませんけど。
C#など.Netを私が積極的に利用しようと思うためには、Visual Basic 6と同様かそれ以上の実行速度が出ないと厳しいかな。Javaよりは数百倍マシですが。所詮マルチプラットホームなんて幻想ですから。開発者が意識して作らない限りは。
なんかネガティブすぎる自分が悲しい。MySQLもオラクルの手に落ちて、今後データベースはどうなるのか。こっちもフリーでやっている身としては選択範囲が狭くなりそうで。この不景気ですからLinuxベースの開発もあるわけでMySQLが今までのような使い方が出来なくなったら、どうすればいいんじゃ~~~。
いろいろ表面上の話をしましたが、MOSS関連の仕事をする機会があったら、覚悟して望んでください。
哀れなエンジニアの独り言でした。