クラウドコスト最適化 のための技術戦略
クラウドコスト最適化のための技術戦略は、適切な容量の適切なリソースを、適切な時期に割り当てることを中心に実施します。この戦略には、リソースのデプロイに先立って要件を分析することも、要件の変更に応じてデプロイを変更することも含まれます。
最善のリソース割り当て
インスタンスタイプを、メモリー、データベース、コンピューティング、グラフィック、ストレージ容量やスループットに応じて最適化します。何が適切な選択かは、お使いのアプリケーションの性質によって変わってきます。
CPUとメモリーの使用を経時的にモニタリングすることで、無駄の排除につながる、サイズ縮小が可能なインスタンスの状況が明らかになってきます。不要なものを手放すことで、大幅にコストを削減できます。
ビルトインツールによって利用状況をトラッキングし、得られるデータに基づいて要件を再評価することが重要です。これを進行中のプロセスで行うことで、使用するクラウドアプリケーションが必要とする実際の処理やメモリーをより把握できるようになります。CPUをあまり使わないインスタンスにアプリケーションを集約すれば、コスト削減につながります。
どこ出身のユーザーが多いかや地域によるコストの違いなど、地理的なことも考慮する必要があります。ユーザーに地理的な偏りがある場合、その地域にリソースを割り当てる最適化方法もあります。
リソースの動的割り当てと静的割り当て
ある時期だけリソース割り当てが必要な作業負荷(データのバッチ処理など)に対しては、必要時にスポットインスタントを作成する方法が、より経済的です。実際の活用に応じてインスタンスのオン/オフを適宜切り替えることで、コストを最大75 %も削減できます。自動スケジューリングも効率性を高めます。クラウドプラットフォームの設定によって、一連のルールに基づいてリソースを自動拡張することもできます。
アプリケーションを再設計してスポットインスタンスを活用できるようにする方法も、コスト削減につながります。活用はいつでも停止できます。ただし、スポットインスタンスは、ステートフルアプリケーションやデータベースなどには向きません。
予測が不可能な作業負荷や固定の作業負荷に対しては、容量が保証されたリザーブドインスタンス(RI)がより良い選択です。RIは、長期間利用することで大幅な割引を受けられます。RI割引の機会を逃さず、無駄な出費が出ないようにすることも、同様に重要です。
適切な計算資源の利用
コスト面での影響を考慮し、CPUではなくGPUを選択する方法もあります。アプリケーションが大規模な計算(マシンラーニングや3Dレンダリングなど)を行う場合は、CPUよりもGPUが好まれます。要件に応じて、適切なCPUインスタンスやGPUインスタンスを作成できます。
Amazon EC2 CPUインスタンス、G3などのGPU専用インスタンス、手頃な価格のElastic Graphicsといったさまざまなタイプがあり、これらによって、既存のCPUインスタンスにGPUインスタンスを追加できます。マシンラーニングに対しては、並行処理をサポートする、より付加化価値の高いEC2インスタンスタイプのP2、通常のEC2インスタンスにアタッチできる、手頃な価格のElastic Inferenceがあります。
適切なリソースの選択
データのストレージからの出し入れは高くつくため、ストレージの選択は最初に行い、要件に沿ったものにする必要があります。Amazon S3 Standardは、頻繁に読み出しが必要なデータ向けのオブジェクトストレージです。Amazon S3 Standard - IAおよび関連する別タイプは、非常に長期間アクセスしない可能性が高いバックアップデータ向けとしてふさわしいストレージです。コンプライアンス対策バックアップや記録保管用には、Amazon Glacierが手頃です。また、SQL表現構文を使ってS3からオブジェクトを選択的に読み出すことで、データアクセスコストだけでなく、転送コストおよび計算コストも削減できます。
性能要件は、ブロックストレージ(Amazon Elastic Block Storeなど)や拡張可能なLinuxファイルシステム(Amazon Elastic File Systemなど)といったストレージオプションで満たすことができます。スループット、読み出し時間およびコストがトレードオフの関係にある、高性能コンピューティングやWindowsネイティブアプリケーションといった要件に特化したシステムもあります。
時間の経過と共にアクセス頻度が低くなった場合は、ストレージライフサイクルポリシーを適用して、データを別のストレージに移すこともできます。ライフサイクルポリシーを適用し、ライフサイクルの役割を終えたらデータを削除または移動する自動ルールを実行することで、不必要なデータを処分してストレージコストを削減できます。日付入りのスナップショットは、よくあるストレージの無駄遣いです。これらは、適切なポリシーやライフサイクル管理ツールを使ってストレージから排除できます。
軽量の代替リソースの利用
Lambda
サーバーレスを特徴とするLambdaは、時間の限られた作業負荷、メモリーをあまり使わない作業負荷やステートレスな作業負荷に用いることのできる、コスト削減が可能な選択肢です。Lambdaの実行失敗やリトライは高くつくため、どのように実行さるかに注意を払う必要があります。
コンテナ
コンテナは、アプリケーション実行が分離されている場合に用いることができる軽量の選択肢です。複数のコンテナを専用マシンや仮想マシンで実行すれば、サーバーを有効に活用できます。ここでも重要なのが、軽量のOSイメージを用いるようにするなど、適切な実行を行うことです。
コンテナホスト
コンテナは、EC2などの仮想マシンインスタンスで実行できます。EC2の場合、使用するインスタンス数ではなく、インスタンスの容量に対して課金されます。Fargateといった専用プラットフォームによって、専用のコンテナホスト環境にコンテナをデプロイできます。
Fargateの場合は、CPUとメモリーの1秒単位の従量課金となっています。簡易分析によれば、50 %のインスタンスを利用する場合、Fargateで10~20 %のコスト削減が可能とされています。一貫性のある作業負荷にはEC2ベースのコンテナホストが最適と考えられますが、バッチ処理などの一貫性のない作業負荷の場合は、Fargateがより良い選択肢です。
ライセンスコストの管理
基本のオペレーティングシステムのライセンスコストによって、アプリケーション実行の総費用が急激に押し上げられる可能性があるため、ライセンス管理は慎重に行う必要があります。仮想マシン上の、DebianやUbuntuといったLinuxシステムのインスタンスは、WindowsインスタンスやサポートされるRHELインスタンスよりも低価格です。
.NETアプリケーションを実行するには、Windowsライセンスの支払いが必要です。.net Coreフレームワークにインスタンスをマイグレーションすれば、ライセンス費用が低価格か不要のLinaxインスタンスでシステムを実行できます。つまり、.net Coreへのマイグレーションが、コスト削減戦略になるということです。Windowsライセンスをすでに購入している場合は、そのライセンスを生かせる専用ホストを使用した方がいいかもしれません。
OracleやMS SQLといった非標準のデータベースへの依存を避けることでも、コスト削減が可能です。AWS Schema Conversionなどのツールを使えば、データを手頃な価格のデータベースに移すことができます。非標準のシステムを使用しなければならない場合であっても、MS SQL Web / Standard / Enterpriseなど、バージョンの選択を慎重に行えば、コスト削減につながります。
単一クラウドの活用
部署のニーズ、価格設定、SLAやセキュリティなどさまざまな必要性によって、マルチクラウドモデルを推進する企業もあります。しかし、複数のベンダーのさまざまな製品を管理するには、専用のツールと追加のトレーニングが必要となり、費用がかさみます。一方、単一のクラウドであれば、プラットフォーム間の切り替えを管理する手間もなく、クラウド間のネットワークトラフィック費用もかかりません。
リソースをすべて単一のクラウドにデプロイすれば、ボリュームディスカウントを受けられる可能性が高くなります。さまざまな理由から単一のクラウドがおすすめですが、ディスカウントのようなメリットには限りがある可能性もあります。適切な選択を行うには、自社のアプリケーションニーズと環境を十分に考慮する必要があります。
最善のリソース割り当て
インスタンスタイプを、メモリー、データベース、コンピューティング、グラフィック、ストレージ容量やスループットに応じて最適化します。何が適切な選択かは、お使いのアプリケーションの性質によって変わってきます。
CPUとメモリーの使用を経時的にモニタリングすることで、無駄の排除につながる、サイズ縮小が可能なインスタンスの状況が明らかになってきます。不要なものを手放すことで、大幅にコストを削減できます。
ビルトインツールによって利用状況をトラッキングし、得られるデータに基づいて要件を再評価することが重要です。これを進行中のプロセスで行うことで、使用するクラウドアプリケーションが必要とする実際の処理やメモリーをより把握できるようになります。CPUをあまり使わないインスタンスにアプリケーションを集約すれば、コスト削減につながります。
どこ出身のユーザーが多いかや地域によるコストの違いなど、地理的なことも考慮する必要があります。ユーザーに地理的な偏りがある場合、その地域にリソースを割り当てる最適化方法もあります。
クラウドコスト最適化 クラウドコスト最適化
クラウドデプロイは数が増え、複雑さを増していくため、見落とされるものが出てくる可能性があります。アイドルインスタンスが蓄積するにつれ、それによって、クラウドの支出や性能、セキュリティなどに悪影響が及ぶ、仮想化スプロール(仮想マシンの場合)状態が引き起こされます。クラウドコストガバナンスポリシーを策定し、ガバナンス体制を構築することで、クラウドデプロイの過程をある程度管理して、コスト超過を避けることができます。
部署間で相反する優先事項によってコスト最適化の取り組みが台無しにならないよう、それらを排除するためには、コスト最適化にかかわるさまざまな役割を定義し、コスト最適化を共有責任とすることが重要です。クラウドリソースの利用や負担費用をモニタリングするシステムも、ポリシーによって管理し、それぞれのプロジェクトに関連付ける必要があります。
ガバナンスポリシーは、リソースの割り当てだけでなく、リソースのライフサイクル管理にも適用します。定期監査によって、ポリシーが不必要な出費を抑える機能を十分に果たしているか確認できます。
クラウドの膨れ上がる費用に歯止めを