最適化によって効率を向上させる

完了
定義されたパフォーマンス目標内でシステム効率を向上させ、ワークロードの価値を高める。

初期フェーズで設定されたこの目標は、さまざまな制約を考慮して、適切なレベルのユーザー エクスペリエンスに基づいています。 エクスペリエンスをさらに向上させるには、ターゲットを再評価して調整する必要があります。 エクスペリエンスをさらに向上させるには、システムがどのように使用され、どのように進化したか、またプラットフォームやテクノロジーが時間の経過とともにどのように変化したかを明確に理解する必要があります。 監視、最適化、テスト、デプロイのサイクルは、継続的なプロセスです。

効率の最適化の取り組みにより、より少ないリソース消費でワークロードが動作できるようになります。 これにより、ワークロードが予備の容量で過剰にプロビジョニングされた状態になる可能性があります。 その容量を使用して、システムの信頼性を向上させます。 容量を削減してシステムのコストを削減します。 または、容量を再利用して、既存のリソースで新しい製品機能をサポートします。

システムの効率が向上したら、それを機に新しいパフォーマンス目標を設定し、維持します。

サンプル シナリオ

Contoso の人事エンジニアリング チームは、組織の人事情報システム (HRIS) へのカスタム統合をサポートしています。 これらの統合には、給与計算のための財務統合、政府の労働法報告のための雇用統計などが含まれます。 統合のほとんどは C# で記述された Azure Functions であり、組織のデータ センターにある Azure Arc 対応 Kubernetes クラスターでホストされています。 ほとんどのジョブは順調に実行されていますが、処理の遅れにより、人事ディレクターが必要とするときに重要なデータが利用できない場合があり、チームを不安にさせるジョブもいくつかあります。

パフォーマンスの最適化を優先度付けする

非機能要件と機能領域の最適化に対処するために、パフォーマンスの最適化に専用のサイクルを割り当てます。 この最適化の対象は、リソース、コード、データ保持、データベース クエリなどです。

このアプローチを採用することで、パフォーマンスを重視した最適化のカルチャを築くことができます。 パフォーマンス パターンを積極的に監視し、アプリケーションを微調整する責任をチームに持たせます。

"Contoso の課題"

  • チームはかなりまとまりがなく、バックログは長くなっています。 チームは統合を記述してデプロイするときに、ほとんどの場合、"ファイア アンド フォーゲット" の考え方で作業しています。つまり、統合を記述し、デプロイしたら、次のタスクに進みます。
  • シニア リーダーシップがタイムリーにデータにアクセスできないため、チームは重大なインシデント サポートの問題で頻繁に呼び出されています。
  • チームは改善が必要であることを痛感していますが、必要な変更の優先度付けをしていませんでした。

"アプローチの適用と結果"

  • チームは現在、各スプリントの 20% を技術的負債やその他の最適化アクティビティに割り当てています。 これにより、エンジニアリング チームは、重要な領域や影響が最も大きくなる可能性のあるその他の領域に優先度付けをして対処する時間を確保しています。
  • このアプローチを採用することで、チームは、データ処理の遅延の原因となっているパフォーマンスの問題に対処するために必要な時間を確保できるようになりました。

設計の改善点を探す

新しい設計パターンとコンポーネントを使用してアーキテクチャを強化すると、以前は時間や予算が限られていたために考慮しなかった方法でパフォーマンスを向上させることができます。

新しい設計とコンポーネントによってシステムの最適化が可能になることで、ユーザー エクスペリエンスの向上と、長期的なコスト効率が実現します。 たとえば、キャッシュを使用したり、コンテンツ配信ネットワーク コンポーネントを追加したりできます。

"Contoso の課題"

  • チームは Azure Functions とトリガーベースのフローを数年間使用してきましたが、このアプローチの代替手段を評価するために時間を割いてきませんでした。

"アプローチの適用と結果"

  • チームは Azure Functions の他の使用方法を検討し、Durable Functions で特定の給与計算タスクの並列化に役立つファンアウト モデルがサポートされていることがわかりました。
  • チームは、将来の設計のためにこのパターンを設計カタログに組み込みました。 これは、単なるコードの最適化やデータのクリーンアップだけでなく、パフォーマンスの非効率性に対処する他の方法を検討する良い機会にもなりました。

監視ツールを使用して過去の傾向を分析し、パフォーマンス最適化の取り組みの恩恵が最も多く得られるフローとコード実装パスを特定します。 この目的のために、アプリケーション パフォーマンス監視 (APM) ツールとプロファイラーを使用することをお勧めします。 さらに、操作のホット パスと、システム内のその他の潜在的なボトルネックを特定します。

繰り返し発生する問題領域を特定すると、チームは最も大きな成果が得られる領域に集中することができます。

"Contoso の課題"

  • チームは Azure Application Insights を使用してすべての機能をインストルメント化しています。
  • 障害対応の問題とログ シンクには主に Application Insights を使用しています。
  • これまで、改善の対象領域を絞り込むためのアプローチは、シニア リーダーシップ チームからのフィードバックに基づいていました。

"アプローチの適用と結果"

  • フィードバックは重要ですが、チームは、Application Insights が監視対象のアプリケーション内のホットスポットをかなりうまく検出していることに気付きました。
  • チームはこの機能を活用し始め、重要なフローに関する知識と組み合わせたことで、技術的な改善と効率化に対するチームの 20% の取り組みにとって貴重なツールに変わりつつあります。
  • Application Insights を使用すると、チームは危険な統合を事前に特定し、リーダーシップ チームのメンバーが問題に遭遇する前に対処できます。

自分の知識をチェックする

1.

Contoso チームは、継続的なパフォーマンスの問題に対処するために開発プロセスをどのように変更しましたか?

2.

ワークロードの効率を向上させるための適切な戦略は、次のうちどれですか?

3.

パフォーマンスの傾向を分析し、実行のボトルネックを特定するのに役立つのは、どのような種類のツールですか?