はじめに
本記事では、大規模なメッセージキューをクラウド上で構築できる「Azure Queue Storage」について、その仕組みや特長、活用シーンを分かりやすく解説します。
システム間の非同期通信やバックグラウンド処理をスケーラブルに実装したい方、クラウドのメッセージングサービスを検討中の方は、ぜひ最後までご覧ください。
Queue Storage とは
Azure Queue Storage は、クラウド上で大規模なメッセージキューを構築できるサービスです。
アプリケーション間で非同期メッセージの送信と受信を行うために設計されており、スケーラブルなバックグラウンドプロセッシングを容易に実現します。
このサービスを使用すると、シンプルなメッセージングモデルに基づいて、1つのプロセスから別のプロセスへ情報を送信できます。これは特に、ジョブ処理やタスクのキューイングが必要なシナリオに適しています。
メッセージキュー とは
メッセージキューとは、非同期メッセージングシステムの一部で、プロセスやコンポーネント間でデータやメッセージを交換するための仕組みです。
メッセージキューを使うことで、異なるシステム間での通信やタスクの非同期処理が可能になります。
引用元
特徴
-
FIFO(First-In, First-Out)
通常、キューでは最初に追加されたメッセージが最初に処理されます。
しかし、可視性タイムアウトという仕組みがあり、これを設定した場合、処理に失敗した場合に再度メッセージを利用可能に設定することができます。これは、Azure Queue Storage は処理の信頼性を高めていますが、
これによりFIFOの厳密性が保証されないケースもあります。
-
非同期メッセージング
メッセージが送信されるとキューに蓄積され、コンシューマーがそれを後で取り出します。
これにより、リアルタイム処理の必要がなくなり、非同期処理を提供でき、ユーザはその処理完了を待つことなく、次の操作ができ UX の向上につながります。
-
シンプルなメッセージモデル
Azure Queue Storage のメッセージは UTF-8 でエンコードされた文字列として保存されます。1メッセージあたり最大64KBです。
64KB以上のデータを格納したい場合は、複数のメッセージに分割するか、Azure Blob Storage などの他のストレージサービスを利用し、メッセージにその参照情報を格納することができます。
-
可用性と耐久性
Azure Queue Storage は、Microsoft Azureのデータセンターに分散配置され、冗長性が確保されています。また、データの損失を防ぐために、自動バックアップやデータ整合性チェックも組み込まれています。
- LRS(Locally Redundant Storage)
一つのリージョン内で3つのコピーを保持する。
- GRS(Geo-Redundant Storage)
2つのリージョンにそれぞれ3つのコピーを保持する。
- RA-GRS(Read-Access Geo-Redundant Storage)
災害時の読み取り専用アクセスが可能です。
resource "azurerm_resource_group" "example" {
name = "rg-blob-sample"
location = "eastus"
}
resource "azurerm_storage_account" "example" {
name = "examplestorageacc"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_container" "example" {
name = "blobcontainer"
storage_account_name = azurerm_storage_account.example.name
container_access_type = "private"
}
この Terraform コードは、GRS レプリケーションと HTTPS 専用設定を施した高可用性の Azure Storage Account 上に、Azure Queue Storage を作成しています。
まとめ
Azure Queue Storage は、アプリケーション間で非同期メッセージの送受信を可能にするクラウドベースのメッセージキューサービスです。
FIFO(先入先出)方式でメッセージを処理し、可視性タイムアウトや再処理機能により信頼性の確保がされます。
また、シンプルなメッセージモデルと高可用性/耐久性が特徴で、LRS や GRS などの冗長性オプションを活用してデータを安全に保護することができます。
参考

備考
Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。
