Azureのコスト最適化とセルフサービス
最近仕事の一つとしてAzure利用の無駄を調べて利用料金を最適化する事をしています。
Azure自体種類が沢山ありますし利用料金の取得はそれぞれ色々な手法がありますが、料金の無駄を省く…という観点だとEA契約を対象にすることが多く、まずはAzure EAポータルからAPIキーを使って利用料金を取得する手法であれこれするのが良さそうです。
個人的に一番やりやすいと思っているのはPowerBIと連携してレポートを作成する手法です。データ連携は簡単にできますし、あとはPowerBIの豊かな表現力を使って自由にさまざまな切り口で利用状況を可視化する事ができます。
EA Azure自体で適切に部署、アカウント、サブスクリプションの構造を作成するのがまず必須事項で、その上でその切り口で情報を可視化するのが良いです。
さらにリソースグループやタグを使った構造を採用しているならその切り口でもみられるようにするビューも必要ですね。
もちろんこの辺りはcloudyn(Azure Cost Management)を利用するのでも良いです。
で、ここまではいいのですが、「本当にこのVMのサイズは適切なのか?」というようなところまで踏み込もうとするとAzureのサブスクリプション自体に権限を持たないといけません。権限を持てば
- CPU, Netwotk, Storageがどの程度実際に使われているか(使われてなければサイズを下げるべきかも)
- アタッチされていないVHDファイル
なども見えてきます。
この辺りの情報を元にAzure Cost Management では最適化候補をレポーティングしてくれます。(もちろん全てそのまますぐに指示に従ってやればいいとはならないのですが)
が、このAzureサブスクリプションに対して権限を付与する操作周りがとても大変です。
そもそもAzureはセルフサービスでバンバンサブスクリプションを作って各種サービスを使ってシステムを作っていくことができます。その自由さやスピードが1番の良いところだと私は思っています。
が、多くの人がそれぞれバラバラに作成したサブスクリプションに対して管理者が漏れなく権限を持つ、それによってサブスクリプション内部まで情報を取得して無駄を発見する…ということができないのです。
組織の管理者であっても、誰であっても、サブスクリプションの所有者によって明示的に権限を付与されなければ何もできない構造になっています。
利用者が全員技術的にしっかりと理解した人なのであれば完全に任せておくだけで良いのでしょうけれども、現実的にはなかなか難しく。コストを支払う部署なり、人なりがきちんとその責任でもって使っているのだからこれでいいのだ!というように割り切ればそれでおしまいですが、やはりこのあたりはコントロールしたくなる人の気持がわかります。
で、よく考えるとCSPではこのようなことが発生しない構造になってるんですよね。サービスプロバイダーは全ての顧客の全ての環境に権限を持つことができます。
さて、Azure EAにおいても管理者が全てのサブスクリプションに対して監視のための権限はもちつつ、セルフサービスのスピード感も損ないたくない…という時にそれが可能なのかというと…別途System Center Service Managerですとか、もう一枚仕組みを噛ませば簡単に実現できますね。
ユーザーは申請を出して、全自動でサブスクリプションが発行されるけれども、同時に組織の管理者にも権限がわりあたっている…そんな状況が理想なのかもしれません。
と、思いながら今日も権限くださーい。あるいは、サービスに権限つけてくださーい。とお願いして回るのでした。