調査:ジャバのコンテンツ配布技術
「あなたとJAVA, 今すぐダウンロー」「ド」で有名な https://java.com/ja/ ですが、130億のデバイスにジャバを配布しつづけるそのサービスのスケールは、我々が普段扱うサービスと比較しても大きいといえるはずです。一体どのような技術が使われ、このようなスケールのジャバ配布が実現されているのでしょうか。本日はその核心に迫ってみたいと思います。
java.com は誰がホストしているのか
java.comのサービスはオラクルの新社屋にあるのでしょうか。これは単純にDNSから答えを出すことができました。
$ dig a java.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.51.amzn1 <<>> a java.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21399
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;java.com. IN A
;; ANSWER SECTION:
java.com. 20 IN A 23.212.82.138
;; Query time: 155 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Jan 3 16:01:31 2017
;; MSG SIZE rcvd: 42
$ dig -x 23.212.82.138
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.51.amzn1 <<>> -x 23.212.82.138
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3389
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;138.82.212.23.in-addr.arpa. IN PTR
;; ANSWER SECTION:
138.82.212.23.in-addr.arpa. 60 IN PTR a23-212-82-138.deploy.static.akamaitechnologies.com.
;; Query time: 137 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Jan 3 16:01:37 2017
;; MSG SIZE rcvd: 109
というわけで、java.com はakamaiを使っています。これは普通にNetStorageで契約した時と同じような名前のホストなので、残念ながらAkamaiのどのサービスを使っているかまではわかりません。
どんなサーバーを使っているのか
HTTPのヘッダを見てみましょう。
$ curl -H 'Accept-Encoding: gzip' -I https://java.com/ja/
HTTP/1.1 200 OK
Server: Oracle-Application-Server-11g
Last-Modified: Sat, 17 Sep 2016 01:00:22 GMT
device_type: Any
host_service: FutureTenseContentServer:11.1.1.8.0
X-Powered-By: Servlet/2.5 JSP/2.1
Content-Type: text/html; charset=UTF-8
Content-Language: en
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Tue, 03 Jan 2017 07:06:18 GMT
Content-Length: 20
Connection: keep-alive
Server: Oracle-Application-Server-11g
というヘッダはOracle Fusion Middleware Application Server 11gから出てくるらしいです。正直ウェブのこと良く知らないんで、これがどういうものか謎ですが、邪悪な雰囲気は伝わってきます。また、host_service: FutureTenseContentServer:11.1.1.8.0
もCMSか何かっぽいんですが、ジャバサイトがほとんど更新されないところを見るとほんとうにこんなCMSなんていうものが必要なのか、疑問に思ってしまいます。
ちなみに、FutureTenseはFatWireに吸収され、FatWireはOracleに吸収されているらしいです。java.comを作る際のミーティングで「何か適当なCMS入手しておいて」と頼まれたのを勘違いして、CMSやってる会社を買っちゃったパターンでしょうか。謎は深まります。
ちなみに、NetStorageではリクエストヘッダにPragma:
を入れると診断用のヘッダが返って来ますが、ジャバサイトではそういうことはありませんでした。いずれにしてもこのボリュームだとかなり特殊な契約になりそうなので、ジャバリークスからの報告待ちです。
結論
あなたとジャバをいつでもダウンロードできるようにする舞台裏、お楽しみ頂けたでしょうか。