今日はAWSの「世にも奇妙な物語」を語ってみたいと思います。
マニアックな話なので、あまり知られていないネタです。
2021年アドベントカレンダーとして今年を振り返りつつ、AWSで知っておいた方が良い豆知識も散りばめていますので、ぜひ最後までご覧ください。
はじめに。AWSのアベイラビリティゾーンとは?
AWSとは?
AWS(Amazon Web Services)はご存じでしょうか。
TV放送の裏側にTV局や電波塔があるように、皆さんが毎日使っているスマホアプリやWebサービスの裏側には「ITインフラ」があります。そのITインフラを置いておく場所として、最近はパブリッククラウドが多く採用され、AWSはその中でトップシェアのクラウドサービスです。
(皆さん毎日AWSを使っているはずなのに全く見えません。目に見えないものを説明するのは本当に難しいです。説明するたびに全然伝わってない空気を感じるので、上記説明がピンと来なかったとしても許してください...笑)
アベイラビリティゾーンとは?
AWS グローバルインフラストラクチャ | AWS より 2021年12月現在
ご覧のようにAWSは世界中に展開しており、多数のリージョンでAWSのサービスが提供されています。リージョン(Region)は「地域」という意味の英語で、東京・大阪・ロンドン・パリなど、AWSのサービスを利用できる地域を表しています。
1つのリージョンはさらに複数のアベイラビリティゾーン(Availability Zone、略してAZ)で構成されます。AZは多数のコンピュータやネットワーク機器が置かれたデータセンターを指しています。物理的に離れたAZを複数使うことで、どこかのAZが障害でダウンしても、他のAZで補い合う「冗長化」と呼ばれる構成になっています。
ここだけの話。実は所在地がバレちゃってる?
データセンターをご覧になったことはありますか?
表札がなく(もしくは全然関係ない表札がついた)、窓のない、屋上に空調の室外機がやたらたくさんある、謎の建物です。室内はコンピュータを24時間365日稼働し続けることを優先にしているため、年中寒く、空調やコンピュータの音でうるさい異様な空間です。
個人情報が多数保管されていたり、テロリストの攻撃(?)によってサービスを止めないために、所在地が公開されないことの多い建物です。ところがAWSのデータセンターの所在地が暴露されたことがあり、興味ある方は WikiLeaksがAWSのデータセンター所在地を暴露したので詳細を見る - Qiita をご覧ください。
Googleマップでご覧になると、どんな建物か分かると思います。私もインフラエンジニアの頃は自社のデータセンターに良く行っていましたが、クラウドエンジニアになるとAWS管理になるのでもう行くことはなくなりました。ちょっと寂しいですね...。
本題。あなたが使っているAZ-Aと私が使っているAZ-Aが違う?
ようやく本題に入りますが、例えば東京リージョンにはAZが「A」と「C」と「D」の3つあります。実は昔契約された方は欠番の「B」も使えるので4つ見えています。
AZ ID
まずAZには固有のIDが振られています。このID自体は2018年に公開されました。それまでは秘密だったんですね。
AZ ID | 所在地(公開されていないので仮です) |
---|---|
apne1-az1 | 東京都 ○○市 ×××× |
apne1-az2 | 神奈川県 △△市 ×××× |
apne1-az3 | 千葉県 □□市 ×××× |
apne1-az4 | 埼玉県 ☆☆市 ×××× |
この組み合わせは誰にとっても同じ、つまりあなたも私も同じです。 当たり前に聞こえますが...。
ちなみに「apne1」は東京リージョンを表していて、「Asia アジア」「Pacific 太平洋」地域の「North 北」「East 東」にある「1」番目のリージョンという意味です。世界では5番目、震災の直前2011年3月2日にサービスを開始しましたので、今年で10周年となりました。
AZ Name
ただ普段AZ IDは使いません。使うのはAZの名前です。
AZ Name |
---|
ap-northeast-1a |
ap-northeast-1b |
ap-northeast-1c |
ap-northeast-1d |
「ap-northeast-1」が先ほどの通り、東京リージョンを表していて、その中にa~dという名前のAZがあるわけです。よく「1a」や「1c」をAZの名前として書かれている方が多いですが、「1」はリージョン名の一部なので、正確には「a」~「d」がAZを表しています。「AZ-A」と書くか「ap-northeast-1a」と略さずに書くのが望ましいでしょう。
ややこしいのが次ですね。AZ IDとAZ Nameの組み合わせは、AWSアカウント(簡単に言うとAWSの契約者)ごとに違うんです!
例えばあなたは
AZ ID | 所在地(公開されていないので仮です) | AZ Name |
---|---|---|
apne1-az1 | 東京都 ○○市 ×××× | ap-northeast-1a |
apne1-az2 | 神奈川県 △△市 ×××× | ap-northeast-1b |
apne1-az3 | 千葉県 □□市 ×××× | ap-northeast-1c |
apne1-az4 | 埼玉県 ☆☆市 ×××× | ap-northeast-1d |
のような組み合わせかもしれませんが、私は
AZ ID | 所在地(公開されていないので仮です) | AZ Name |
---|---|---|
apne1-az1 | 東京都 ○○市 ×××× | ap-northeast-1c |
apne1-az2 | 神奈川県 △△市 ×××× | ap-northeast-1d |
apne1-az3 | 千葉県 □□市 ×××× | ap-northeast-1b |
apne1-az4 | 埼玉県 ☆☆市 ×××× | ap-northeast-1a |
の組み合わせで使っています。
つまり あなたは東京都のデータセンターを「AZ-A (ap-northeast-1a)」と思って使っていて、私は埼玉県のデータセンターを「AZ-A」と思って使っている という状況です。同じ「AZ-A」なのに別の世界を見ているんですね。
このネタは個別指導の中でもご説明していますが、皆さん最初聞いた時はキツネにつままれた感じになります 笑
公式ドキュメントのリンクも貼り付けておきます。日本語版は機械翻訳で変だったので英語版です。
参考:Availability Zone IDs for your AWS resources - AWS Resource Access Manager
で、気にした方がいいことはあるの?
普段はAZ-Aが物理的にどこにあるか? AZ IDが何か? といったことは全く気にせず、使っています。AWSアカウントによって組み合わせが違うなんてことも知らなくて全く影響ありません。
恐らくAWSの狙いとしては、負荷がどこかのデータセンターに偏らないように(例えばA~Dの中で、皆さん最初にAを使ったり、Dを使わなかったりすることが多いので偏らないように)するための仕組みなのでしょう。
ただ唯一知っておいて良かったというケースは、AWSで大規模な障害が発生した場合です。今年も2021年2月19日に「az1」で冷却システムの故障により、一部で室温が上昇し、大規模な障害が発生しました。
参考:2021年2月19日23時50分頃に発生したAWS障害について | クラスメソッド
参考:今までに起こった AWS 障害情報履歴 | kubalog
「az1」ということは、あなたは「AZ-A (ap-northeast-1a)」で障害が起きたと認識し、私は「AZ-C (ap-northeast-1c)」で障害が起きたと認識することになります。そう、Twitterや世間では「AZ-A」でも「AZ-C」でも、人によっては「AZ-B」でも「AZ-D」でも障害が起きたと騒がれることになります。
落ち着いてください。同時多発テロが起きたわけではありません。障害が起きたのは物理的に1か所のデータセンター(AZ ID: az1)だけです。そのカラクリはもうお分かりでしょう。
最後に。自己紹介
「駆け出しエンジニアの頼れるお兄さん」という肩書きで、フリーランスエンジニアの傍ら、AWSの個別相談や個別指導をしているルビコン(@RubiconLink)と申します。インフラエンジニア歴14年・AWSクラウドエンジニア歴6年です。
今年、メンターマッチングサービスのMENTAでは上位1%のゴールドメダルを獲得し、AWSのYouTubeで有名なくろかわこうへいさんのCloudTechでは公認メンターを任せて頂きました。
最近 YouTubeチャンネル も始めました。AWSのお悩みを解決する動画を配信していこうと思います。
AWSを学び、転職・フリーランス独立を有利に進めたい方は、ぜひフォロー・チャンネル登録頂けると嬉しいです!
独り言
最近世の中おかしいなと感じることが多いです。この投稿のように世の中の同じ事象を見ても、人によって全く違う世界を見ている(正反対にすらなる)ことが増えた気がします。
世の中、個人でも組織でも情報発信者は自分に有利なことしか主張せず、本当のことは隠されます。目立つ意見は参考にしつつも、自分の頭で本当はどうなのか考えたり、どなたの意見を参考にするかは慎重に見極めたいです。