fbpx

メニュー

新興国ではISPがCDN的にふるまうらしい

高橋文樹 高橋文樹

この投稿は 9年半 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

先日、タイの仕事をやる機会があって、無事納品しリリースという段階になったのですが、最後の最後で罠が待ち受けていました。

今回はこんな感じの構成でのリリースを検討していました。

  1. リニューアルに伴い、サーバを移転する
  2. 新サーバにすべてのソースコードおよびデータが整ったら、hostsを切り替えて確認する
  3. 確認して問題なければ、ドメインにひも付けてあるネームサーバを切り替える

よくあるパターンですよね。このやり方だと、サービスが停止することがないため安心です。

ネームサーバ切り替えによるリリース
ネームサーバ切り替えによるリリース

僕の手元ではhostsの切り替えによる稼働を確認して、あとはネームサーバーの切り替えだけだわいとなったんですよ。

残る作業はお客さんに連絡して、Skypeで「こうやってhostsファイルを編集してください」って説明して、あとは「ほらできてるでしょ?」とドヤるだけ。ところがどっこい、いざ開いたら、なんとこんな感じに!

CSSと大半の画像が表示されない
CSSと大半の画像が表示されない

スタイルシートおよび画像がほとんど出てこないんですね。こちらのMacではちゃんと表示されているんですよ。でも、お客さんのPCでは明らかに出ていないんですね。

はてなんでだろうと不思議に思ったのですが、以前も「CSSがまったくぜんぜん更新されない」という事案が発生して、理由がよくわからなかったということがあったのですが、こんな仮説を立てました。

  • もしかして、ISP(インターネットサービスプロバイダ)が回線節約のために、静的リソースなどをキャッシュしてるんじゃないの?
  • で、hostsの書き換えを行なっても、画像とかCSSは旧サーバに見に行ってるんじゃないの?

では試してみようということで、次のような実験を行いました。

  • 旧サーバに中山きんにくんの画像をtest-img.jpgとしてアップロード
  • 新サーバに堀北真紀をtest-img.jpgとしてアップロード

期待する結果

  • http://example.co.th/test-img.jpg で画像が表示される
  • hostsの切り替えを行った場合、堀北真希が表示される
  • hostsの切り替えをオフにすると、中山きんにくんが表示される
  • 仮説(タイのISPがキャッシュしてる説)が正しかった場合、顧客のPCでだけ常に中山きんにくんが表示される

実際の結果

日本 タイ
hostsあり 堀北 きんにくん
hostsなし きんにくん きんにくん

どっちみちきんにくんやないかい!

というわけで、やはり仮説通り「ISPが静的リソースをキャッシュしている」ということになりました。hostsの書き換えを行なっているにもかかわらず旧サーバを見に行くということは、ネットワーク上のどこかであらためて名前解決を行なっているんですかね。

感想

日本のプロバイダ使っている限りはそんなことあんまりなくて、むしろキャッシュする方がめんどくさいんじゃないかとすら思うのですが、そうでもないんですかね。

確かに、タイみたいな新興国だとインフラもまだまだ整っていないので、そういう工夫もありなのかなあ、と思いました。

ただ、環境再現性が皆無な上、客の前に出して初めてわかる問題だったので、ちょっとびっくりしました。もしかしたら他の新興国でも同じような状況かもしれないので、海外の仕事をするときは気をつけて下さい。終わり。

[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。