Dear Great Hackers

  1. タイアップ
  1. トピックス

Azure利用時の設計原則をまとめた「Microsoft Azure Well-Architected Framework」を読み解く 。クラウドだからこそしっかり抑えておきたい、コスト最適化のポイント

クラウドの力を生かしてデジタルトランスフォーメーションを推進したいが、具体的にどこからどのように手を付ければいいのかーーそんな悩みを抱える企業にとって1つの指針となるのが、企業戦略の策定、実装の道筋を示す「Microsoft Cloud Adoption Framework for Azure」であり、それをAzure上の具体的な設計原則に落とし込んだ「Microsoft Azure Well-Architected Framework」です。

Microsoft Cloud Adoption Framework for Azureがテクノロジ以外の領域も包含した包括的な戦略のガイダンスとなっているのに対し、Microsoft Azure Well-Architected Frameworkは、より地に足の付いた具体的な指針を紹介しています。この記事では、Microsoft Azure Well-Architected Frameworkを構成する「コスト最適化」「オペレーショナルエクセレンス」「パフォーマンス効率」「信頼性」「セキュリティ」という5つの柱のうち、最初のコスト最適化の内容をひもといていきます。

Microsoft Cloud Adoption Framework for AzureとMicrosoft Azure Well-Architected Frameworkの概要についてはこちら

クラウド移行でやりやすくなった「インフラコストの見積もり」

「インフラ技術者の大事な仕事は、きちんとしたコストモデルに基づいてコストを明確化することです」ーーマイクロソフトの第一アーキテクト本部 本部長、内藤稔氏はこう語ります。これはオンプレミスを前提とした時代から変わらないタスクですが、クラウドに移行することによって、インフラコストの明確化がよりやりやすくなったのは、ひとつの進歩と言えるでしょう。

さて、コストは安価であるのに越したことはありません。けれど「ベンダーを叩いて安い見積もりを出してもらう」という不健全な方法を取る必要はないと内藤氏は述べました。

「クラウドが提供するいろいろな機能を活用し、より安く、より効率的に使っていくことを考えることが重要なポイントです」(内藤氏)。よりクラウドを安価に、お得に使えるプランを理解し、どんどん取り入れてデザイン面からアプローチするべきですし、それを継続的に改善していくことが欠かせないとしました。

コスト最適化を実現するための5つの原則

Microsoft Azure Well-Architected Frameworkではコスト最適化の原則として「コスト制約内で保持する」「従量課金制」「監視と最適化」「スケーラブルなコストを目指す」「適切なリソース、適切なサイズ」の5つを挙げています。

「当たり前と言えば当たり前ですが、どんな組織にも予算があります。予算をきちんと理解し、その範囲内でやっていかないといけません。次に、クラウドと言えばやはり従量課金制です。このモデルを理解し、使用量に応じた適切なコストサイジングをすることが重要です」(内藤氏)

需要の増加に応じてどんどんリソースを増やしていけることがクラウドの利点ですが、何も考えずに追加していくだけでは、それに比例してコストも増えてしまいます。従って「どのようにそれを監視し、最適化していくかというアプローチを継続的に回していく必要があります。これと表裏一体で、スケーラブルかつ最適なサイジングをしていくことが重要なポイントになります」と内藤氏は述べました。

Microsoft Azure Well-Architected Frameworkのコスト最適化の柱では、デザイン、プロビジョニング、モニター、最適化という4つのステップごとに、指針を示しています。

まずデザインのステップでは、「設計するときに、常にコスト要件を考えておくことが重要です」(内藤氏)。その前提として、クラウドサービスのコストモデルをきちんと理解しておく必要があります。

「たとえばAzureには世界で65のリージョンが存在しており、土地代や電気代、通信事情と言った各国ごとのいろいろな事情により、リージョンごとにコストが異なることを理解しておく必要があります」(内藤氏)。これはガバナンスの観点と表裏一体です。たとえば、「個人情報を扱うワークロードならば日本リージョンでしか使わせない」といったルールをかけていくべきかどうか、コストの観点とガバナンスの観点を加味しながら考えておく必要があるとしました。

また、デザインの段階で、要件に応じて「マネージドサービス」をきちんと取り入れていくこともポイントだそうです。「地味に忘れがちなのが運用コストですが、運用コストも含めてトータルコストです。Azureが提供するいろいろなマネージドサービスのうち使えるものはどんどん使っていくことにより、全体のコストを下げていくことができます」(内藤氏)

