【AZ-900対策】Azureストレージサービスの違いをまとめた

# はじめに
この記事はMicrosoftの認定試験であるAZ-900:(Microsot Azure Fundamentals)の試験範囲であるAzureストレージについてまとめたものです。基本は、Microsoftが無料で公開している学習ツールであるMicrosoft Learnの記事の内容をまとめていますが、適宜必要な情報を加えています。

https://learn.microsoft.com/ja-jp/training/modules/describe-azure-storage-services/?source=learn

# ストレージアカウント
ストレージアカウントとは、Azureストレージの管理単位です。ストレージアカウントを通じて、次の大見出しでする各種ストレージサービスにアクセスが可能になります。

## ストレージアカウントの種類
Azureには主に4種類のストレージアカウントが存在します。アカウントの種類によって、対応しているストレージサービスの種類と冗長オプションが変わります。4種類あるとどのアカウントを選択するべきか迷う人もいるでしょうが、基本的には`Standard 汎用 v2`がおすすめらしいです。利用目的が限定的で高性能なサービスが必要な場合に限って、他のアカウントを選ぶといいでしょう。

|ストレージアカウントのタイプ|対応サービス|冗長オプション|
|---|---|---|
|Standard 汎用 v2|Blob Storage, Queue Storage, Table Storage, Azure Files|LRS, GRS, RA-GRS, ZRS, GZRS, RA-GZRS|
|Premium ブロック BLOB|Blob Storage|LRS, ZRS|
|Premium ファイル 共有|Azure Files|LRS, ZRS|
|Premium ページ BLOB|ページ Blob|LRS|

:::note info
参考までに、料金計算ツールを使って各サービスの料金比較を行いました。リソースのリージョンや、レベル(標準、Premium)、冗長性(LRS, ZRS, GRS, RA-GRS, GZRS, RA-GZRS)によって料金は大きく変わるので、一概にどのサービスが安い/高いということはできなそうでした。
:::

https://azure.microsoft.com/ja-jp/pricing/calculator/

### 参考：Premium ブロック Blob Storage($219)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/8fbb286d-bde1-cab0-6bc2-60b48a7d8d87.png)
### 参考：Premium Azure Files($355)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/be3ced96-e64e-7011-cd75-f2b4fffa190e.png)
### 参考：Premium ページ Blob($22.6)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/e48311b0-90be-43c2-f287-f9e01d51621b.png)

# ストレージサービス
ストレージサービスとは、インターネット上でデータを保存することができるサービスのことです。Azureの場合はAzureのクラウド上にデータを保存するサービスを指します。ストレージサービスを利用することで、冗長性による高可用性、暗号化やRBAC(Role Based Access Control)によるセキリュティ保護、パフォーマンスのニーズを満たすスケーラブルな設計、メンテナンスや更新プログラム等の管理が不要、HTTPもしくはHTTPS経由で世界中のどこからでもアクセス可能、といったメリットがあります。

## ストレージサービスの種類
Azureのストレージサービスは主に5種類あります。それぞれのストレージサービスの概要とユースケースについて簡単に紹介します。
### Blob Storage
Blob Storageはオブジェクトストレージサービスであり、画像、動画、オーディオ、ログ、バックアップなど、大量のデータを扱う場合に使います。`Blob Storage`では、数千単位の同時アップロード、大量の動画管理、増大しつづけるログファイルの管理、ギガバイト単位のバイナリデータ、暗号化されたメッセージ、カスタム形式のデータ格納が可能です。ユースケースの例としては、画像やドキュメントのブラウザ配信、ビデオやオーディオのストリーミング配信、バックアップや復元のためのアーカイブ用データ格納、が挙げられます。また、`Blob Storage`には3種類のアクセス層が定義されています。

#### ホットアクセス層
Webサイトの画像など、頻繁にアクセスされるデータを格納するように最適化されています。
#### クールアクセス層
顧客に対する請求書など、アクセスされる頻度が低く30日以上格納されるデータ用に最適化されています。
#### アーカイブアクセス層
長期のバックアップなど、ほとんどアクセスされずに180日以上格納され、待ち時間の要件が柔軟であるデータに適しています。

これらのアクセス層を用途に応じて適切に選択することで、ストレージコストとアクセスニーズのバランスを取ることが大事になります。

:::note info
BlobとはBinary Large Objectの略で、巨大なバイナリデータを表現したものです。また、DBで用いられるデータ型の一つになります。
:::

