フロー コストを最適化するための推奨事項

この Azure Well-Architected Framework のコスト最適化チェックリストの推奨事項に適用されます。

CO:09 フロー コストを最適化します。 各フローのコストをフローの優先順位に合わせます。 フローに優先順位を付ける場合は、各フローの機能、機能、および機能以外の要件を考慮してください。 フロー支出を最適化するには、多くの場合、戦略的な侵害が必要です。

このガイドでは、ワークロード内の各フローのコストを最適化するための推奨事項について説明します。 ワークロード内のフローのコスト最適化には、パフォーマンスを維持しながらコストを最小限に抑えるためにリソースを戦略的に割り当て、管理する必要があります。 この最適化は、投資されたリソースの効率的な利用を確保し、不要な支出を削減し、インフラストラクチャに対する全体的な投資収益率を向上させるので重要です。 ワークロード内のフローをコスト最適化しない場合は、リソースが過剰に保留されるリスクがあり、その結果、運用コストが増大し、収益性が低下します。

定義

期間 定義
分離 複数のフローを含むリソースからフローを削除し、別のリソースに配置する方法。
Flow ワークロードでは、特定の機能を実行するアクションのシーケンス。 フローには、データの移動と、ワークロードのコンポーネント間でのプロセスの実行が含まれます。
システム フロー システム内の情報とプロセスのフロー。 システムはこのフローに自動的に従って、ユーザー フローまたはワークロード機能を有効にします。
ユーザー フロー ユーザーがアプリケーションまたはシステム内で実行するアクションのパスまたはシーケンス。

主要な設計戦略

優先度の低いフローよりも優先度の高いフローに投資します。 フローの優先順位と支出の調整には、現在同じリソースを共有しているフローを分離することが含まれる場合があります。 また、同様の要件を持つフローを組み合わせることも含まれますが、個別のリソースで実行されます。 たとえば、ユーザー登録、サインイン、データ処理などの複数のフローを含む Web アプリケーションがあるとします。 これらのフローは、リソースのニーズが異なる場合でも、1 台のサーバーで実行されます。 コストとパフォーマンスの両方を最適化するには、フローを分離するか、フローを結合します。

  • 個別のフロー。 たとえば、ユーザー登録フローを他のユーザーから切り離し、専用の低コストのサーバーに移動できます。 このフローは重要ですが、リソースを集中的に消費しないため、コストの低いサーバーに適しています。

  • フローを結合します。 たとえば、サインインフローとデータ処理フローを組み合わせて、どちらもリソース要件が高く、高パフォーマンスのサーバーで一緒に実行することができます。 これらのフローを組み合わせることで、サーバーは両方のフローのリソース集中型のニーズを効率的に処理できます。 パフォーマンスとコストを最適化します。

ワークロードでは、さまざまな種類のフローまたはパスを考慮する必要があります。 このガイドでは、次のフローの種類に焦点を当てています。

  • システム フロー。 システム フローの最適化には、システム コンポーネント間の通信と相互作用の合理化、ボトルネックの最小化、効率的なリソース使用率の確保が含まれます。

  • ユーザー フロー。 ユーザー フローの最適化には、ユーザー エクスペリエンスの向上、摩擦点の削減、アプリケーションまたはシステム内のスムーズなナビゲーションと対話の確保が含まれます。

フローのインベントリを作成する

フロー インベントリは、ワークロード内のすべての一連のアクション、データ遷移、およびシステム対話の包括的な一覧と説明です。 フロー インベントリは、投資がフローの優先順位と一致するようにするための最初のステップです。 フローの目的と依存関係を完全に理解している場合にのみ、フローを最適化する必要があります。 ワークロード フローのインベントリを作成する手順を次に示します。

  1. ドキュメント フロー。 まず、ワークロード内のすべての既存のフローを文書化して一覧表示し、システムの包括的な状態を理解します。 アクション、データ遷移、システム操作のすべてのシーケンスを含めます。 外部サービス、データベース、ミドルウェア、サードパーティの統合など、すべてのコンポーネントについて理解します。 さらに、時間の経過に伴う要求の量を追跡または見積もります。

  2. フローを視覚化します。 より明確な視点を得るには、結果を視覚的に表します。場合によってはフローチャートや図で表します。 視覚化は、コンポーネント間の相互依存関係を確認するのに役立ちます。 視覚化に役立つ Visio などのツールを使用することを検討してください。

  3. フローを分類します。 同様のフローをバンドルし、その機能 (認証、データ取得、トランザクション処理など)、ビジネスに対する重要度、または使用するリソース (CPU、メモリ、または帯域幅) などの属性を考慮します。

フローの優先順位付け

