AzureのストレージアカウントをAWSに擬えてみる

## 前書き
不定期に開催される会社のキャンペーンで、クラウド資格をゲットしたら報奨金をもらえるというキャンペーンがあり、まさにそのキャンペーンが行われている最中です。今回このキャンペーンに乗じてAzure Solutions Architect Expert：通称AZ-305の資格取得をすることにしました。（AZ-305を受験するにはAzure Administrator Associate：通称AZ-104に合格している必要があります。）

筆者は現在AWSを用いたインフラエンジニアとして活動しています。そのため、AWSのサービスと対応させればそれほど困らずに理解ができるのではないかと考えていました。実際、多くのサービスは細かな違いこそあれ、おおよそ対応したサービスが存在していました。

例：Traffic Manager → Route53　など

https://learn.microsoft.com/ja-jp/azure/architecture/aws-professional/services

また、こちらのUdemyの講座の解説がかなり丁寧で、とても勉強が捗りました。オススメです。

https://www.udemy.com/course/microsoft-azure-az305-exam/

しかし、対応する概念が存在しないサービスもあります。その中の1つが  **「ストレージアカウント」** です。これはサービスの比較のページを見ても、のUdemyの講座を見ても、さっぱりわかりませんでした。そこで、自力で調べてみて記事にすることにしました。


## ストレージアカウントとは？
Azureのサポートチームのブログにばっちりと定義が書いていました。

> ストレージ アカウントとは、グローバルな一意な名前をもって、Azure Storage データ オブジェクト (BLOB、ファイル、キュー、テーブル) をグループ化するためのコンテナー (論理的な区画) です。
ストレージ アカウント内のデータには、 HTTP または HTTPS 経由などでアクセスすることが可能です。
Azure Storage データ オブジェクトは、ストレージ アカウント作成時にご指定いただいたリージョンのデータセンター内の物理サーバー群 (ストレージ クラスターまたはスタンプと呼びます) に格納されております。

ぱっと見ではよくわからなかったのですが、「グローバルな一意な名前」と聞いたときにピンときました。これは **「S3バケット」** とよく似ているのではないでしょうか。　

Azureではどうやらバケットのことを「コンテナ」と呼んでいるみたいですね。
bucket = バケツと、container = 容器。やはりよく似ていますね。

また、バケツとコンテナでは用途は同じでもコンテナのほうが大きいですよね。今回話題にしている「S3バケット」と「コンテナ」にもまさにそのような違いがあります。AzureのコンテナはBLOB(≒S3オブジェクト)だけではなく、ファイル、キュー、テーブルも同時に利用することができます。



# ストレージアカウントの種類
さらに学習者を悩ませるのが、ストレージアカウントの種類です。ストレージアカウントはコンテナとして場所を確保するだけではなく、そのような種類のストレージアカウントを作成するかによって使えるサービスが異なります。AWSではアカウントさえあればどんなサービスでも使うことができるので、ここも混乱ポイントの1つでした。

データサービスの詳細とストレージアカウントの種類は以下のようになります。これを詳しく見ていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661124/340566a9-9a03-11c7-12cf-ebd10c8a4f23.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661124/cee06770-cdff-f81f-f5b1-321dd21cbcab.png)

まずはプランを選択します。プランにはStandardとPremiumが存在します。

## Standard
Standardプランはタイプが1つしかありません。こちらはBLOB、ファイル、キュー、テーブルすべて使用することができます。特定の要望がなければStandardを使いましょう


## Premium
Premiumプランには3種類のタイプが存在します

**「ブロックBLOB」**
> ブロック BLOB と追加 BLOB 用の Premium タイプのストレージ アカウント。
トランザクション レートが高く、比較的小さなオブジェクトが使用されるシナリオ、またはストレージ待ち時間が一貫して短いことが要求されるシナリオに推奨されます。

ブロックBLOB：
こちらは普通のオブジェクトです。AWSで言うとS3オブジェクトにあたります。

追加BLOB:
こちらは効率的にデータを追加する機能です。AWSでいうとS3マルチパートアップロードにあたると思います。

この2つの機能はStandardプランでも使用できます。違いはそのSPECです。そのため、低遅延などを求めるときはこのブロックBLOBを選択しましょう。

---



**「ファイル共有」**
> ファイル共有専用の Premium タイプのストレージ アカウント。
エンタープライズまたはハイ パフォーマンス スケール アプリケーションにお勧めします。
SMB ファイル共有と NFS ファイル共有の両方をサポートするストレージアカウントが必要な場合は、このタイプのアカウントを使用します。

こちらはファイルストレージですね。SMBファイル共有（Windows用のファイルシステム）とNFSファイル共有（Linux用のファイルシステム）です。AWSで言うと前者がFSx、後者がEFSにあたります。

AzureではSMBが安価に使用できてAWSではNFSが安価に利用できるのはベンダーの戦略を垣間見ることができて面白いですね。

---

**「ページBLOB」**
> ページ BLOB に特化した Premium Storage アカウントの種類。

ページ BLOB：
こちらについては、公式サイトにこのような記述がありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661124/1a350c08-96dc-5c2f-0cd4-b69a435c50d5.png)
Azure VM用のボリュームということで、AWSでいうとEBSにあたります。しかし、BLOBはオブジェクトストレージなので、AWSでもう少し正確に言うとS3をEC2にアタッチしているということになります。何とも不思議な感じがします。

ちなみに現在はこちらのページBLOBは非推奨となっており、代わりに「マネージドディスク」というものが推奨されています。こちらはブロックストレージなので、完全にEBSにあたると言えます。


## まとめ
- ストレージアカウントとは、S3バケットのようなもので、その中でオブジェクトストレージだけでなくファイル、キュー、テーブルが使用できるというもの
- ストレージアカウントの種類とは、「コンテナ内でどのようなサービスが利用できるか」を定めたもの。AWSにはこれに対応する概念がなく、AWSアカウントがあればどれでも好きなサービスが利用できる。
    - Standard: 汎用的なサービスアカウント。大体これで問題ない
    - Premium ブロックBLOB:：機能としてはStandardでも使えているものしかない。BLOBを使用し、かつ高性能なものが求められている場合はこれ
    - Premium ファイル共有：Linux系のOSでファイルシステムを使いたければこれ
    - Premium ページBLOB：今は非推奨となっている


おおよそ同じようなサービスが使えるものの、やはり細部を見ていくとクラウドベンダーごとに提供しているサービスが違っていたり、そもそも対応する概念がなかったりしますね。学習者にとっては難しい箇所ではありますが、だからこそ理解できていると価値があるところだと思います。この記事が皆さんの理解や資格対策の一助となれば幸いです。