19 Mar 2016, 23:24

Github Pagesを今更作った話と、独自ドメイン適応時の通信のこと

今更ながらgithubページでプロフィールサイトを作った。
(もう少しデザインブラッシュアップしたい…)

mosuke tech

また、独自ドメイン(カスタムドメイン)の設定やその仕組みをおっている時に、
独自ドメイン適応時の通信について面白いことがわかったのでかく。

求めていたもの

  • ブログとか作ったプロダクトをまとめたかった
  • 極力シンプルでメンテしやすいものがよかった
  • でもレスポンシブなデザインがよかった

どのようにつくったか

上の条件を満たすために以下の2パターンのどっちで作ろうか迷った。

  • Jekyllなどを使いテンプレートを使って作る
  • CSSフレームワークのみ利用し、あとは自分で作る

1ページだけのシンプルなプロフィールサイトがよかったので、
Jekyllとか複雑なものは利用したくないと考えた。

また、CSSフレームワークだが、いつもよくTwitterBootstrapを使っているので、
それ以外のものでやってみようと考えた。

その結果、行き着いたのがSkeletonだった。
Skeletonは"A dead simple, responsive boilerplate."をうたっているものでよかった。

カスタムドメインの設定

デフォルトだとmosuke5.github.ioのURLが利用できる。
しかし、この前mosuke.techといういい感じのドメインを安く手に入れてたので、カスタムドメインの設定を行うことにした。

カスタムドメインの設定方法は以下のみだ。

  1. レポジトリにCNAMEファイルを作成する $ echo mosuke.tech > CNAME
  2. DNSの設定:Aレコードに192.30.252.153192.30.252.154を追加

(本家ドキュメント)
Setting up an apex domain - User Documentation

カスタムドメイン設定時の通信について

カスタムドメインがどのような仕組みで実現されているのか気になって、
いろいろと調べている時にあることに気づいた。

Aレコードに登録したIPアドレスを逆引きで調べると、pages.github.comが出てくるが、
pages.github.comをdigすると違う結果が返ってくる。

$ dig -x 192.30.252.153
;; ANSWER SECTION:
153.252.30.192.in-addr.arpa. 3600 IN    PTR pages.github.com.

$ dig pages.github.com
;; ANSWER SECTION:
pages.github.com.   900 IN  CNAME   github.map.fastly.net.
github.map.fastly.net.  23  IN  A   103.245.222.133[f:id:mosuke5:20160319233634j:plain] 

後者のほうでは、fastly(CDN)の結果が返ってくる。
つまり、カスタムドメインを設定しなければ、通常はCDN経由で通信されるが、
カスタムドメインを割り当てるとCDNを利用できないのではないかということがわかった。

実際にPingで確かめてみる。明らかに速度差がでている。

% ping mosuke5.github.io
PING github.map.fastly.net (103.245.222.133): 56 data bytes
64 bytes from 103.245.222.133: icmp_seq=0 ttl=58 time=18.485 ms
64 bytes from 103.245.222.133: icmp_seq=1 ttl=58 time=19.108 ms
64 bytes from 103.245.222.133: icmp_seq=2 ttl=58 time=18.709 ms
64 bytes from 103.245.222.133: icmp_seq=3 ttl=58 time=19.161 ms
64 bytes from 103.245.222.133: icmp_seq=4 ttl=58 time=20.574 ms


% ping mosuke.tech
PING mosuke.tech (192.30.252.154): 56 data bytes
64 bytes from 192.30.252.154: icmp_seq=0 ttl=52 time=203.329 ms
64 bytes from 192.30.252.154: icmp_seq=1 ttl=52 time=205.535 ms
64 bytes from 192.30.252.154: icmp_seq=2 ttl=52 time=203.178 ms
64 bytes from 192.30.252.154: icmp_seq=3 ttl=52 time=201.345 ms
64 bytes from 192.30.252.154: icmp_seq=4 ttl=52 time=205.125 ms 

また、それぞれのIPアドレスから場所も調べてみた。
CDN利用時がオーストラリア、そうでないとアメリカ西海岸ということがわかった。 www.iputilities.net

以上のことをまとめつつ、地図に表した。 f:id:mosuke5:20160319233634j:plain

オーストラリアとアメリカ西海岸だとそんなに直線距離は変わらない気もするけど、
CDNの力なのかルート的な問題ないのかPingの応答速度は10倍ほどの差があった。

カスタムドメインを使うと遅くなる!?(まあ全然いいんだけど…)

最後に

CDNの仕組みとかいまいち忘れてしまったので、アカマイ本を読み返したい。

このエントリーをはてなブックマークに追加