フローの優先順位付けとは、ビジネス成果への影響、ユーザー エクスペリエンスへの影響、およびフローが消費するリソースに基づいてフローを分類するプロセスです。 重要なフローでは、多くの場合、ワークロードの目標を満たすために、より高いレベルの可用性、より高速な復旧時間、およびパフォーマンスの向上が必要です。 フローに優先順位を付けることで、支出をよりフローの優先順位に合わせることができます。 フローに優先順位を付けるには、次の手順を検討してください。

  • フロー値を特定します。 ワークロード フロー コストを最適化する場合は、最も価値の高いフローを特定する必要があります。 フロー以外の価値を費やしたくありません。 単にコストを削減するのではなく、コストをシフトして、より価値のあるフローを優先することを検討してください。 たとえば、チェックアウト フローはビジネスにとって重要ですが、購入履歴は重要ではありません。 チェックアウト フローには、より多くのリソースと予算を割り当てる必要があります。

    優先順位の低いフローでは、可用性、回復、パフォーマンスに対する期待が低くなります。 コストを削減するには、低コストの構成を使用して、パフォーマンス、可用性、またはビジネス継続性の支出を削減します。

  • フロー メトリックを検討してください。 フローの優先順位付けに苦労している場合は、フローに割り当てた可用性と復旧の目標を検討してください。 重要なフローには、多くの場合、高可用性要件とサービス レベル アグリーメント (SLA) があります。 RPO と RTO が低いフローは、RPO と RTO が高いフローよりも重要です。

独立したフローを最適化する

フローが別のリソースで既に実行されている場合があります。 このような場合は、支出をより簡単に評価して最適化できます。 各独立したフローに関係するコンポーネントとプロセスを評価して、それらを最適化または簡略化する方法があるかどうかを判断します。 独立したフローを最適化するには、次の手順に従います。

  • 不要なコンポーネントを排除します。 フローのコア機能に寄与しない余分な要素を削除すると、複雑さとコストが削減されます。

  • フローを再設計します。 フローのアーキテクチャを再設計して効率を高めることを検討してください。 たとえば、操作のシーケンスを変更したり、待機時間を短縮したり、データ転送速度を向上させたりすることができます。

  • 適切なパフォーマンス レベルを選択します。 フローによって、処理速度、メモリ、またはその他のリソース メトリックに関してさまざまな要求が発生する場合があります。 各フローの特定の要件と適切に一致するリソース層を選択してください。

  • スケーリング設定を調整します。 フローで需要が変動する場合は、自動スケーリングを実装して、リアルタイムのニーズに応じてリソースを動的に調整し、コストを最適化することを検討してください。

  • 構成を微調整します。 フローのパフォーマンスと予算の要件に合わせて、ネットワークやデータ ストレージのオプションなどの他の設定を微調整します。

異なるフローを分離する

異なるフローを異なるリソースに分離することは、さまざまな計算ニーズを持つ個別のタスクを専用リソースに割り当てるプロセスです。 異なるフローは、異なる属性を持つフローです。 これらの属性には、計算要件、データ依存関係、I/O 操作、待機時間の秘密度、セキュリティ ニーズ、コンプライアンス要件が含まれます。 多くの場合、異なる種類のフローを個別のリソースで実行する方がコスト効率が高くなります。 これにより、各フローへの正確なリソース割り当てが可能になり、不要な支出が削減され、最大限の効率が確保されます。

現在結合されている異なるフローを分離することを検討してください。 この分離により、スケーラビリティ、フォールト トレランス、適応性が向上し、コストも合理化されます。 各フローが独立して動作するようにすることで、干渉リスクを軽減し、各フローの優先度に基づいてリソースをよりコスト効率よく割り当てることができます。 たとえば、CRM (ユーザー フロー) をデータ エンジン (データ フロー) と併置するとします。 営業時間中に CRM システムへのユーザー トラフィックが発生すると、データ エンジンの速度が低下する可能性があります。 フローを分離すると、データ エンジンはワークロードの需要に基づいて、各コンポーネントまたはサービスを個別にスケーリングできます。 この分離により、リソースの割り当てが最適化され、コストが削減されます。

同様のフローを結合する

