Azureはじめました

Windows Azureで業務システムを組んでみる日記

なんとなくこんな感じになるんじゃないかなー図

f:id:twisted0517:20130504181210p:plain
機能ブロックとしてはこんなつながりになるんじゃないかと。

  • 認証機能はWindows Azure Access Control Service(ACS)に任せる
    • 認証されてからユーザー名あたりで内部ロールを割り当てたりはする
  • SessionのストレージにはComputeServiceのマルチインスタンスに対応できるようAzure Cachingを使っておく
    • 念のためぐらいではあるけど。
  • 棚卸や締め処理なんかの重たい処理はQueueでフローを分ける
    • 管理インターフェースあたりからジョブを登録したらそのままenqueueだけする。
    • バッチ処理用のワーカーがdequeueして処理
    • バッチで生成されたドキュメントなんかはBLOBストレージあたりに入れればいいか *1
    • ワーカーのスケジューリングはうまいことする *2
  • データはSQL Azureで永続化する
    • データ上限があるので、一定のクラスターでデータベースを分割できるよう在庫情報は別にしておく
    • マスターは共通のストレージを使い、変更の少ないものに関してはAzure StorageにビューをキャッシュしておくなどSQL Azureへのアクセスは軽めに予め考えておいたほうが良さげ
    • 管理データにはユーザーやクラスターとDBのマッチングあたりを入れとく
  • データ更新ログはAzure Storageに書いておくとかどうだろう

スケールアウト方針とか

  • 基本はCompute Serviceのインスタンスを増やすだけでいけるはず
  • 期末とかのバッチ処理が忙しい時は一時的にWorkerロール専用のインスタンスを増やして対応とか
  • データ量が飽和しそうなときはSQL AzureのデータベースをClusterで分割する
    • 倉庫ごとに分割とかもっと狭きゃ棚ごとに分割とか
  • トラフィックそのものでネットワークの再構築とか考えないでいいのはかなりデカイ

*1:てきとう

*2:まだ考えてない