− 新技術の内容を教えてください。
|
川本: 最も大きなポイントは、同一サーバ内で2つのWebアプリケーションを切り替える方式を採用したことです(図2)。例えばA1という現用系のWebアプリケーションで不要なメモリーが蓄積してきたら、ユーザーからの新しいサービス要求をA2という同じ内容のWebアプリケーションで実行するように切り替えます。切り替え後、A1のWebアプリケーションは停止し、破棄されます。これを繰り返せば、一瞬たりともサービスを停止することなく、蓄積された不要なメモリーを解放することができるのです。2つのWebアプリケーションが稼働するといっても、1台のサーバ内で完結する話ですから、OSやミドルウェア、使用するメモリーも共通で、特別にリソースを追加する必要はありません。
|

図2 開発方式
|
中村: 先ほども言ったように、複数のサーバ間で現用系と代替系を切り替える方法では、高負荷時にWebアプリケーション全体の処理性能が大幅に低下してしまいます。しかし新方式ではサーバを切り替える必要がないため、処理性能はそのまま維持されます。切り替え時の性能低下はほんのわずかで、サービス品質も損なわれません。
|
− どのような技術を適用することで、今回の方式が可能となったのでしょうか。
|
川本: Webアプリケーションには固有のURLがついており、ユーザーからはそれを識別子としてアクセスする形となっています。ですから同じWebアプリケーションを2つ、同一サーバ上で実行しようとすると、従来ならURLが同じため衝突してしまいます。そこで、実体としては2つあるWebアプリケーションを、あたかも1つに認識させるような仮想化技術を使い、ユーザーからは今まで通りのURLでアクセスしても、システムの入り口に設けたリクエスト転送部が必要に応じて現用系もしくは代替系のWebアプリケーションにリクエストを分けていくという仕組みを考案しました。
|
− 非常にシンプルな考え方ですね。ただ、今までだれも気づかなかった。
|
川本: そうですね。同じノード内で2つの処理を実行させるというアイデアは、もしかしたら“コロンブスの卵”だったかもしれません(笑)。ただし、この発想を実際のシステムとして実現させるには、いくつかのハードルがありました。例えば、ミドルウェアとうまく連携しながら複数のWebアプリケーションを起動する仕組み、リクエストの転送技術、そしてショッピングカート内の商品を記憶しておくような内部情報を2つのWebアプリケーション間で共有する技術。さらには、これらの処理を行っても性能を低下させないための細かなチューニング。それらをすべてクリアしたことで、シミュレーションによる評価でも、切り替え時の性能低下を数%程度に収めることに成功しました。
|