勉強日記

チラ裏

【追記しました】Qiitaのインフラを掘った


動機

「退会してもログインできる」
「3回退会してようやく退会できた」

というツイートを見かけ、

「ステートごとスケールアウトしてて同期取れてないとかだったら面白いな~」
「普段誰も退会・ログアウトしないし気づかないよな~」

と思って調べてみた

結論、この当て推量に対する答えはないです

digる

dig qiita.com. A
; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> qiita.com. A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56568
;; flags: qr rd ad; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;qiita.com.         IN  A

;; ANSWER SECTION:
qiita.com.      0   IN  A   54.95.187.108
qiita.com.      0   IN  A   18.176.85.249
qiita.com.      0   IN  A   52.199.34.118
ns-171.awsdns-21.com.   0   IN  AAAA    2600:9000:5300:ab00::1
ns-772.awsdns-32.net.   0   IN  AAAA    2600:9000:5303:400::1
ns-1049.awsdns-03.org.  0   IN  AAAA    2600:9000:5304:1900::1
ns-1956.awsdns-52.co.uk. 0  IN  AAAA    2600:9000:5307:a400::1
ns-171.awsdns-21.com.   0   IN  A   205.251.192.171
ns-772.awsdns-32.net.   0   IN  A   205.251.195.4
ns-1049.awsdns-03.org.  0   IN  A   205.251.196.25
ns-1956.awsdns-52.co.uk. 0  IN  A   205.251.199.164

;; Query time: 8 msec
;; SERVER: 172.31.240.1#53(172.31.240.1)
;; WHEN: Thu Mar 26 10:41:23 JST 2020
;; MSG SIZE  rcvd: 428
  • まずAWSを使っていることがわかる

読み解く

Route53

ns-171.awsdns-21.com.    0   IN  AAAA    2600:9000:5300:ab00::1
ns-772.awsdns-32.net.   0   IN  AAAA    2600:9000:5303:400::1
ns-1049.awsdns-03.org.  0   IN  AAAA    2600:9000:5304:1900::1
ns-1956.awsdns-52.co.uk. 0  IN  AAAA    2600:9000:5307:a400::1
ns-171.awsdns-21.com.   0   IN  A   205.251.192.171
ns-772.awsdns-32.net.   0   IN  A   205.251.195.4
ns-1049.awsdns-03.org.  0   IN  A   205.251.196.25
ns-1956.awsdns-52.co.uk. 0  IN  A   205.251.199.164

ドメインDNS レコードを格納できるホストゾーンを作成します。
ホストゾーンが作成されると、高水準の可用性を実現するために、4 つの異なるトップレベルドメイン (TLD) で 4 つの Route 53 のネームサーバーを受信します。

  • WHOISすると、香港に1つ、バージニアに1つ、ワシントンに2つ置かれていることがわかる

EC2

qiita.com.       0   IN  A   54.95.187.108
qiita.com.      0   IN  A   18.176.85.249
qiita.com.      0   IN  A   52.199.34.118
IPv4アドレス 逆引きドメイン
54.95.187.108 ec2-54-95-187-108.ap-northeast-1.compute.amazonaws.com
18.176.85.249 ec2-18-176-85-249.ap-northeast-1.compute.amazonaws.com
52.199.34.118 ec2-52-199-34-118.ap-northeast-1.compute.amazonaws.com
  • いずれもap-northeast-1リージョンのEC2インスタンスを指している
  • 1a, 1c, 1dのマルチAZとかかな?

わかった範囲での構成図

f:id:wand_ta:20200326112645p:plain

  • 裏側のことは一切わからないが、ここまではわかった
  • 追記 を参照のこと

なんでこうしないんだろう

f:id:wand_ta:20200326112710p:plain

  • ELBを使った構成の利点
    • スケールのしやすさ
      • スケールアウト/スケールイン時にいちいちAレコード追加/削除したくないですよね
    • ELBでTLSを終端できる
  • Route53で振り分ける理由としてマルチリージョンフェイルオーバーが挙げられるが、そうもなっていない
  • なぜELBを使わずにRoute53で振り分けているんだろう…安くあがるから?

追記

  • ALBだけ立てて検証してみた

f:id:wand_ta:20200326132050p:plain

f:id:wand_ta:20200326132102p:plain

f:id:wand_ta:20200326132112p:plain

  • 立てた覚えのないEC2インスタンス
  • ELBはリージョンサービス…に見せかけて、その実態はMulti-AZ、AutoScalingなAZサービスである
  • ので、おそらくELBが動いているEC2インスタンスの名前なのだろう
    • PTRの逆引き名がec2-*に統一されていると考えられる
  • 以上を踏まえると、Qiitaのインフラはおそらくこう

f:id:wand_ta:20200326132926p:plain