ストレージアカウントを全力で守る!

データを安く手軽に扱えるストレージアカウントは、クラウドネイティブなアプリケーションを開発する場合にほぼ100%使用しているのではないでしょうか?
ストレージアカウントには様々なオプションがありますので、「ストレージアカウントを守る」というよく分からないテーマで説明してみます。

データの冗長性オプションの使用

詳しくは下記のドキュメントを見ていただくのが良いですが、長いのでざっくりとした説明をします。https://docs.microsoft.com/ja-jp/azure/storage/common/storage-redundancy

LRS

Azureポータルからデフォルト設定でストレージアカウントを作成すると、「LRS」という冗長性オプションが使用されます。
こちらは「リージョン内で3回データがコピーされる」というもので、安いNASとかと比較すると遥かにすごい仕組みですね!
データの持続性は99.999999999%以上ということで、ほぼ消える心配は無いですが、リージョン内でのやりくりなのでリージョン障害のようなものがあれば影響を受けます。

RA-GRS

アプリケーションが使用する重要なデータ等はLRSとは別の冗長性オプションを使用するのが良いです。
最近までは、「RA-GRS」というオプションを使用するのが私のベストプラクティスでした。
これは、2つのリージョン内でデータを持ってくれるオプションで、データの持続性が99.99999999999999% 以上にアップし、リージョン障害にも対応できます。
ちなみに先頭に「RA-」と付くオプションの場合、データの更新が可能なリージョンは片方だけになります。

RA-GZRS

そして最近は「RA-GZRS」のような、ゾーン冗長のオプションが登場しました。
ゾーン冗長については別途調べてみてください、簡単に言うと、「リージョン内はさらにデータセンターの概念に分かれているので、データが3つのデータセンターに分散するよう保管され、データセンター単位の障害に耐えられる」でしょうか。
こちらのデータ持続性は99.99999999999999%以上ということで、非常に守れますね!

データが守れるほど、料金も高くなってくるので、アプリケーションの要件を考慮しつつどのオプションを選択するかを決めるのが良いと思います。

オブジェクトレプリケーション

下記の記事の通り、Blobを他のストレージアカウントに非同期にコピーすることも可能です。https://docs.microsoft.com/ja-jp/azure/storage/blobs/object-replication-overview

ただ、これは「ストレージアカウントを守る」というテーマからは少しずれているかもしれません。
こちらはコンテナー単位にルールを定義する必要があります。

まとめ

ストレージアカウントを守るために、アプリケーションやデータの要件に従い冗長性オプションを適切に設定しましょう。