同様のフローを 1 つのリソースに結合することは、タスクまたはプロセスを同等の属性で統合し、共有リソースを使用するプロセスです。 この戦略により、冗長性が排除され、リソースの効率的な使用が保証され、大幅なコスト削減につながります。 同様の種類のフローでは、同様の属性が共有されます。 異なるフローを分離する場合と同じ属性 (計算要件、データ依存関係、I/O 操作、待機時間の秘密度、セキュリティ ニーズ、コンプライアンス要件) を検討できます。 同じリソースを使用するために同様のワークロード フローを組み合わせると、大幅な節約につながる可能性がある例を次に示します。

  • Web サーバー。 アプリケーションごとに個別の Web サーバーを専用にする代わりに、特にトラフィックが一貫して高くない場合は、それらを統合することを検討してください。 リバース プロキシとペアになった共有 Web サーバーは、トラフィックを効果的に管理し、複数のアプリケーションにルーティングできます。

  • API ゲートウェイ。 個別のマイクロサービスまたはアプリケーション用に個々の API ゲートウェイを維持するのではなく、一元化された API ゲートウェイを使用して要求を合理化し、関連するサービスに送信できます。 これにより、管理が容易になり、コストも削減されます。

  • ログ処理。 それぞれが独自のログ処理インスタンスを操作する複数のアプリケーションまたはサービスを持つ代わりに、それらすべてを共有ログ処理ツールに送信することを検討してください。 この方法により、アクティブなインスタンスの数が最小限に抑えられます。これにより、直接のコスト削減につながります。

  • 認証サービス。 複数のアプリケーションが独自の個別の認証メカニズムをデプロイする場合、冗長性が導入されます。 シングル サインオン (SSO) ソリューションまたは共同認証サービスを統合すると、この重複が軽減され、リソースの使用が最適化され、コストが削減されます。

リスク: 設計と一致を間違えないでください。 似た 2 つのフローは、必ずしも同じ目的を果たすとは限りません。 各フローをマージまたは変更する前に、各フローの関数と設計を理解する必要があります。 外観のみに焦点を当ててフローを誤って解釈すると、意図しない結果が生じ、サポートされているサービスまたはプロセスが中断される可能性があります。 複数のフローが同じ機能を果たし、その設計や意図に区別できる違いがない場合は、それらを統合することを検討してください。

フローを継続的に監視する

フローとワークロードの性質は時間の経過と共に変化する可能性があるため、コストが優先順位と一致していることを確認するためにフロー支出を確認する必要があります。 各フローに関連付けられているコンピューティング、ストレージ、ネットワークの使用状況を分析して、各フローのリソース使用率を評価します。 リソースの使用率が低い非効率性または領域を特定します。 この分析は、コスト最適化の機会を特定するのに役立ちます。 フロー使用率を確認する際に考慮すべき考慮事項を次に示します。

  • 使用パターンを分析します。 フローの使用パターンを分析します。 一部のフローは、1 日または 1 か月の特定の時間にアクティブになる場合もあれば、一貫した負荷を持つフローもあります。 これらのパターンを理解することで、リソースのニーズを予測し、ボトルネックやオーバープロビジョニングを回避するために割り当てを調整できます。

  • 関連するメトリックを監視します。 各フローの効率とコスト効率を評価するのに役立つメトリックを決定します。 CPU 使用率、データ転送コスト、トランザクション コスト、ストレージ フットプリントを考慮してください。 監視ツールを使用して、リソースの使用状況とパフォーマンスに関する詳細なメトリックを収集します。

  • 継続的なメンテナンスを検討してください。 特に、仮想マシンなどのサービスとしてのインフラストラクチャ ソリューションを使用する場合は、メンテナンスのコストを考慮してください。 パッチ適用、アップグレード、バックアップ、監視、セキュリティなどのアクティビティを考慮する必要があります。

分析中に、リソースが効果的に利用されない非効率性や領域を特定します。 アイドル状態のコンピューティング インスタンス、未使用のデータ、低いネットワーク帯域幅を検討してください。 これらの非効率性は、コストの最適化の機会を示している可能性があります。

Azure ファシリテーション

フローの優先順位付け、最適化、監視: Application Insights の ユーザー フロー ツール は、サイトのページと機能全体のユーザー ナビゲーションを視覚的に表現します。 このツールは、ユーザーが頻繁に離れる、アクションを繰り返す、または特定のパスに従う領域を特定するのに役立ちます。 実際のユーザーの動作と予想される結果と目標を比較することで、重要なフローを特定できます。 また、チャーン率の高さ、繰り返しのアクション、設計上の欠陥など、潜在的な問題を最適化することもできます。 また、このツールを使用すると、ディメンションを通じてカスタム プロパティをフィルター処理できるため、よりカスタマイズされた分析が可能になります。

Azure Monitor は、アプリケーションのパフォーマンスと正常性に関する分析情報を得るのに役立ちます。 監視機能と診断機能が提供されます。 これらの機能を使用すると、パフォーマンスのボトルネックを特定し、リソース使用率を最適化し、コストに影響を与える可能性のある問題を検出してトラブルシューティングすることができます。

Log Analytics は、さまざまなソースからログ データを収集、分析、視覚化できるツールです。 Log Analytics を使用すると、使用状況とデータ保持を管理することで、アプリケーションとインフラストラクチャのログに関する分析情報を取得し、傾向を特定し、コストを最適化できます。 コストをより適切に管理するために、ログを併置し、共有ソリューションではなく専用ソリューションを使用することを検討してください。

コスト最適化チェックリスト

推奨事項の完全なセットを参照してください。