コスト最適化を実現するための「Azure Advisor」活用から設計上の注意点まで
Azureの利用コストを最適化するためのベストプラクティス
2022年06月10日 08時00分更新
コスト最適化のためにシステム設計段階で考えるべきこと
ここまでは主に運用面で工夫できるコスト最適化手法を取り上げてきた。しかし、より大きなコスト最適化を図るためには、設計段階からそれを意識しておく必要がある。ここからは少し設計の内容にも踏み込んで、コスト最適化手法について考えてみたい。
●ネットワークの「閉域化」要件を再考する
Azureでは、さまざまなPaaSリソースを仮想ネットワーク(Azure VNet)内に配置するオプションが提供されている。たとえば「App Service Environment」「Azure SQL Managed Instance」「API Management」「Stream Analyticsクラスター」といったリソースだ。
こうしたリソースを仮想ネットワーク内に配置することでセキュリティ上のメリットがあるが、その反面、コストが高くなってしまうことが多い。また、運用における考慮事項も多く、UDR(ユーザー定義ルート)の設定やスケールアウト処理に結構時間がかかるサービスもある。
リソースを仮想ネットワーク内に配置するのではなく、「VNet統合」や「Private Endpoint」などの機能を使ってPaaSサービスと仮想ネットワークを接続する構成をとることで、ネットワークレベルではほぼ同等の制御が可能になる。比較的安価なマルチテナント環境のPaaSサービスを利用できるので、ぜひ設計段階で検討したい項目だ。
●スケールアウト可能な設計を行う
ミドルウェアやアプリケーションのレイヤーまで踏み込んだ話になるが、スケールアウトができる設計になっているかどうかは、コストの最適化に大きな影響を及ぼしうる。
アプリケーションのパフォーマンスを向上させる手段がスケールアップしかなければ、稼働する(1台の)仮想マシンのコア数を4コア→8コア→16コア→32コア→……と増やしていくことになる。
アプリケーションがスケールアウト可能な設計になっていれば、複数台の仮想マシンを使い、合計コア数を4コア→8コア→12コア→16コア→20コア→……とより細かなステップで増やせる。コア数を縮小する場合も同様で、全体のコア数をより細かく調整することが可能になり、コストを最適化しやすい。
アプリケーションの性質にもよるが、スケールアップでしか対応できない部分は外部化し、たとえばWebサーバーの仮想マシンだけでもスケールアウトできるよう設計するのが良い。非機能要件の中には拡張性設計が含まれていると思うが、単純に個々のリソースがスケールアウト/インできるというだけでなく、システム全体としての最適な組合せを考えたい。
●要件次第でIaaSとPaaSを使い分ける
IaaSを使うべきか、PaaSを使うべきか――コストの観点からもよく比較される2者だが、結局は要件次第だと筆者は考える。
データベースを例に挙げると、PaaSの場合は運用コストを大きく減らすことができるが、Azureプラットフォーム側のメンテナンス対応に苦労するケースも散見される。一方でIaaSに「SQL Server」をインストールして利用する場合には、管理者の運用タスクが相変わらず残るため、クラウドに移行するメリットも大きく減ってしまう。
運用コストを含めて最適化が可能なのはPaaSだが、その場合に非機能要件も見合うかどうかはよく確認する必要があると理解しておいてほしい。
●コンテナ環境を利用する
昨今、非常に活用事例が増えているコンテナ環境だが、従来の仮想マシンを組み合わせた環境と比べると段違いに多くの知識を必要とする。Azureで言えば、Azure仮想マシンや「Azure Load Balancer」といったAzureの基礎的な知識に加えて、オーケストレーターである「Kubernetes」についての一連の知識も身につける必要がある。
そもそも、自分が扱うアプリケーションがコンテナ環境に適しているかどうかも要確認である。具体的にはスケールアウト可能な設計になっているか、ステートフルな部分とステートレスな部分が分かれているか、といったポイントを確認する必要がある。
コンテナ環境を利用できるならば、「Azure Kubernetes Service(AKS)」などのマネージドサービスや、サーバーレス環境の「Azure Container Apps」を利用することでインフラをより抽象化し、インフラコストを下げることも可能になる。
* * *
以上、本稿ではさまざまなコスト管理と最適化のベストプラクティスを紹介してきたが、いずれも1回限りのレビューではなく「継続して実施すること」が大事であると強調しておきたい。
予算やアラートの設定は、Azureの利用が増えていけば再度調整が必要になるはずだ。また、Azure Advisorの推奨事項も随時変化するので、定期的に推奨事項が増えていないかどうかを確認してほしい。
なおマイクロソフトの公式ドキュメントでも、設計/モニタリング/最適化のそれぞれの段階に合わせた「チェックリスト」が提供されている。
●設計:チェックリスト - コストの最適化
●モニタリング:チェックリスト - コストの監視
●最適化:チェックリスト - コストの最適化
これらのチェックリストも定期的に確認し、コストを最適化しつつ、ぜひともAzureを使い倒していただきたい。
この連載の記事
-
第5回
TECH
Azureにおける「IDとアクセス管理」のベストプラクティス -
第4回
TECH
あらゆる観点から考える「データセキュリティ」のベストプラクティス -
第3回
TECH
“ポストクラウド時代”の効率的なインフラ管理方法とは -
第2回
TECH
「失敗あるある」から考える、Azure移行のベストプラクティス -
第1回
TECH
Azureで実現する高可用性の“勘どころ”と構築のポイント - この連載の一覧へ