Microsoft Azureで提供されているStorageにはどのようなサービスがある?その特徴や仕組み、料金を紹介
はじめに
2023年現在ではAmazonやMicrosoft、Googleをはじめとした多くの有名企業によって様々なクラウドサービスが提供されており、個人や企業での利用はもちろん自治体や政府関連のサービスにおいてクラウドが採用されることが珍しくなくなっています。
新サービス導入時や現システムの移行先としてクラウドサービスを優先とする「クラウドファースト」や、クラウドで運用することを前提としてクラウドのメリットをフル活用できるシステムの開発に努める「クラウドネイティブ」といった海外で生まれた考え方もいまや日本国内に広く普及しており、各社の提供するクラウドサービスではそれぞれに豊富なサービスが取り揃えられています。
以上のようにクラウドサービスの活用の幅が広がると自ずと取り扱うデータも増えてくるため、セキュリティ性を保って安全にデータの保存したり、分析等に活用したりできるクラウドストレージの重要性は増していきます。また業務効率を上げたい、コストを削減したいという目的を叶えるためにあらゆるシステムに最適なストレージを利用できるよう、様々なタイプのストレージサービスが展開されています。このことはクラウドサービスとして代表的なAmazonのAWS、MicrosoftのMicrosoft Azure、GoogleのGCPのいずれでも同様の状況となっています。
この記事ではクラウドサービスとして提供されることの多いストレージのタイプ3つを紹介したうえで、Microsoft Azureで提供される代表的なストレージサービス、Azureのストレージを利用するうえで欠かせない「Azure Storageアカウント」について解説します。他にもAzureの料金の仕組みや無料利用枠、Azureアカウント、サブスクリプションについても触れているため、初めてMicrosoft Azureを利用する人にも役立つ内容となっています。クラウドやAzureについて総合的に学習している方やストレージ、サービスの選定に迷っている方もぜひご覧ください。
クラウドサービスで提供される代表的なStorage
ストレージは基本的にデータの保存やアクセスに特化したサービスですが、クラウドには主にファイル、オブジェクト、ブロックといった3つの異なるタイプのサービスが存在します。これから構築するシステム、あるいはオンプレミスから移行するに当たってどのタイプが適切かを判断できるようにここではそれぞれの特徴やメリットについて紹介します。
ファイルStorage
ファイルStorageはWindowsやMacOS、Linuxといった多くのOSで利用されているような階層的にデータを管理するタイプのストレージです。人間が直感的に理解しやすく、データを共有できるように構築することで複数ユーザーでの同時アクセスも可能である他、中身がブロックStorageであっても実際にOSから操作するためにファイルStorageを構築して運用するという利用方法もあります。
階層構造なので対象のデータまでのパスは単一となりますが、ファイル単位でのアクセスが可能でデータの整理や管理が容易に行える他、アクセス権限の設定もシンプルです。クラウドサービスでは設定ミスによるセキュリティインシデントが多く発生していることが指摘されていますが、ファイルStorageは理解しやすく馴染みのあるシステムであるため他と比べてミスが発生しづらいストレージと言えます。
一方でファイル単位でのアクセスが発生することから容量を使いやすく、大量の小さなデータや大容量データ、非構造化データ(様々な形式で保存された画像、音声、テキスト等のデータ)の管理には不向きです。また一つのデータに対して複数ユーザーの同時アクセスが可能ですが、それによって起こりうる競合・同時編集といった問題を解決しなければならないという面もあります。
メタデータに関してはファイル名や作成日、サイズ、データの種類といった必要最低限のもののみが付与される等、シンプルな点が大きな特徴でありその点では他のストレージタイプに勝るため、社内で少量のデータを気軽に管理したい、共有したいという場合には適したストレージです。
ブロックStorage
記憶領域を「ボリューム」という単位で分割し、その中に「ブロック」という単位でデータを保存するのがブロックStorageの特徴です。ブロックの容量はあらかじめ決まっているのでその中に入り切らない場合はデータを分割して別のブロックにも格納するという仕組みになっており、データの呼び出しが行われた場合は分割されたデータを再結合して結果を返します。ボリュームやブロックにはそれぞれにユニーク(一意)のIDが付与されており、それによって識別が可能なため、分割したデータを格納したブロックは連続させておく必要がありません。
このような仕組みによってレイテンシーを低く保ち、高いパフォーマンスとスループット(単位時間あたりに処理できるデータ量)を実現することが可能です。さらにデータの一貫性を保つ機能が提供されていることも特徴です。なお他2つのストレージと異なりメタデータは付与されません。
クラウドストレージとなるので容量等の柔軟なスケーラビリティがあることはもちろん、ブロックに分割してデータを保存することにより冗長性を持つことも可能となっています。いずれかのブロックに破損等が発生したとしても他のブロックからデータを復元するという利用方法もできるため、損失を最小限に止めることが可能です。
高いパフォーマンスとデータの整合性が確保できるブロックStorageのユースケースとしては、更新頻度の高い仮想マシンやデータベースのスナップショット、バックアップの作成・復元等が考えられます。一つデメリットを挙げるとするとコストが高くなりやすいタイプのストレージと言えますが、大規模なトランザクションを実行したり大規模なデータベースをデプロイしたりする場合には適しています。
オブジェクトStorage
大容量の非構造化データを保存する場合に適したタイプのストレージです。データはオブジェクトとして保存され、ブロックStorageのボリュームやブロックと同様にオブジェクトにはユニークなIDが付与されます。
階層構造を持たずにフラットな状態でアドレス空間に保存されるためインデックスの作成がしやすく、そのインデックスを利用することで大容量あるいは非構造のデータであっても高速な検索が可能です。またメタデータは作成日時、更新日時、サイズ、所有者といった決められたものだけではなく任意に設定することも可能で、設定した複数の属性情報を使ってグルーピングができるという点も一つの特徴です。
さらにオブジェクトStorageは物理的に離れたサーバーの領域を一つの「ストレージプール」として認識させることが可能であり、分散ファイルストレージの構成を採ることができる他、急なスケールアウトにも対応することが可能です。
柔軟なアクセス権限の設定をすることも可能で、ユーザーごとにアクセス権限を設定することによってデータを安全に管理できる他、データの暗号化も可能となっています。このようにセキュリティ面は十分に考慮されている一方で、ファイルストレージにアクセスする場合のプロトコルはCIFS(Common Internet File System)、NFS(Network File System)が主流であるのに対してオブジェクトStorageはHTTP(S)を採用しているため、REST APIを使って様々なシステムからのアクセスができるようになっています。
デメリットとしては、HTTP(S)を利用した通信であるため他のストレージに比べて速度が遅くなりがちという点が挙げられます。そのため、静的なWebサイトのデータや動画配信サイトのデータを保存しておく場所には適しているものの、更新頻度が高いデータや高速処理が必要となるデータの保存には向いていません。
Azure Storageアカウントについて
Azure StorageアカウントはMicrosoft Azureのストレージサービスを利用するために欠かせない要素となるため、初めて利用する際はぜひこれをきっかけに抑えておくことをおすすめします。このアカウントによって利用できるストレージサービスは2023年現在で「Azure BLOB」「Azure Files」「Azure Queue storage」「Azure Table storage」「Azure Storage Disk」の5つがあり、これらストレージへのデータ保存やアクセス、管理をするインターフェースあるいはエンドポイントとしての役目を持っています。ストレージサービスとStorageアカウントには十分な関連性があるものの、あくまで異なる要素であることを覚えておきましょう。また、各ストレージにはBCP(事業継続計画)対策として活用できる冗長性オプションが提供されています。各ストレージサービスの詳細は次の章で紹介します。
Azure Storageアカウント名はユニークである必要があり、データ保存先のリージョンを選択することができます。地理的に近いリージョンを選択することでレイテンシーを最小限に抑えることができるでしょう。もし別のリージョンを利用したい場合は、そのリージョン用に別途Azure Storageアカウントを作成しなければいけない点にはご注意ください。
なおAzure Storageアカウントには「汎用 v2」「汎用 v1」「BLOB ストレージ」の3種類があり、それぞれに利用できるサービスが異なります。「汎用 v2」は現在利用されることの多いアカウントであり、現時点での最新バージョンとなります。このアカウントでは上記にあげた全てのストレージサービスが利用できるため、特にこだわりがない場合は「汎用 v2」を選択すれば間違い無いでしょう。
「汎用 v1」は旧バージョンのアカウントであり、「汎用 v2」と同じく全てのストレージサービスを利用できるものの最新機能を利用できなかったり、パフォーマンスに制限があったりという状況があるため特におすすめはしません。ただし、過去に作成されたアカウントや既存のアプリケーションとの互換性を保つために使用されることはあります。
最後の「BLOB ストレージ」は、ストレージサービスとして「Azure BLOB」のみ利用できる専用アカウントです。なおこのアカウントではアクセス層をホット(アクセス頻度が高いデータ使用時に適している。ストレージコストが高くアクセスコストが安い)、クール(アクセス頻度が低いデータの保存に適している。ストレージコストが安くアクセスコストが高い)、アーカイブ(クールよりさらにアクセス頻度が低いデータの保存に適している。ストレージコストが安くアクセスコストが高い。さらにアクセスに時間がかかる)の3種類から選択する必要があります。
パフォーマンスレベルについて
Azure Storageアカウント作成時にはパフォーマンスレベルの選択も必要となります。パフォーマンスレベルは基本的に「Standard(HDD)」「Premium(SSD)」の2種類で、Standardを選択した場合は特にアカウントの種類を選択せずに作成ができ、そのアカウントで複数サービスを利用できるようになります。ディスクにSSDを採用しているのでPremiumのように高速なアクセスが可能で、HDDを採用するStandardはそれよりスピードは遅くなるもののコストを抑えやすいという特徴があります。
冗長性オプションについて
全部で6種類(LRS、ZRS、GRS、RA-GRS、GZRS、RA-GZRS)ありますが、大きく分けるとLRS、ZRS、GRSの3種類に分類することができます。
LRS(Local Redundancy Storage)は同じデータセンターで3ノードにデータの複製が行われ、障害が発生した際には自動で切り替わります。ZRS(Zone Redundancy Storage)は同じリージョン内の3箇所のデータセンターでデータの複製が行われ、障害が発生した際には自動で切り替わります。GRS( Geo Redundancy Storage)はプライマリとセカンダリのリージョンそれぞれにおいてLRSの方式で非同期でデータを保存します。障害が発生した際は手動での切り替えが必要です。なおこの中ではLRSの持続性が最も低くなっていますが、それでも99.999999999%なのでテスト等で利用する場合はそこまで重要なデータを扱わない場合はLRSで十分と言えます。
なおGZRSはプライマリにZRS、セカンダリにLRSを採用したタイプで、RA-GRS、RA-GZRSはいずれも障害発生時に自動で切り替えが行われるタイプとなっています。
Microsoft Azureの代表的なStorageサービス
Microsoft Azureでは2023年時点で、20弱のユーザーの多様なニーズに対応できるストレージサービスが提供されています。今回はAzure Storageアカウントを作成して利用するものを含め、その他代表的なストレージ関連サービスについても紹介します。
Azure Files
フルマネージドのファイルストレージであり、シンプルなデータ管理や共有が可能なサービスです。プロトコルにはLinuxOSからのアクセスが可能なNFS(Network File System)とWindows、Linux、MacOSのいずれからもアクセス可能なSMB(Server Message Block)を採用している他、REST APIでのアクセスも可能となっています。
Azure Active Directoryと連携することでユーザーアカウントの管理やアクセス制御を行うことや、暗号化やファイアウォール等のセキュリティ機能によってデータの安全性を確保することも可能です。
Azure Storage Disk
ブロックストレージであり、ディスクサイズとタイプを選択することでOSディスク、データディスク、一時ディスクといった様々な用途としてVMにアタッチすることが可能なサービスです。
保存されたデータはサーバーサイドの暗号化によって保護される仕組みとなっていますが、「Azure Disk Encryption」を利用することでVM単位での暗号化もできるようになる他、Azure Backupと連携することでデータ破損や意図しない削除が発生した場合の対策を採ることもできます。
Azure Blob Storage
大容量の非構造化データの保存・管理に適したオブジェクトストレージサービスです。Azure Blob Storageでは保存したデータのことを「Blob」、そのデータを格納した領域のことを「コンテナー」と呼びます。
特殊なプロトコルは使わず一般的なプロトコルであるHTTP/HTTPSでアクセスできることが一つの大きな特徴で、これによって様々なプログラムからのアクセスが可能となっています。Webコンテンツやストリーミング配信、バックアップ・リストア用のデータ保存、ビッグデータ等の分析データの保存等に適しています。
Azure Data Lake Storage
データレイクの構築が可能なストレージサービスです。データレイクもデータウェアハウスもビジネスに活かせる大容量データを蓄積することができる点は同様ですが、データウェアハウスと異なって構造化・非構造化データのいずれも生のデータのまま格納が可能です。
Azure Data Lake Storageは「Data Lake Storage」「Data Lake Analytics」「HDInsight」といった3つのサービスで構成されており、これらによって大容量データの蓄積や分析可能な状態へのデータの変換、分析、超並列のデータ変換・処理プログラムの開発等も可能となります。また、Azure Synapse Analytics、Power BIといったその他のAzureサービスと連携してより高度な分析を行うことも可能です。
Queue Storage
離れたシステム同士でデータ交換をするメッセージングサービスで、その際に利用されるメッセージを一時的にキューとして保管できます。HTTP/HTTPSプロトコルでのURLを使ったアクセスが可能であり、非同期でのメッセージ処理が可能である他、Azureのストレージを利用したサービスであるため最大64KBといったメッセージサイズとしては大容量なものであっても格納が可能というような特徴を持っています。
Azure Container Storage
2023年5月にリリースされたAzureの新しいマネージドのコンテナストレージサービスです。またこの記事を執筆している7月時点ではプレビュー段階であるため、利用できるリージョンは限られています。
コンテナ化されたアプリケーションのデプロイやスケーリングが可能な「Kubernetes」と統合されており、Kubernetesのクラスタで実行されているデータを格納するための永続ボリュームを動的にプロビジョニングできる仕組みとなっています。公式サイトでは、Linuxベースの「Azure Kubernetes Service(AKS)」において永続ボリュームがサポートされることが記載されていました。
Microsoft Azureの利用料金や無料利用枠、Azureアカウント・サブスクリプションの仕組みについて
まず利用料金ですが、他のクラウドサービスと同様にほとんどが従量課金制となっています。そのため仮想マシンやデータベース、ストレージ等におけるリソースの利用時間やデータ転送量に応じて料金が発生しますが、具体的に課金の対象となるものはサービスによって異なります。そのため実際に利用する際は、あらかじめAzureの公式サイト内の各サービスページで詳細を確認しておくことをおすすめします。またAzureのサービスにおいてはリソースの自動スケーリング(スケールアップ・スケールダウン)が可能であるため、スケーリングが行われることも見越したうえでの見積もりを出してもおきましょう。
Azureには「料金計算ツール」「総保有コスト(TCO)計算ツール」といった2つの見積もり作成ツールが用意されているため、組織等で予算の作成が必要となった場合はぜひご利用ください。「料金計算ツール」は単純なサービスの利用料を、「総保有コスト(TCO)計算ツール」は人件費や電力量等を含めた見積もりに適したツールとなっています。サービス使用中の利用料金についてはAzure portal内の「コストの管理と請求」というメニューから確認可能となっています。
なお、Azureには従量課金制以外に1年あるいは3年単位でリソースを予約しておくことで最大72%の割引が受けられる料金形態「リザーブドインスタンス」も用意されています。あらかじめ長期利用が決まっている場合や使用頻度が高いサービスにおいては、リザーブドインスタンスで契約した方が得になる可能性が高いです。
続いてAzureの無料利用枠について解説します。仕組みについては後ほど詳しく紹介しますが、Azureは無料アカウントを作成するだけで30日間利用可能な200ドルのクレジットが付与され、Azureの様々なサービスにそのクレジット分を使うことができます。もし200ドルを超過した場合はその分の支払いが必要です。
さらに人気のあるサービスにおいては、上記クレジットとは別に12ヶ月間無料で利用可能である他、55以上のサービスが常時無料で利用できます。無料となる対象サービスはAzureの公式サイトで詳しく紹介されていますが、今回取り上げているストレージ関連のサービスで言うと例えばオブジェクトストレージの「Azure Blob Storage」や、アクセス頻度の少ないデータを保存する「Archive Storage」が12ヶ月無料となっています。代表的なサービスである仮想マシンの「Virtual Machines(Linux/Windows)」やデータベースシステムの「SQL Database」等も12 か月間、プライベートネットワークを構築できる「Virtual Network」やコードエディタの「Visual Studio Code」等においては常時無料となっています。
Azureアカウントとサブスクリプション
Microsoft Azureを利用するには、Azureアカウントとサブスクリプションの両方が必要です。Azureアカウントは無料で作成ができ(Microsoftアカウント、GitHubアカウントのどちらかと紐付ける必要がある)、同時にサブスクリプションも作成される他、Microsoft Azureの統合管理画面であるAzure portalへのアクセスも可能となります。
Azureは基本的にこのAzure portal内でサービスの追加や各サービスの管理・監視、デプロイ等を行うこととなります。なおアカウント作成時には、有料プランを利用しない場合でもクレジットカード情報の登録が必要となる点にご注意ください。またアカウントの作成と同時に前述した200ドルのクレジットの利用や一部サービスを無料で利用できるようになります。
Azureに限らずMicrosoft365等のMicrosoftのサービスにおける独自要素として「サブスクリプション」というものがあります。近年は音楽や動画コンテンツとしてサブスクリプションサービスが一般的となっているため、多くの人がサブスクリプションという言葉には馴染みがあるかと思いますがAzureで言うサブスクリプションは課金単位のことだと思っていただいて問題ありません。一つ一つのサブスクリプションは独立していて、それぞれにサービスを契約し、支払いを行います。サービスはサブスクリプション内で「リソースグループ」にまとめることもできます。
なおサービスを追加する場合やリソースグループを作成する場合はどのサブスクリプションに属するのかを指定する必要があります。これによって利用料金をサブスクリプションごとに集計できるようになります。また料金関連だけではなく、サブスクリプション内でポリシーを統一するという利用方法も可能です。
このサブスクリプションの仕組みを活用することによって、同じ組織でもそれぞれの部署ごとにAzureを使った別システムを構築・運用し、予算の作成や支払いも別で行いたいといった場合もスムーズに運用できるようになります。
まとめ
今回見てきたように、Microsoft Azureでは個人や組織が柔軟にデータを管理できる様々な種類のストレージサービスが提供されていることがわかっていただけたことでしょう。オンプレミスと同様にクラウド上でシステムを運用する場合もストレージは欠かせない仕組みであり、全体的に取り扱うデータが増加傾向にある昨今ではその重要性がさらに高まり、異なるニーズに応えるためにまた別の新しいサービスが登場する可能性もあります。
今回紹介したAzure Files、Azure Storage Disk、Azure Blob Storage、Azure Data Lake Storage、Queue Storage、Azure Container Storageという6つのサービスだけでもそれぞれに異なる特徴を持っているため、その時のニーズに合わせて適切に選定して利用することが求められます。そのためには各サービスにおける正しい知識を持ち合わせておかなければなりません。同時に、今回紹介したAzure Storageアカウントのように各社独自の仕様についても把握しておく必要があります。
幸いAzureでは無料のAzureアカウントを作成した際にAzure内で自由に使えるクレジットが付与されたり、サービスによって無料利用枠が用意されていたりという仕組みがあるため、ぜひそれらを利用して実際に構築を始める前に検証しながら選定することをおすすめします。
またサブスクリプションという概念もストレージのみならずAzureを含めたMicrosoftのサービスを利用するに当たって重要な要素となるため、初めてAzureを利用する方もこの記事をきっかけに覚えていただければ幸いです。