### Data Lake Storage Gen2
`Blob Storage`に近いサービスに`Data Lake Storage Gen2`があります。実際、`Azure Blob Storage`をベースに構築されています。これらの違いとしては、`Blob Storage`は汎用性が高い一方で、`Data Lake Storage Gen2`はビッグデータ分析専用の一連の機能を備えています。

### Azure Files
`Azure Files`はクラウドまたはオンプレミスのデプロイ用のフルマネージドのファイル共有サービスで、ファイルの共有を行いたい場合に使います。個人的には、`DropBox`に近いイメージを持っています。`SMB`(サーバーメッセージブロック)または`NFS`(ネットワークファイルシステム)を介してアクセスすることができ、SMB Azureファイル共有ではWindows, Linux, macOSに対応しており、NFS Azureファイル共有はLinux, macOSに対応しています。

### Queue Storage
Queueは待ち行列ともいい、メッセージを一時的に保管しておく場所です。ユーザーからのリクエストを一度に処理することができず、非同期通信が認められている場合において、一時的にリクエストを保管しておきたい場合などに使うことができます。キューには数百万通のメッセージを含めることができ、各メッセージの最大サイズは64KBであり、最大7日間の保存期間があります。`Azure Functions`と組み合わせれば、Webサイトからのメッセージの受信時にアクションをトリガーすることができます。

### Table Storage
`Azure Table Storage`は、非リレーショナル構造化データをクラウド内に格納するサービスです。NoSQLの種類はキーバリュー型です。

https://learn.microsoft.com/ja-jp/azure/storage/tables/table-storage-overview

:::note info
NoSQLとは、RDBではないデータベースの総称のことです。
:::

# リージョン
リージョンとは、少なくとも1つのデータセンターを含む地球上の地理的領域です。例えば、日本には東日本と西日本の2つのリージョンがあります。アメリカには西部に3つ、中西部、中南部、中部、中北部、中東部に3つの合計10個のリージョンがあります。

https://azure.microsoft.com/ja-jp/explore/global-infrastructure/geographies/#overview

## プライマリリージョン
プライマリリージョンとは、ストレージを作成した最初のリージョンです。

## セカンダリリージョン
セカンダリリージョンとは、プライマリリージョンから数百キロ離れたリージョンのことです。セカンダリリージョンはAzureリージョンペアに基づいていて、変更することができないことに注意です。

# 冗長性オプション
冗長性とは、余分や重複がある状態のことをいいます。Azureストレージに関しては、データを複製しておくことに相当します。Azureストレージサービスでは、冗長性を設定することで、計画的なイベントや、ハードウェア障害、ネットワークの停止、停電、自然災害などの計画外のイベントからデータを保護することができます。冗長性オプションを設定することで高可用性を実現できますが、その分コストが高くなるように、コストと可用性がトレードオフになっていることに注意が必要です。

## 冗長性オプションの種類
冗長性オプションには次に紹介する6つのオプションが存在します。

### ローカル冗長ストレージ(LRS)
`LRS`によって、プライマリリージョン内の単一データセンターに3つのコピーが作られます。冗長性により、99.999999999(イレブンナイン)以上の持続性が確保されます。最もコストが安い冗長オプションですが、他の冗長性オプションと比較して、データセンター内の障害に弱いことに注意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/1732227d-7615-b0ce-7fce-802dc51aa78f.png)

### ゾーン冗長ストレージ(ZRS)
`ZRS`によって、プライマリリージョン内の3つのデータセンターに合計3つのコピーが作られます。持続性はトゥエルブナイン以上になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/cd22c70d-e5ea-dff9-fb3a-eb95b9804293.png)

### geo冗長ストレージ(GRS)
`GRS`によって、セカンダリリージョン内のデータセンター内にもデータが3つコピーされます。プライマリリージョンに関しては、単一データセンター内に3つのコピーが作られます。持続性はシックスティーンナイン以上になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/9faa12ab-a3d2-a45d-fa89-6cc20248c3f0.png)

### geoゾーン冗長ストレージ(GZRS)
`GZRS`によって、セカンダリリージョン内のデータセンター内にもデータが3つコピーされます。プライマリリージョンに関しては、3つのデータセンター内に合計3つのコピーが作られます。持続性はシックスティーンナイン以上になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/ae1ba827-d718-b7b2-985f-e22e720de8fc.png)

### 読み取りアクセスgeo冗長ストレージ(RA-GRS)
`GRS`の読み取りアクセスを可能にするオプションです。通常はセカンダリリージョンへのフェールオーバーが発生しない限り、セカンダリリージョンへの読み取りまたは書き込みのアクセスを行うことができません。ですが、セカンダリリージョンへの読み取りアクセスを有効にした場合、プライマリリージョンが最適に実行されている場合でも、データを常に使用できるようになります。

