Azureのストレージ種類をみてみると、「なんか種類が多いな~」と思っていました。
とはいっても、仮想マシン作成にはとくに意識していませんでした。
しかし、Azureストレージ種類と概念を理解しておかないと、システムの利用に不都合がでてきてしまいます。
どうゆうことかと言いますと、ストレージの種類によって、保存する対象データだったりシステムの運用用途に合わなかったりすると、「システムが構築できない」「データが取り出すのに時間がかかる」とかさまざまな不都合なことが起きてしまうということです。
簡単ではありますが、Azureストレージの種類をまとめてみようと思います。
ストレージの種類 (5つ紹介)
Azureストレージの種類は、なんと「5つ」もあります。
まずは名称からみてみます。
Azureストレージの種類
- Azure Files(ファイル)
- Azure BLOB(ブロブ)
- Azure Disk(ディスク)
- Azure Queue(キュー)
- Azure Table(テーブル)
どうでしょうか?
ストレージ種類がこんなにもあるなんて思っていませんでした。
また、「どのストレージを利用したらよいのか?」と迷ってしまいます。
上記の5つの内で、インフラ基盤で利用するストレージは3つ(ファイル、ブロブ、ディスク)です。この中で、Blob(ブロブ)ストレージの利用が多いのではないかなと思います。
どのようなことに利用するかを見てみる
それぞれのストレージ種類をかるく見てみましょう。
Azure Files(ファイル)
サーバーメッセージブロック (SMB) プロトコルまたはネットワークファイルシステム (NFS) プロトコルでアクセスできる「ファイル共有」です。
ファイル共有のとおり、「ファイルサーバ」や「NAS」といった機能の代わりとなります。ファイル共有領域がクラウド上に存在して、いつでもアクセスできます。
Azure File Sync を使用すると、Azure File SMB ファイル共有をWindows サーバーにレプリケートできます。
簡単なDRサイトみたいな感じでデータ保管ができるかと思います。
マイクロソフトの価格表によると、2021年6月時点ではAzure File 1GiBあたり3.36円のようです。
https://azure.microsoft.com/ja-jp/pricing/details/storage/files/
補足しますと、「ホット」「クール」で価格の違いが出てきます。通常ファイル共有で利用する際には「ホット」を選択します。
「ホット」「クール」の利用用途の違い
ホット: 頻繁にアクセスされるデータの格納
クール:アクセス頻度は低く、30 日以上保管されるデータの格納
Azure BLOB(ブロブ)
Azure BLOB(ブロブ)は、おそらく最も馴染みがあるサービスではないかと思います。
Blob Storage は、「テキストデータやバイナリデータなどの大量の非構造化データを格納する」ストレージソリューションです。
マイクロソフトの公開情報によると「特定のデータモデルや定義に従っていないデータ」と記載されても理解がしずらいですね。
簡単にいってしまえば「普通につかっているファイルデータ」という理解で良いと思います。
プロトコルとしては、HTTP/HTTPS 経由で Blob Storage 内のオブジェクトにアクセスできます。
HTTPは安全ではないので、利用するとなるとHTTPS接続ではないでしょうか。
Azure BLOB(ブロブ)の構造は、Azureストレージアカウントにコンテナーを設け、コンテナー配下にデータを格納します。
リソースの関係から、ストレージアカウントに紐づいていることがわかります。
たとえばアプリケーションごとにストレージアカウントを作成して、「アプリケーションのデータ保存先にする」といった用途にも利用できてしまいます。
Azure Disk(ディスク)
Azure Disk(ディスク)は普段お目にかからないサービスです。
これは「オフラインの仮想ディスク」という理解でよいと思います。
つまり、データを永続的に格納し、アタッチされた仮想ハード ディスクからアクセスできるようにします。
仮想マシン以外の外部からのアクセスが不要なデータを格納するのに利用されています。
Azure Queue(キュー)
Azure Queue(キュー)は、多数のメッセージを格納するためのサービスです。
アプリで利用するメッセージのようで、メッセージはHTTP/HTTPS接続して利用できます。
キュー メッセージの許容される最大サイズは 64 KB と制限があり、キューにはストレージ アカウントの総容量の上限まで保存できます。
このキューストレージもストレージアカウントに紐づいていることがわかります。
ストレージアカウントにキューを作成して、データを格納しています。
どういった用途に利用するかはアプリ開発で決めるみたいですが、よくわかりませんでした。
Azure Table(テーブル)
Azure Table Storage は、非リレーショナル構造化データ(構造化されたNoSQLデータ)を格納するサービスです。
主な用途ととしては、WEBアプリケーションで入力されたデータを格納するというのが浮かびます。
複雑な結合、外部キー、またはストアド プロシージャを必要としないデータに最適のようです。
このAzure Table ストレージはリソースの関係から、ストレージアカウントに紐づいていることがわかります。
しかし、Azure Table ストレージは他のサービスへ置き換わるものと予想されます。
つまり、Table Storage に対する代替のオファリングとして Azure Cosmos DB Table API が用意されています。
Azure Cosmos DB へ移行・統一するのではないかと想定されます。
まとめ
ストレージだけでも種類が多く、調べていくと役割や動作が違っていたりして興味深いですね。
インフラ基盤での利用は主に”Blob”が多く、次に”File”ではないかと思われます。
何となく利用しているストレージでも「種類」「最適な用途」があり、システムの利用形態やネットワーク環境に合わせて選んでいただければと思います。