2022年から2023年にかけて南極のマクマード基地やアムンゼン・スコット基地でITプロジェクトに従事していたbrr氏が、南極の低速回線で使いにくかったサイトについてブログに投稿しました。

Engineering for Slow Internet

https://brr.fyi/posts/engineering-for-slow-internet



南極ではインターネットへの接続を通信衛星に頼っており、基地全体での通信速度が数十Mbpsに制限されていました。2023年にStarlinkの利用が開始されて一部の基地では状況が改善されたものの、基地にいる約1000人の職員が使える回線容量の合計は、先進国の一般的な4Gネットワークで1人が使用できる帯域幅より小さかったというわけです。



南極点にあるアムンゼン・スコット基地では2023年末時点でまだStarlinkを使用できないうえ、さらに1日のうち衛星が地平線上に上がる数時間しかインターネットに接続できないとのこと。また、衛星は何千kmも上空にあるためパケットの遅延がひどく、一般的なサイトにアクセスするだけで往復750msもかかってしまいます。



brr氏は南極の通信環境を下記のようにまとめました。

・パケットの往復に平均750msかかり、パケット間のジッタが数秒を超えることもある

・エンドユーザーのデバイスで利用可能な速度は数kbps程度で、調子が良い日には最大2mbps出ることもある

・通信は非常に混雑しているあらゆるプロバイダよりもはるかに混雑しており、パケットの遅延やドロップがよく発生する

・頻繁に接続が切断されるほか、基地での必須の通信が優先されることがある

こうした環境でウェブサイトを閲覧するのは大変なものですが、brr氏はエンドユーザーへの影響の多くが「環境よりも低速・低品質なインターネットからのアクセスを想定していないウェブエンジニアの設計によって引き起こされている」と述べ、南極からアクセスしにくいサイト設計の特徴を以下のように指摘しています。

brr氏が問題とした最初の設計は「タイムアウトがハードコードされていること」です。brr氏がチャットするためにとあるサイトを開こうとすると、約20MBのJavaScriptを読み込む必要がありました。ブラウザは遅いインターネットに対応しており、回線から比較すると巨大なデータでもゆっくりと読み込んでいきます。

しかしbrr氏が開こうとしたサイトには開発者が独自のタイムアウトを組み込んでおり、タイムアウトがトリガーされるとエラーページへリダイレクトした上でロード中のデータを全て破棄し、さらにキャッシュを無効化するという対策が行われていました。



他にも、brr氏はあるデスクトップアプリケーションが起動しない原因を探っていた時にも同様の問題を検出。固定値でハードコードされたタイムアウト値のせいでロードに何度も失敗していました。



brr氏はタイムアウトを徐々に長くしたり、タイムアウトが発生したことを伝える仕組みを導入したり、ユーザーが必要なデータを手動でダウンロードしてインストールしたりする仕組みが必要だと述べています。

brr氏は問題としてもう一点、「アプリに組み込まれた独自のダウンローダー」を取り上げています。特定のアプリの中には、下図の様にアプリ内にダウンローダーが組み込まれていることがあります。



アプリ内ダウンローダーは「一時停止/再開機能」「状態通知」「再試行ロジック」「進行状況の追跡」などに問題があることが多いうえ、一定時間内に完了しないとキャンセルされてしまう設計になっていることも。



brr氏はこの問題に対して、「ユーザーが独自のダウンローダーを利用できるようにファイルへのリンクを用意するべき」と述べました。リンクがあればユーザーはブラウザなどの強力なダウンローダーを使用できるほか、ダウンロードしたファイルを複数のデバイスで共有したり、柔軟にダウンロードのスケジュールを調整したりすることができます。



brr氏は今回の投稿について、「南極のようなエッジケースの最適化に膨大な時間を費やすことは求めていない」としつつ、「インターネットの遅い場所では大きな問題になりうる要素がある」と述べました。