プロセスその4

このあたりの䜜り方の仕組みは、Windowsでは殆ど継承されおいない。ずいうのは、WindowsではJobずいう抂念が必須のものではなくなっおいたからだ。実際Windows NT 4.0たでJobずいう抂念はなく、Windows 2000からJob Objectずいう圢で「新機胜ずしお」远加される圢になったからだ。6.6 ゞョブオブゞェクト(䞊巻P427)にこのあたりの話が蚘茉されおいるが、芁するに「必芁ならJob Objectずいう圢で耇数のプロセスをたずめお管理できる」ずいうのがその骚子であり、逆に蚀えば新芏プロセスの生成時に、それを含むJobが自動生成されるこずはない(䞊巻P352の図6-5でもこれは明らか)。これはなぜか、ずいえば䜿い方の違いがあったためだろう。以前も曞いたずおり、Jobずいう抂念は1぀の凊理が耇数のプログラムから構成されるケヌスが倚いずころでは必須だし、たたメむンフレヌムにおけるバッチ凊理の様な䜿い方をする際には䟿利だが、Windowsの様に原則ずしおむンタラクティブ凊理がメむンずなるケヌスでは、必ずしも䜿い勝手が良くない。

では䜕故WindowsにJobずいう抂念が远加されるようになったかずいうず、Windowsがバック゚ンドのサヌバヌなどにも䜿われるケヌスが倚くなっおきたからだ。Windowsで蚀えばDatacenter ServerずかCluster Serverずいった補品は、もはやGUIでむンタラクティブ凊理を行うには向いおいない。GUIはせいぜい運甚管理画面が出おいる皋床だろうし、それすらも集䞭管理で行うのが䞀般的だ。たた行う凊理も、GUIで動かすにはあたり向いおいない。䟋えば販売業であれば、日次凊理(その日1日の売り䞊げを〆る凊理)などがこれにあたるわけだが、小さな商店ならずもかく、日本䞭に支店を構える倧芏暡なチェヌン店の本店だず、売り䞊げ件数が数十䞇ずか、売り䞊げ金額も億ずかになるわけで、そんなものをGUIでいちいち芋おいおも仕方が無い。それよりは集蚈が終わっおから、たずめおレポヌトを出しおくれたほうが遥かにマシである。たた日次に合わせお圚庫の曎新ずか自動発泚、平均圚庫期間のレポヌト曎新、etc...など行うべき凊理は䞀杯ある。こうしたものを1぀のプログラムで順次行っおいたらキリがないので、圓然ながら耇数の凊理を同時に実行するずいった圢になるが、圓然ながら日次凊理が終わっおから圚庫の曎新、それが終わっおから自動発泚になるだろうし、これに䞊行しお日次凊理→損益集蚈ずか圚庫の集蚈→平均圚庫期間のレポヌト曎新なども行われる事になる。こうした耇数の凊理を手䜜業でやっおたら倧銬鹿なので、自動化を考えねばならない。こうしたものは、盞倉わらずバッチ凊理が有効だし、バッチ凊理そのものの制埡は各アプリケヌションにあわせお新芏で䜜るにしおも、ベヌスずなる郚分で耇数プロセスの管理をたずめお行えるJobの抂念を远加するのは有甚だ、ずいう刀断であろう。

もう䞀぀Jobの抂念が有効なのはClusterである。日本語では「粗結合マルチプロセッサ」などず呌ばれるが、芁するに耇数のマシンを比范的高速なネットワヌクで぀なぎ、党䜓でたずめお䜜業するずいった仕組みだ。各マシンは物理的には別々のOSが動いおいるが、環境は同じくしおいる。これで䜕をするのか? ずいう話はここで説明するよりもこちらを芋おいただいたほうが早いが、芁するにハヌドりェア障害があっおも䜜業を継続するための仕組みを提䟛するずいうものだ。Load Balancingでは、クラむアントからあるリク゚ストが発行され、それが特定のサヌバヌで動く(どのサヌバヌで動くか、は動的に決定される)事になるが、かりにその最䞭にサヌバヌが物理的障害でダりンするず、出したリク゚ストが垰っおくる事はない。たぁこれはクラむアントがリク゚ストを再送すれば良いずいう話(Webずかだずこれは通垞蚱容される)が、Clusterの堎合その先を行く。぀たりあるCluster Memberがダりンした堎合、そのMemberが実行しおいたJobを他のMemberが匕き取っお継続する、ずいう仕組みが提䟛される。先のペヌゞにもあるずおり、これは完党なFail Overではない(぀たりあるJobが実行䞭にダりンしお他のMemberが匕き継いだ堎合、原則ずしおそのJobは最初からやり盎しになる)ものの、「朝来たらマシンが止たっおいお、Jobは䜕も終わっおいない」ずいう事態は避けられる事になる。

こうしたCluster環境では、そもそもProcess単䜍での管理はそぐわない。Processはある特定のOSの範囲でしか動䜜しないからだ。ずころがJobの堎合、これをCluster党䜓で管理する圢に拡匵するこずが可胜であり、実際Windowsにしろ、VMSにせよ、Cluster Wide Jobずいうものが存圚する。本曞ではこうしたCluster Wide Jobに぀いお説明が無いが、こちらにはWindows Server 2003ベヌスでのCluster Wide Jobの䜿い方の説明がある。こうしたものを利甚可胜ずするために、Windows 2000以降でJobの抂念を远加したのであろう。(続く)