Azureのストレージにおけるデータの冗長性

今回はAzureのストレージにおけるデータの冗長性についてまとめた。 Microsoftのドキュメントはとても丁寧に作られていて、こちらも読んでみてほしい。 このドキュメントは丁寧に作られている反面、普段触りなれていない人には内容として少し難しいかもしれない。 そのため、この記事はスッと理解できて説明の場ですぐ使えるようなレベルを目指した。 参考になれば!

docs.microsoft.com

※この記事は2020/07/07時点の情報を元にしています。

Azure Blob Storage とは?

Blob Storageは、Azureで提供されているストレージサービスで、AmazonAWSだとS3が同じサービスに該当する。 RDBサービスやNoSQLサービスのような構造化・半構造化データではなく、テキストや画像データなどの非構造化データを保存することに最適化されている。

Azure Blob StorageはBlobストレージとAzure Data Lake Storage Gen2の2つから選択できる。 この2つの違いについて歴史も交えつつ簡単に説明する。 元々はストレージサービスとして提供されていたのはBlob Storageしかなかった。 ビッグデータを扱えるストレージのニーズが高まり、Azure Data Lake Storageが誕生した。 これにより基本的なクラウドストレージサービスのBlob Storageとビッグデータ利用に最適化されたAzure Data Lake Storageの棲み分けが発生した。 現在はAzure Data Lake Storage Gen2と名称が変更され、Blob StorageとAzure Data Lake Storageが含まれたものになっている。

Azure Blob Storageにおけるデータの冗長性

データ冗長性について考えなければいけないことは3段階ある。 最初は「配置するリージョンでの複製方法」。次に、「ペアリージョンにも複製するか」。最後に、「複製したペアリージョンへのデータと読み取りを許可するか」となる。

配置するリージョンでの複製方法

まず配置するリージョンでの複製方法だが、これは「ローカル冗長ストレージ(LRS)」と「ゾーン冗長ストレージ(ZRS)」から選べる。 「ローカル冗長ストレージ」は1つの場所の中でデータを3回コピーする方法。 架空の話だがイメージとしては、東日本リージョン内の関東の中だけで3回データをコピーすることになる。 「ローカル冗長ストレージ(LRS)」は最もコストが安いがMicrosoftとしては推奨していない。 これは複製したデータが1箇所でしか保持されていないためであり、関東の交通網が大雪で止まってしまい、通勤通学に支障が出ることに似ている。 ローカル冗長ストレージは年間 99.999999999% (イレブン ナイン) 以上の持続性が提供される。

それに対する「ゾーン冗長ストレージ(ZRS)」はリージョン内に用意されているゾーンの間でデータをコピーする方法になる。 こちらも架空の話だが、東日本リージョン内の 北海道 / 東北 / 関東 の中でデータをコピーするイメージとなる。 「ローカル冗長ストレージ(LRS)」と比較すると、関東だけにデータを留めておくよりも広範囲に保存されることになります。 当たり前だが「ローカル冗長ストレージ(LRS)」よりも広範囲にデータが保存されるため冗長性は高くなる。 しかし、先程の関東の大雪よりも広い範囲、要は東日本全体への大雪がきてしまったら通勤通学を始め、飛行機新幹線での出張にも影響が出てしまうことに近い。 ゾーン冗長ストレージは年間 99.9999999999% (トゥエルブ ナイン) 以上の持続性を提供される。

配置するリージョン内での複製方法については以上となる。 じゃあ関東または東日本に大雪がきてしまったときのために、ペアとなっているリージョンにもデータを複製することを考え始めるのが次の項目となる。

ペアリージョンにも複製するか

ペアリージョンにも複製するかだが、これは「geo冗長ストレージ(GRS)」か「geoゾーン冗長ストレージ(GZRS)」から選べる。 「geo冗長ストレージ(GRS)」は「ローカル冗長ストレージ(LRS)」をペアのリージョンでも実施することになる。 先程出した例の延長線でいうと、東日本リージョン内の関東の中だけで3回データをコピーしたあとに、西日本リージョン内の関西の中で3回データをコピーすることに近い。

次に「geoゾーン冗長ストレージ(GZRS)」は各リージョン内に用意されているゾーンの間でデータをコピーする方法です。 東日本リージョン内の 北海道 / 東北 / 関東 の中でデータをコピーした後、西日本リージョン内の 関西 / 中部・四国 / 九州 の中でデータをコピーするイメージになる。

もちろん、ペアリージョンにコピーしているので東日本リージョンが使えなくなってしまった場合に、西日本リージョンのデータを使うことができる。普段から西日本のデータを読み取ることはできないが、いわゆるフェールオーバーが完了すると、西日本リージョンでデータの読み書きが可能となる。

ペアリージョン間のデータの同期ですが、これは非同期的に複製される。 どちらも年間 99.99999999999999% (シックスティーン ナイン) 以上の持続性を提供している。

複製したペアリージョンへのデータと読み取りを許可するか

「geo冗長ストレージ(GRS)」か「geoゾーン冗長ストレージ(GZRS)」はあくまでも、障害からデータを守るために複製する意味を持っている。 そしてペアリージョンでのデータの読み取りをできるのはフェールオーバー後でもあった。 しかし、「読み取りアクセス(RA)」を選択するとフェールオーバーをしなくてもペアリージョンからデータを読み取ることができる。 名称は「読み取りアクセスgeo冗長ストレージ (RA-GRS)」と「読み取りアクセスゾーン冗長ストレージ(RA-GZRS)」になり、増えた接頭辞の「RA」はRead Accessを指す。

まとめ

Azure Storage の冗長性についてまとめた。 「LRS」「ZRS」「GRS」「GZRS」「RA-GRS」「RA-GZRS」と英語が並んでややこしくなったが末尾の「RS」は「Redundancy Storage」のことを指している。 初めにも書いたが、Microsoftのドキュメントを参照するとより詳しいことが書いてあるのでそちらも参照してもらいたい。 ひとまず「L, Z, G, GZ, RA-G, RA-GZ」の部分が何を指しているのかが理解できて、説明できれば大丈夫だと考える。

おわりに

この記事はスッと理解できて説明の場ですぐ使えるようなレベルを目指した と前置きをしたが、自分ならどう説明するかの思考整理と理解整理も兼ねている。 「ナレッジの共有」と言うと聞こえは良いが、実際に組織としてうまく回せていることは少ないし、ファイルをどん!とおいてあるところが大半だと思う。 なので、新人でもとりあえず暗記すれば話せて、そこで成功体験を積め、最終的に技術の深いところに入ってもらうきっかけになればと思いながら筆を走らせた。 具体例を挟むと抽象的な部分は抜け落ちるし難しいと感じる。

何か間違っている部分があればご連絡お願いします。

参考情報

docs.microsoft.com