2021年 春期 応用情報技術者試験 問5

チャット機能の開発

E 社は,旅行商品の企画,運営,販売を行う旅行会社である。E 社の旅行商品は,自社の販売店と販売代理会社の販売店を通して販売している。販売店に顧客が来ると,販売スタッフが E 社の旅行販売システムを利用して,顧客の要望に合う旅行商品を検索し,顧客に提案している。また,顧客からの旅行商品に関する質問の回答が分からない場合,E 社の販売店向けコールセンタに電話で問い合わせることになっているが,販売店からは"コールセンタに電話が繋がらない"などの苦情が出ている。

そこで E 社は,販売店とコールセンタのスタッフがテキストメッセージで相互にやり取りできるチャット機能を,旅行販売システムに追加することにした。チャット機能の開発は,E 社システム部門の F 君が担当することになった。

ネットワーク構成の調査

F 君は,チャット機能を開発するに当たり,現在のネットワーク構成を調査した。図 1 に F 君が調査したネットワーク構成(抜粋)を示す。

図1 F君が調査したネットワーク構成(抜粋)

旅行販売システムは,2 台の AP サーバと負荷分散装置から構成されている。負荷分散装置は AP サーバの負荷を分散させるために利用される。DNS サーバの A レコードには,旅行販売システムの IP アドレスとして a が登録されている。

販売代理会社の販売店の PC から旅行販売システムへの通信は,FW,ルータ,プロキシサーバを経由している。FW#3 では,NAPT を行い,宛先ポートが 53 番ポート,80 番ポートまたは 443 番ポートで宛先ネットワークアドレスが 10.10.0.0 の IP パケットとその返信 IP パケットだけを通信許可する設定となっている。

販売代理会社の販売店の PC が HTTP を利用して旅行販売システムにアクセスする場合,プロキシサーバは PC から受信した GET メソッドを参照して,AP サーバへ HTTP リクエストを送信する。一方,HTTP Over TLS を利用する場合は,プロキシサーバは旅行販売システムの機器と TCP コネクションを確立し,①PC から受信したデータをそのまま送信する

また,販売代理会社の販売店の PC から旅行販売システムへアクセスする場合,PC から FW#4 に送信される IP パケットの宛先 IP アドレスは b となり,代理会社接続ルータから FW#1 に送信される IP パケットの送信元 IP アドレスは c となる。

チャット機能の実装方式の検討

次に F 君は,チャット機能の実装方式を検討した。チャット機能を実装する場合,旅行販売システムで利用している ②HTTP では実装が困難である。そこで F 君は,チャット機能の実装のために WebSocket について調査を行った。図 2 に F 君が調査した WebSocket を利用した通信(抜粋)を示す。

注記 図中の PC は,E 社販売店の PC と販売代理会社の販売店の PC を指す。

WebSocket を利用すると,PC と AP サーバの間の HTTP を用いた通信を拡張し,任意フォーマットのデータの双方向通信ができる。WebSocket を利用するためには,PC から AP サーバに HTTP と同様の GET メソッドを送信する。この GET メソッドの HTTP ヘッダに "Upgrade: websocket" と "Connection: Upgrade" を含めることで,PC と AP サーバの間で WebSocket の接続が確立する。接続が確立したら,PC と AP サーバのどちらからでも,テキストメッセージを送信できる。

この調査結果から F 君は,IRC(Internet Relay Chat)プロトコルや新たにチャット機能専用のプロトコルを利用する場合と比較し,③WebSocket を利用することで販売代理会社の FW やルータの設定変更を少なくできると考えた。

チャット機能の設計レビュー

F 君は,AP サーバにチャット機能を追加するための設計を行い,上司の G 課長のレビューを受けた。レビューの結果,G 課長から次の 2 点の指摘があった。

指摘 1. WebSocket は TCP コネクションを確立したままにするので,負荷分散装置を経由してチャット機能へアクセスすると,旅行販売システムの既存機能へのアクセスに影響がある。

指摘 2. チャット機能を WebSocket Over TLS に対応させないと,販売代理会社からプロキシサーバを経由してチャット機能にアクセスできない。

F 君は指摘 1 について,チャット機能では負荷分散装置を使わないことにし,E 社データセンタ内にある機器を利用した ④ほかの負荷分散方式に変更した

次に指摘 2 について,WebSocket を利用した通信では TCP コネクションを確立したままにする必要があるので,プロキシサーバの HTTP Over TLS のデータをそのまま送信する機能を利用することで,プロキシサーバ経由でチャット機能が利用できる。

そこで,F 君は TLS 証明書を d にインストールし,チャット機能の通信を HTTP Over TLS に対応させた。

その後 F 君が,チャット機能を旅行販売システムに追加したことで,販売店でのチャット機能の利用が開始された。

出典:令和3年度 春期 応用情報技術者試験 午後 問5