もう一つ、コストを見積もる際、ピーク時だけを前提に検討するとやや高めに付く可能性もあります。ピーク時とそれ以外で価格変動ができるようなデザインやサイジングをすることも、コストの最適化につながります。

コストを見積もるプロビジョニングの段階では、クラウドリソースごとのコスト見積もり方法をきちんと把握することが重要です。「Azureには約280ものサービスがありますが、そのサービスごとに、何をカウントし、何をコストに反映させるかがちょっとずつ違っています」(内藤氏)

たとえば「Machine Learning」はコンピューティングの稼働時間が基準となるため、コストの見積もりもわかりやすいでしょう。しかしこれがEvent GridやService Busになると、「メッセージ操作数」に基づいて課金されますし、Notification Hubsになると、プッシュの通知数に応じて課金されます。アプリケーションの作りがどうなっているかを把握しないと、想定以上にコストが膨らむ恐れがあります。

内藤氏は「それぞれ何に対してコストがカウントされていくのかをきちんと理解しておく必要があります。言い換えれば、コストを算出するには、ビジネストランザクションをきちんと表現し、特定しておく必要があるわけです」と述べました。もちろん、最初から精緻に見積もるのは難しいかもしれません。けれど常に頭の片隅にこのポイントを入れておくことが重要です。

次のモニターの段階では、濫用防止を目的にクラウドへの支出を確認していきます。「コスト管理とは、決して手元に届いた請求書を見て『おっ、オーバーしているな』と思うことではありません。そうではなく、予算オーバーが発生したときにどういったアクションをするかをきちんと考えておくことがコスト管理です」(内藤氏)

このときたとえば、「Azure Cost Management」や「Azure Advisor」といったツールを活用し、リソースの使用量が閾値に達したり、予算オーバーの予兆がある場合はアラートを生成するといった設計をしておくことが推奨されます。

加えてAzureが提供するツールやカスタムレポート、さらにはパートナーが提供するレポートを活用し、クラウドリソースの使用状況を可視化し、共有することも必要です。「別にリソースを使うのが悪い、というわけではありません。きちっと使用状況を把握し、どのような改善ができるかを判断できる場を持ち、フィードバックループを回して改善していくことが重要です」(内藤氏)

その上で、コストの最善化に取り組むことになりますが、「このとき重要なポイントは、クラウドならではの自動スケールを考えやすいアプリケーション構成になっているかどうかです」と内藤氏は述べました。

オンプレミスのアプリケーションをそのままクラウドに持っていったときにありがちなケースとして、スケールアウトによってシステム全体の拡張性を高めていける作りになっていない場合があるそうです。こうなると、クラウドならではの良さがなかなか発揮できません。確かに、スケールアップの形でサーバのサイズを大きくすることもクラウドのリソース活用の一種ではありますが、その際、ダウンタイムが必要になってしまいます。

内藤氏は「ダウンタイムがない、もしくはないに等しい形でスケールできるスケールアウト型のアーキテクチャを採用できる形にしておくには、アプリケーションがステートレスになっていなければなりません。では、ステートレスになっていないアプリケーションをどうやってステートレスにするか、状態情報をどうやって保持していくか、たとえばRedisキャッシュを使うのか…そういったことを考慮していく必要があります」とし、そういった設計に立ち戻って考えることで、さらなるコスト最適化が図れると説明しました。

内藤氏によるとAzureには、「リザーブドインスタンス」や「スポットVM」といったいろいろな「お得プラン」があり、「使わないと損」だといいます。使わないときにはインスタンスを落としてしまったり、ある程度予測できるワークロードならば予約したリザーブドインスタンスを使うといった手段を駆使していくと、さらにコストを下げることができます。

つまり余剰キャパシティの最適化、ワークロードの増減に合わせたリザーブドインスタンスの活用やSLAの有無に応じたメニュー選択によって「コストのメリハリを付けることができるようになります」というわけです。

なお、Microsoft Azure Well-Architected Frameworkでは5つの柱ごとにチェックリストが用意されており、コスト最適化についても12の項目が挙げられています。

「自分のデザインしたシステム、自分の関わっているプロジェクトはどんな感じかを見ると、参考になると思います」(内藤氏)。ぜひ活用してみてはいかがでしょうか。

文:高橋睦美

関連記事