Azureが提供するストレージサービスは「Azure Stroage」といい、大きく分けて以下4つのサービスを提供しています。
- Azure Blobs
- Azure Files
- Azure Queues
- Azure Tables
そしてそれらを管理する「ストレージアカウント」という考え方があります。それぞれの概要について説明します。(各サービスの詳細は別記事で紹介したいと思います。)
各ストレージサービスの概要
BLOBストレージ
BLOBストレージのBLOBは「Binary Large Object」の略で、大容量のバイナリデータを格納するために最適化されたサービスです。
画像やテキストデータ、映像など様々な非構造化データを格納することが可能で、BLOBストレージ内のオブジェクトにはブラウザ経由で接続することが可能となっています。もちろんAPIもあり、各プログラミング言語でライブラリが用意されています。
またBLOBは3種類あり、用途に応じてどのBLOBを利用するか選択する必要があります。
- ブロックBLOB
- 追加BLOB
- ページBLOB
Azure Files
Azure FilesはSMBを利用したファイル共有サービスです。SMBでアクセス可能なため、オンプレミスで利用しているファイルサーバーと同じように利用することが可能となっています。
ただし、現時点ではActive DirectoryやAzure Active DirectoryのIDを利用したKerberos認証をサポートしていないため、使い勝手が異なります。
Tableストレージ
TableストレージはNoSQL(Not Only SQL)の構造化されたデータを格納するサービスです。スキーマレスの分散型Key-Valueストアを提供します。SQL ServerなどのRDBとは違い、データ構造がシンプルなため、分散化や高可用性の実現が容易となっています。逆に、RDBが得意としている複雑な検索や集計などは得意ではありません。
現在、Tableストレージの Premiumプランである Azure Cosmos DB Table API が提供されています。Tableストレージより高性能なNoSQLを利用する場合は、Azure Cosmos DBの利用を検討する必要があります。
Queueストレージ
アプリケーションで分離されたコンポーネント間の通信に利用できる非同期のメッセージングサービスです。フロントエンドのWebサーバー(Webロール)が受け付けたHTTPリクエストのうち、処理に時間がかかるようなプロセスを、バックグラウンドで動作するWorkerロールに引き渡すときなどに利用します。
AzureではService Busキューという、別のメッセージングサービスも存在します。Service Busキューはキュー処理のみではなくパブリッシュ/サブスクライブなどの高度な統合パターンもサポートされています。
ストレージアカウントの概要
ストレージアカウントとは、Azureストレージサービスの管理単位です。上で説明した各ストレージサービス(オブジェクト)に対し、一意の名前空間を提供するサービスです。そのため、どこかで利用されているストレージアカウント名は利用できません。
それぞれのサービスに接続するためのエンドポイントは以下の通りとなります。
- BLOBストレージ:https://<ストレージアカウント名>.blob.core.windows.net/
- Azure Files:https://<ストレージアカウント名>.file.core.windows.net/
- QUEUEストレージhttps://<ストレージアカウント名>.queue.core.windows.net/
- Tableストレージ:https://<ストレージアカウント名>.table.core.windows.net/
ストレージアカウントのパフォーマンス
StandardかPremiumの2種類から選択することが可能となっています。
StandardはHDDを利用しており、GBあたりのコストが低く設定されています。大容量のデータ格納や、アクセス頻度が低いデータを格納するのに向いています。
PremiumはSSDを利用しており、高速なデータアクセスが可能となっています。PremiumはページBLOBのみ利用可能となっています。つまり、仮想マシンに接続するディスクに対してのみ利用可能となっているものとなります。
今後は、仮想マシンに接続するディスクはManaged Diskが主流となるので、ストレージアカウントとしてPremiumを選択することはほとんどなくなると思います。※Premiumが他のストレージサービスに対応したらこの限りではありません。
ストレージアカウントの種類
ストレージアカウントはの種類は以下の3つがあります。
- StorageV2(汎用 v2)
- Storage(汎用 v1)
- BLOB ストレージ
汎用ストレージ
StorageV2(汎用 v2)とStorage(汎用 v1)の2種類あり、すべてのストレージサービスが利用可能な種類となります。
汎用 v2と汎用 v1の違いは、BLOBストレージのアクセス層が利用可能となった点となります。併せて料金体系もBLOBストレージと同等となっています。また、レプリケーションオプションのゾーン冗長ストレージ(ZRS)が利用可能となります。
そして、後述のBLOBストレージと同様、アクセス層にクール・ホット・アーカイブの選択が可能となっています。
BLOBストレージ
ブロックBLOBと追加BLOBに特化したストレージアカウントとなります。その他のストレージサービスは利用できません。
ブロックBLOBと追加BLOBのみとなりますが、最大の特徴は以下のアクセス層の選択が可能となる点です。
- ホットアクセス層
- クールアクセス層
- アーカイブアクセス層
ホットアクセス層は頻繁にアクセスがあるデータの格納に適しています。ストレージコストは高いものの、アクセスコストが低く設定されています。
クールアクセス層はホットアクセス層に比べ、ストレージコストは低くなりますが、アクセスコストが高く設定されています。頻繁に利用されないバックアップデータや古いメディアコンテンツの格納などに適しています。30日以上クールアクセス層で保持されるデータを対象としています。
アーカイブアクセス層はストレージコストは最も低いですが、データ取得コストが高く設定されています。アーカイブアクセス層に保存されたデータは、通常アクセスは不可となっており、アーカイブアクセス層のデータを読み取るにはホットアクセス層、またはクールアクセス層に切り替える必要があります。このプロセスをリハイドレートといいます。リハイドレートは最大15時間かかることがあるため、この待ち時間を許容でき、180日以上アーカイブアクセス層で保持されるデータを対象としています。
現在は汎用 v2で同様のアクセス階層の制御が可能となったため、あえてBLOBストレージを選択するケースはほとんどなくなると思います。Microsoftとしても、新しいストレージアカウントは汎用v2で作成することを推奨しており、今後の新しいサービスは汎用 v2のみ提供する可能性が高いとされています。
レプリケーション オプション
データのレプリケーション オプションは以下の4種類用意されています。
- ローカル冗長ストレージ(LRS)
- ゾーン冗長ストレージ(ZRS)
- 地理冗長ストレージ(GRS)
- 読み取りアクセス地理冗長ストレージ(RA-GRS)
一番安価なローカル冗長ストレージ(LRS)でも年間 99.999999999%以上の持続性を確保されるようになっています。その他詳細については、可用性ゾーンの設定を交えて別の記事で紹介したいと思います。
ストレージアカウントの作成手順
ストレージアカウントの作成手順を紹介します。
Azureポータルのリソースの作成より、Storage => ストレージアカウントをクリックします。
必要な情報を入力し、「次:詳細>」をクリックします。この時、アカウントの種類を変更することで、選択可能な項目が変動します。
BLOBへのアクセスをHTTPSに限定する場合は、安全な転送が必要を有効にします。また、仮想ネットワークに接続する場合はここで指定し、「次:タグ>」をクリックします。
ストレージアカウントにタグを指定する場合はここで指定し、「次:確認および作成>」をクリックします。
確認および作成画面で内容に問題ないことを確認し、「作成」をクリックします。
数分でストレージアカウントの作成は完了します。以下ストレージアカウントの管理画面です。
作成はとても簡単ですね。
各ストレージサービスの詳細については、順次記事を作成します。
コメント