今回は SKYDIV Desktop Client の HTTP ゲートウェイサーバーのフレームワークや負荷分散の仕組みをご紹介します。
前回の記事
はじめに
HTTP ゲートウェイサーバーは下記の図のように、異なるネットワーク間でデータを中継する機能を持つため、インターネットからアクセスできる環境に構築する必要があります。
このため、クラウドや会社の DMZ のサーバーで動作できる構成を検討しました。
使用しているフレームワークについて
HTTPゲートウェイサーバーの作成時は SKYDIV Desktop Client の既存のフレームワークを活かす形で、下記のフレームワークを検討しました。
- 独自実装
- SignalR
- Socket.IO
- Apache Kafka
HTTP ゲートウェイサーバーに求める機能がシンプルな1対1の中継機能で、かつ画面転送などの低レイテンシーも求められていたため、最適化しやすさなども考慮し「独自実装」を選択しました。
上記の構成で目標の低レイテンシーを実現しています。
負荷分散について
HTTP ゲートウェイサーバーは画面データなど比較的大きなデータを低レイテンシーで中継する必要があるため、ロードバランサーなどと組み合わせることで、負荷分散できる仕組みを用意しています。
「自宅のPC」や「オフィスのPC」と HTTP ゲートウェイサーバーの間にロードバランサーを設置することで負荷分散を行いますが、そのままでは、別々の HTTP ゲートウェイサーバーに接続してしまう可能性があります。
HTTP ゲートウェイサーバー間でデータを中継する方法もありますが、その場合ネットワークを介した通信が行われることになるため遅延時間が増加してしまいます。
そこでペアリングとデータ中継の接続を分けるようにしました。
ペアリング時は情報を共有して別々のサーバーでもペアリングできるようにします。
その後のデータ中継はサーバーを指定して接続できるようにすることで、同じ HTTP ゲートウェイサーバーに接続します。
これにより負荷分散をしつつ低レイテンシーのデータ中継を実現しています。
最後に
全3回にわたって HTTP ゲートウェイサーバーについてご紹介いたしました。
HTTP ゲートウェイサーバーはあまり表には出てこない機能ですが、異なるネットワークを結びつける重要な機能の一つです。
ゲートウェイサーバー方式を採用することによって、ファイアウォールで守られたネットワーク間でも通信できるメリットも享受しながら、低レイテンシーも実現する機能となっています。
最後まで読んでいただきありがとうございました。