2010年07月23日(金) << 前の日記 | 次の日記 >>
これまでの07月23日 編集

■1 シリーズ・クロールとDoSの違いと業務妨害罪と(6) - レガシーの呪縛[http://www.nantoka.com/~kei/diary/?20100722S1][電子自治体][DoS][mashup][セキュリティ][LibraHack] このエントリーをはてなブックマークに追加

昨日までの議論や、 gutei氏の実験[http://gutei-blog.blogspot.com/2010/07/blog-httplibrahack.html] によって、岡崎市立中央図書館 のWebアプリケーションは、 アクセスが集中すると、一定時間、新たなアクセスを受け付けなくなる「仕様」 *1 である可能性が高まってきている。 せいぜい数千程度で限りがある「データベース接続」が使い果たされてしまうと、もはやアクセスを受け付けなくなってしまうという、 インターネットにつないで、無事に動くことを期待する方が無茶な仕様 だ。
この「仕様」がどうやって作りこまれたかは、やはり「レガシーの呪縛」によるものだろう。
以下、世の中そんなこともあるかも知れないという、フィクションの積りで読んで頂きたい。

普通のWebアプリケーション:

普通のWebアプリケーションでは、数千件程度アクセスが集中したからと言って、アクセスを受け付けなくなったりはしないし、仮に、処理能力を超える負荷が掛かって、エラーを生じることがあっても、負荷を取り除けば元の状態に速やかに復帰する。
これが、ごく当たり前のWebサービスの挙動だ。
あるページのリクエストを受けたら、データベースへの接続を行って、データベース処理で必要な情報を取り出し、データベースとの接続を解除する。
この繰り返しを行うのだから、 データベース接続が使用されるのは、ページのリクエストを受けてから、データベースでの処理を行い、処理を終了するまで、短ければ数10ミリ秒から、全文検索の様な重い検索を行った時でも、10数秒程度 *2 の占有時間で、この時間内に、数百から数千のデータベース接続数が埋まってしまうことはまず考えられない。仮に、瞬間的にアクセスが集中したとしても、今、行っているデータベース処理が終了すれば、順次、空きが出て、アクセスの集中が去れば速やかに元の状態に復帰する。

レガシーの呪縛:

その昔、クライアント・サーバシステムは、クライアントを起動して、サーバに接続して、様々な処理を行って、仕事が終わったら、ログアウトするか、クライアントを終了する…といったシステムだった。いわゆるレガシーシステムだ。
こういうシステムでは、利用者がクライアントを使用している間は、データベース接続は確保されたままになるが、利用者の数は決まっているのだし、データベース接続数に余裕が無ければ、「使い終わったらログオフしましょう」と教育を徹底すれば良い。
データベース接続をつなぎっぱなしにしておけば、毎回、ログイン処理を行わなくても良いし、検索の結果が数十ページに亘る場合でも、同じ接続を使っている間は、「さっきの続き」と言うだけで、次のページが読み出せる。
プログラムも簡単だし、性能も出る。こちらの世界でシステムを作っていると、「データベース接続を毎回切断するなんて考えられない」ということになる。

館内Webアプリケーションへの移行:

(7月26日、ストーリが分かりにくくなるため、この段落削除)

WebOPAC対応:

世の中、インターネットというものがブームになって来て、ウェブを使ってインターネットを通じて蔵書検索したいという要望が多くなってきた。
Webアプリケーションとして作り直す必要が生じたのだが、普通のWebアプリケーションで述べたような作りに移行しようとすると、データベース接続のタイミングなどを大きく見直さなければならなくなる。
さらに、検索の結果を複数ページに亘って見せる場合、データベース接続を使いまわす前提のシステムでは「前のデータ」「後ろのデータ」を簡単に取り出すことができるが、データベース接続を切ってしまうとなると、毎回、新たに検索が必要になるために、このための検索条件を管理する仕組みも必要になってくる。
いまさら、これだけの大変更を入れるのは大変だし、「データベース接続を毎回切断するなんて考えられない」世界にいたため、「毎回切断するのが常識」という話を聞いても、 プロジェクトマネージャーという名前のレガシー時代のプログラマには、その変更の必要性が理解できない。
また、Web検索機能はシステム全体にとっては、 おまけの様なものなので、そもそも、そんな大きな見直しは考えられない。
これまで作成してきた、VBアプリという「資産」を「活用」することができれば、より安く、早く移行ができる筈だという考えもあった。
といった様な事情で「Web検索に対応するために最低限」の作業で、Webアプリケーションに「移植」する方針が打ち出された。
幸いなことに、IISには「セッション」という仕組みがあって、同じユーザが接続している間は、「セッション変数」内に、データベースへの接続を保持することができる仕組みがあるので、これを使えば、データベース接続をつなぎっぱなしにすることができた。 データベースの後始末は、「セッション」が終了する際に行えば良い *3
導入当初は、ブラウザの挙動の違いによってうまく検索できないとか、海外からロボットがやってきて重くなるとか、検索が遅いと思って検索ボタンをもう一回押したら固まるとか、そういう問題があったけれども、 そもそも市民図書館の検索システムを使う人は大していなかったのか、非常に使いにくくできてるのが幸いして、誰も使いたがらなくなったのか、良く分かっている人はカーリル経由で使っているのか 、データベース接続の制限が問題になることなく、レガシーの呪縛を抱えたシステムが、インターネット上でサービスを提供し続けることになった。

図書館システムだけの問題か:

実は、自治体の多くのシステムにおいて、こういったレガシーの呪縛を抱えたままの、レガシーマイグレーションが行われつつあって、庁内的には「Webアプリ化しました」という状況だが、クライアント・サーバシステムのクライアントをブラウザに変えただけ、という、従来のシステムの「横移動」になっているところが多いと仄聞する。
今後、「電子自治体2.0」なり「自治体クラウド」という言葉に乗って、もう一度、自治体サービスのWeb化が進むだろうし、様々なことを考えれば、これは推進すべきなのだけれども、上記の架空の図書館のストーリーに見る様に、 横に移動するのではなく、Web向けのシステムとして再構築する勇気 を持たなければ、まともなシステムが作れないと考える。

7月26日付記:

以前のストーリーは、全く別のレガシーシステムにおける経験を基に、「C/S→庁内Web→インターネット」という流れにしていたが、 分かりにくいというご指摘[http://twitter.com/HiromitsuTakagi/status/19490504760] を頂いたので、少し、シンプルに直した。
ちなみに、上記のストーリーはフィクションなので、あくまで参考情報だが、 MELIL/CS[http://www.mdis.co.jp/products/melil/] の利用者検索端末の画面を見た感じ、専用クライアントの様だ。
*1: 「仕様」に皮肉の響きを感じ取って頂きたい。実装時の「バグ」は修正できるが、設計時の「バグ」は、もはや修正不可能な場合が多くて、それは「仕様」になることが多い。
*2: これだけの時間、データベース接続を独占するだけでも、Webアプリケーションの作りとしてはかなりひどい。
*3: 当時書かれた、IIS+VB ASPの「入門」には、その類のコードが散見されるし、プログラミングに関するQ&Aのページでも、この仕組みを前提とした質問が見られる。キーワードは「global.asa」。但し、本格的なシステムでは使うなと、当時も言われていた。

■ 関連記事

今日のつぶやき

以上、1 日分です。

指定日の日記を表示

前月 2010年07月 翌月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近の日記

2019年04月01日

新元号「令和」について

2019年03月23日

DXアンテナ ワイヤレスチューナー メディアコンセント DMC10F1

2019年02月17日

#例のグラボを活用する

2019年01月03日

シリーズ5・myHomeAlexaで自分のCDをかける

2018年12月25日

シリーズ4・英語の楽曲・アルバム・アーティスト名をカタカナに直す

2018年12月23日

シリーズ3: Echo Dotがやってきた

2018年12月19日

続・Echo Dotがやってきた

分野別タイトル一覧


全て
CLIP
SYA!nikki
book
freebsd
hns
magic
おさけ
おしごと
お買いもの
ぐる
ごはん
アクセシビリティ
オープンソース
セキュリティ
音楽
地域情報化
電子自治体
日記

keikuma on Twitter

keikuma Name:前田勝之
Location:長崎市
Web:http://www.nantok...
Bio:前田勝之(まえだかつゆき)。長崎在住。コンサル、SE、プログラマー、 なんとか株式会社代表、非常勤講師(情報セキュリティ)。 セキュアド、テクニカルエンジニア(SV,NW)。サーバ管理とWeb日記を10年ほど。 ネットとリアルの接点に関心あり。食べること・歌うこと・愛すること・作ること・飲むこと。おいしいものがぜんぶすき。

サイト内検索

Google AdSense

Powered by hns-2.19.9, HyperNikkiSystem Project