こんにちは、サイオステクノロジー技術部武井です。
今回は、弊社が提供するサービス「サイオスAzure課金管理サービス」のアーキテクチャについて説明したいと思います。
サイオスAzure課金管理サービスとは?
大学・官公庁でのAzure利用料金管理を容易にするためのSaaS型サービスです。Azureは、非常に便利ですが、ちょっと気を緩めると、あっという間に使いすぎて、すごい料金を請求されることになります。Azureの利用料金を適切に管理し、使いすぎを防止することが可能です。詳細は以下のURLを参照下さい。
https://sios.jp/products/edu/azure-billing.html
サイオスAzure課金管理のアーキテクチャ
サイオスAzure課金管理サービスのアーキテクチャには、1つの設計理念があって、それは「構成する全てのシステムがPaaSであること」です。IaaSですと、OSやアプリケーションサーバーのセキュリティアップデートを余儀なくされます。PaaSであれば全てAzureが面倒を見てくれます。
以下がシステム構成図です。
アプリケーションサーバーはAzure Web App、ジョブ実行環境はAzure Web Job、データベースはAzure SQL、メールサーバーはSendGrid、キューはAzure Storageキューと、全てPaaSで構成されています。
Azure Web App
Webアプリケーションを動かす環境です。Java、PHP、C#等様々な言語をサポートしています。OSもLinuxとWindowsから選択ができますが、2017年10月16日現在、JavaをサポートしているのはWindowsだけだそうです・・・。Linuxも早くサポートしてほしいです。
デプロイ方法も多種あり、便利なのはgitによるデプロイです。
サイオスAzure課金管理サービスでは、管理者向けのWebインターフェースを提供しています。JavaのWebアプリケーションフレームワークであるSpring Bootをベースとしたアプリケーションが稼働しています。
Azure Web Jobs
Azure WebJobsとは、Azureにて、crontabで定義するような定期処理、もしくはデーモンプロセスのようなものを起動するための仕組みです。
スケールアウト、スケールアップも管理ポータルから可能で、楽ちんです。
サイオスAzure課金管理サービスでは、APIによって取得した課金情報のデータベースへの格納、メッセージキュー監視などに利用しています。
Azure SQL
Microsoft SQL ServerのPaaS版です。バックアップも全て自動で取得してくれますので、アプリケーションエンジニアは、開発に専念できます。
サイオスAzure課金管理サービスでは、APIによって取得した課金情報を保存し、集計するために利用しています。
SendGrid
メールを送信するためのサービスです。SDKが提供されており、簡単にメールを送信ができます。
一番すごいのは無料枠でのメールの送信量です。月25,000通送信できます。ほとんどの場合は、Freeでいいのでは?
Azure課金管理サービスでは、あらかじめ定めた仕様限度額を超えた場合のアラートメール送信に利用しています。
Azure Storageキュー
メッセージキューのための仕組みです。AzureにはAzure StorageキューとService Busキューの2種類あります。平たくいってしまえば、前者は機能は少ないけれど高速、後者は多機能だけど若干レスポンスが遅いかもといったところです。
Azure課金管理サービスでは、メール送信、仮想マシン作成、ユーザー一括作成処理など、非常に時間のかかる処理を非同期で行うために利用しております。各システムが、Azure Storageキューにメッセージをキューイング、Workerプロセスが常時キューを監視し、メッセージの内容に応じて、適切な処理を行います。