:::note info
フェールオーバーとは、現用系コンピュータサーバ/システム/ネットワークで異常事態が発生したとき、自動的に冗長な待機系コンピュータサーバ/システム/ネットワークに切り換える機能です。
:::

### 読み取りアクセスgeoゾーン冗長ストレージ(RA-GZRS)
`GZRS`の読み取りアクセスを可能にするオプションです。

## 冗長性オプションの種類のまとめ
`LRS`, `ZRS`, `GRS`, `GZRS`の違いはややこしいので、それぞれのデータセンターにいくつのデータがコピーされるのかを下の表でまとめます。
|冗長性オプション|データセンター1(プライマリ)|データセンター2(プライマリ)|データセンター3(プライマリ)|データセンター(セカンダリ)|
|---|---|---|---|---|
|LRS|3|-|-|-|
|ZRS|1|1|1|-|
|GRS|3|-|-|3|
|GZRS|1|1|1|3|

:::note info
LRS, ZRS, GRSなどのRは冗長性を意味するRedundancyの頭文字です。
:::

# データ移行
データと情報をAzureに取り込んだり、取り出したりする必要が出てきた場合にデータ移行を行う必要が出てきます。

## データ移行オプションの種類
Azureのデータ移行オプションは2つあります。

### Azure Migrate
`Azure Migrate`はオンプレミス環境からクラウドへの移行に役立つサービスです。インフラストラクチャ、アプリケーション、データのリアルタイム移行ができます。

### Azure Data Box
`Azure Data Box`は大量のデータを迅速かつ安価で信頼性の高い方法で転送するのに役立つ物理移行サービスです。`Azure Data Box`では最大80TBのストレージ容量でデータの非同期移行を行うことができます。Data Boxは地域の運送業者を介してデータセンターとの間で輸送され、頑丈なケースで運送中の破損から保護されるため安心です。

#### Azure Data Boxの使い方
① Azure portalからData Boxを注文
② デバイスの受け取り
③ Azureとの間でデータをインポートまたはエクスポート
④ デバイスの返却
⑤ データがAzureに自動的にアップロード
⑥ (使用後のデバイスのディスクは完全にワイプされる)

## データ移行オプションの使い分け
これらのデータ移行オプションは紛らわしいため、どちらのデータ移行オプションを使うべきなのかをまとめます。

### Azure Migrateを使うべき場合
データサイズが十分に小さい場合や、**オンプレからAzure**への直接移行をしたい場合

### Azure Data Boxを使うべき場合
データサイズが40TB以上である場合や、**Azureからオンプレ**に移行や復元したい場合

# ファイル移行
データ移行については説明しましたが、必ずしも巨大なデータを移行するとは限りません。その場合、個々のファイルや小さなファイルグループの移動や操作を行うためのファイル移行が必要になります。

## ファイル移行オプションの種類
Azureのファイル移行オプションは3つあります。

### AzCopy
`AzCopy`はBLOBまたはファイルをコピーするために使用できるコマンドラインユーティリティです。ファイルのアップロードや、ファイルのダウンロード、ストレージアカウント間でのファイルのコピー、ファイルの同期、他のクラウドプロバイダーとの連携などが可能です。

### Azure Storage Explorer
`Azure Storage Explorer`はAzureストレージアカウント内のファイルとBLOBを管理するためのGUIを提供するスタンドアロンアプリです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452857/c3f28be8-44f4-1ebf-0dcd-709b6ec6dfae.png)
Windows, macOS, Linuxで利用することができ、バックエンドで`AzCopy`が使われています。

### Azure File Sync
`Azure File Sync`は`Azure Files`でファイル共有を一元化し、Windowsファイルサーバーの柔軟性、パフォーマンス、互換性を維持できるツールです。

## ファイル移行オプションの使い分け
ファイル移行オプションの使い分けについてもまとめます。

### AzCopyを使うべき場合
ファイルのアップロード、ダウンロード、コピー、**一方向にファイルを同期**したい場合

### Azure Storage Explorerを使うべき場合
アップロード、ダウンロード、コピー等のファイル操作を`GUI`で行いたい場合

### Azure File Syncを使うべき場合
ファイル共有の一元化、**双方向にファイルを同期**、データにローカルでアクセスしたい場合

# おわりに
Azureストレージサービスについてまとめました。私もまだまだ勉強中なので、間違っている場所があればご教授していただけると嬉しいです。