Alaska とはAutoWebを支える IBM iのために開発されたHTTPサーバーです。
Web上でも5250エミュレータのセッションを維持するための
特別な機能があります。
AutoWebをご利用になる上でAlaskaを特に意識する必要はありませんが
製品の特質をより理解して頂くにはAlaskaを知って頂くことも大切です。
AlaskaはAutoWebを支える重要なアーキテクチャーのひとつです。
- Webはパフォーマンスが命です -
HTTPサーバー:IBM Apache は伝統的なTCP/IPサーバーであるのに対し
AlaskaはIBMが将来のTCP/IPサーバーの理想型として推奨するメッセージ配布型です。
Apacheとは1995年に開発されたJavaベースのフリー(無料)のオープン・ソース・プロジェクトとして共同開発して
リリースされたWebサーバーのソフトウェアであり IBM ApacheはこのApache2.0をIBM i用にPORTING(移植)されたものです。
IBM も初めはIBM HTTP Serverとしてスタートしましたが後にApache を移植して2000年に IBM Apacheとしましたが
このころはPTFなしではほとんど動作しませんでした。
Apacheは次にどの子スレッドに処理をさせるのかは
子スレッドが待ち行列に自分のIDを投入しておいて
親スレッドがこれを順番に引き出すというPULL-DOWN方式によって決定されます。
ところがある子スレッドがトラブると子スレッドは待ち行列に
自分の順番を入れることができません。
そうなると親スレッドはいつまでたっても次の利用可能な
子スレッドを引くことができません。
こうしてHTTPサーバー全体が凍結してしまいます。
解消するには全体を再起動するしかなくなります。
このようにひとつの子スレッドのトラブルが全体の停止に繋がってしまいます。
かつてのWindows95もCPUのタイムを子スレッドに分割していたため
ひとつのアプリがトラブるとWindows全体を再起動するしかありませんでした。
同じことがApaceでも起こるのです。
いかにApacheが脆弱であるかお分かりでしょう。
Alaskaの親スレッドはクライアントからの着信要求を受け取るだけです。
各クライアント相手の入出力処理はすべてそれぞれの子スレッドが
直接対話して行います。
親スレッドにはほとんど負担はなくそれぞれの子スレッドに処理が
分散されて同時並行で通信が行われます。
つまり理想的な負荷分散が行われているのです。
だからパフォーマンスに優れたサーバーとなります。
Alsakaは㈱オフィスクアトロが開発した独自のHTTPサーバーです。
初めはApache2.0と同じ構造で2001年にリリースされましたが2006年に将来を見据えてVer4.0でメッセージ配布型の
Webサーバーとして全面的に改訂されました。
以降、対話式仮想環境やクロス・ブラウザ対応やスマート・コネクションを搭載して今日に至っています。
HTTPサーバーの処理はよく銀行の窓口の処理に例えられます。
従来型のApacheの場合は後ろに多くの銀行員が待機しているのに
お客さまの応対をしているのはたった一人の窓口の担当員だけです。
お客さまへの入出納を行うのはこの一人の担当だけです。
後ろに控えている銀行員は手が空いているのに窓口だけが
忙しいので結局はどのお客さまも待たされたままになります。
これに対してメッセージ配布型は今、多くの銀行で行われているような
受付カードを取る方法とよく似ています。
受付窓口では受付カードによってお客さまを受け付けるだけです。
その後は手が空いている銀行員が誰でもお客さまと応対します。
実際の銀行とちがうところはすべての控えの銀行員がすべての処理を行うところです。
このように同時並行処理が可能なことによって
お客さまを待たせることなく全体の処理をスムースに行うことができます。
これがApacheとAlaskaのちがいです。
AlaskaおよびAutoWebは不定期でソースのパフォーマンス・テストを行っています。
これはパフォーマンスを低下させるロジックが含まれていないかどうか
ボトル・ネックになっているロジックはどこかのソース・コードを不定期でつねに調べるためです。
少しでも軽く速くなるようチューニングが行われます。
Webはパフォーマンスが命です。
正しく動作するだけでなく速く動作することも求められるのです。
IBM Apacheでは障害が発生するとHTTPサーバー全体を終了して
再起動させなければなりません。
これはサブ・システム QINTERを再起動させるのと同じことであり
他の業務も停止してしまいます。
Alaskaはメッセージ配布型なので障害のある子スレッドだけのキャンセルだけで済みます。
さらに子スレッドをキャンセルすると親スレッドはそれを検知して
新しい子スレッドを生成します。
またクライアント要求が過度に集中した場合も子スレッド数が
自動的に必要な数だけを増やして要求に応えるよう設計されています。
このような堅牢な設計におかげでお客さまは安心して運用することができます。
5250環境をWebでも再現するためにスマート・コネクションと呼ばれる
独自の通信手段を組込みました。
スマート・コネクションは子スレッドのJOB番号でクライアントと
子スレッドを仮想的に結合しています。
通常は通信は切断されたままです。
ですから通信環境の悪い状況でも問題は発生しません。
あたかも通信が持続しているかのような処理になりQTEMPや*LDAも
生かすことができます。
現在の市販のブラウザのほとんどはタブ・ブラウザですが
通信のためのSocket識別子はひとつしかありません。
これは多くの人々が電話するのに電話回線が一本しかないのと同じことです。
従って他の市販の製品では複数のセッションを同時に使うことは
できません。
しかしAlaskaならスマート・コネクションのおかげで通信は切断されていますので
Socket識別子がひとつであることも何の問題にもなりません。
どのような数の複数のセッションも同時に接続が可能になります。
このように複数セッションが使えるのはAutoWebだけです。
タブ・ブラウザ
インターネットでは様々な種類のブラウザがありますが
古い製品ではいまだにMS-IEのみの対応というのもあります。
Alaskaは
など多くのブラウザに対応しており今後も新しいブラウザのサポートを行います。
AutoWebは実際に運用してみてパフォーマンスが悪いとか
Xボタン問題やタブ・ブラウザによる入れ違い現象に悩まされるといった
予想外の問題が頻発するようなことはありません。
むしろ予想以上にパフォーマンスが良いと感じて頂けるような製品です。
いつも問題なく安全に運用できるのも背景でのAlaskaの品質と高度な技術が
お客さまの毎日を支えているからです。
HTTPサーバーが
そんなに大切だなんて
知らなかったワ
陰で支えてるのが
HTTPサーバーだし
これまでの運用実績が
あるんだ。
Alaksaはもう海外にも
輸出されて使われてるって
本当なの?
ああ本当だよ。
もう既に東南アジアや
中国でもAlaskaは
使われて活躍してる。
日本の製品がそんなに
海外でも活躍してるなんて
スゴイことよね!
それも品質が安定してるから
いろいろな環境でも
安心して使えるんだよ。
そう言えはうちでも
HTTPサーバーがトラブった
とか暴走したとか
聞かないわよネ?
安定した稼動してるから
安心して毎日の
業務に使えるんだ。
ホントに安定、安全って
大切なのね!!
今日は勉強になりました。