2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Instanaで実現するSREのベストプラクティス 第6章 パフォーマンスの継続的改善

Posted at

執筆者:小畑 啓、監修:山﨑政憲

6.1 パフォーマンスのボトルネックを特定する方法

パフォーマンスボトルネックの典型的な原因

システムのパフォーマンスが低下した際に、どこでボトルネックが発生しているのかを迅速に特定し、適切に対策を講じることが重要です。
ボトルネックの主な原因は、CPUやメモリ、ディスクI/O、ネットワーク帯域の制限などリソースの不足によるものが多いです。

また、非効率なアルゴリズムやスレッド競合、ロックの多用、データベースの遅延も原因になります。

ボトルネック特定の流れ

Instanaの4つの主要機能(メトリクス分析、分散トレーシング、異常検知、ログ分析)を活用して、ボトルネックを特定します。
必要に応じて、サービス間の依存関係から他のサービスへの影響も把握するとより効果的です。(下図参照)

① メトリクス分析でシステムの負荷を確認
メトリクス分析でCPUやメモリ使用率などを確認し、異常な高負荷がないかを特定・対処します。

② 分散トレーシングで処理の遅延ポイントを特定
遅いリクエストを特定し、API・DB・外部サービスのどこで遅延が発生しているかを分析します。

③ AIによる異常検知で急激なパフォーマンス低下を特定
AIによる異常検知でスパイクやエラーレート上昇を確認し、影響を受けたコンポーネントを特定・分析します。

④ ログ分析でエラーメッセージを確認
エラー発生時間とパフォーマンス低下を照合し、対象コンポーネントの詳細エラーを分析します。

32578a2e-5b31-4971-92db-9f667e22938a.png

6.2 キャパシティプランニング

キャパシティプランニングの概要

キャパシティプランニングは、将来の負荷増加に備えて、必要なリソースを適切に見積もり、パフォーマンスを維持するための計画です。需要予測、現在の利用状況の分析、将来の成長見込みに基づいて、適切なインフラ増強や調整を行います。

適切なキャパシティプランニングを行うことで、コスト最適化とパフォーマンス維持を両立可能です。適切なキャパシティプランニングを行わないと、以下のような問題が発生します。

問題 影響
リソース不足 サービスのパフォーマンス低下、ユーザーの不満が増大
過剰プロビジョニング コストの無駄、不要なインフラ支出
スケーリングの遅れ トラフィック急増に対応できず、システム障害発生

キャパシティプランニングの手順

キャパシティプランニングの手順は、大きく分けて「現状把握」「需要予測」「計画策定」「評価と調整」の4つの段階に分けられます。

これらの段階を経て、システムやリソースの最適な利用計画を立て、将来の需要増に対応できるようにします。

① 現状把握
システムのハード・ソフト構成やネットワーク状況を把握し、処理内容や負荷の頻度を分析します。また、CPUやメモリなどリソースの使用状況を確認し、性能低下の原因となるボトルネックを特定します。

② 需要予測
将来のビジネス成長やサービス拡大を見据えて情報を収集し、将来的なシステム負荷を予測します。特にピーク時の最大負荷を想定し、必要なリソースを見積もることが重要です。

③ 計画策定
予測された需要に基づいて、必要なシステム性能とリソースを見積もります。その上で最適なシステム構成を検討し、導入に向けた具体的な計画を策定します。これにより、将来的な負荷に対応できる体制を整えます。

④ 評価と調整
システム導入後はパフォーマンスを継続的に監視し、得られたデータを分析して計画との差を評価します。その評価結果をもとに、必要があればリソース追加や構成変更などの調整を実施します。

これらの手順を繰り返すことで、常に最適なシステム構成を維持し、将来の需要増にも柔軟に対応できるようになります。

6.3 改善点の提案とリファクタリングの進め方

改善点を提案するための視点

システムの健全性を維持して、パフォーマンスや可読性、拡張性を向上させるためには、定期的な改善とリファクタリングが必要です。

Instanaを活用すると、ボトルネックや技術的負債をリアルタイムで可視化し、最適な改善点を提案できます。改善点を特定する際には、主に以下の視点からシステムを分析します。

視点 チェックポイント 使用するInstanaの機能
パフォーマンス APIレスポンスタイム、DBクエリの最適化 Tracing、Infrastructure、 Analytics
リソース最適化 CPU、メモリ、ネットワーク負荷 Infrastructure,、Alerts & Events
コード品質 重複コード、長すぎるメソッド、低凝集度 ログ分析、コードレビュー

リファクタリングの進め方

リファクタリングは以下の手順に沿って行います。 

① 改善点を特定:Instanaの主要機能を活用してボトルネックを特定
② 優先順位の決定:パフォーマンス・影響範囲・コストなどを考慮して優先順位を決定
③ 変更の計画:小さな単位に分割してリファクタリングを実施
④ 影響範囲のテスト:ユニットテストや負荷テストを実施
⑤ デプロイとモニタリング:Instanaで改善効果を検証

SREエンジニアは、コードの整理やシステムの近代化に関するガイドライン(リファクタリングドキュメント)を作成します。
システムの信頼性と効率性を高めるとともに、運用プロセスを改善するので、より効率的なシステム構築が可能です。

6.4 継続的改善を組織に根付かせるには

継続的改善の必要性

システムの品質とパフォーマンスを維持・向上させるためには、継続的な改善を組織の文化として定着させることが不可欠です。しかし、単に技術的な最適化を行うだけではなく、プロセス・チーム・ツールの最適化を並行して進めることが重要になります。

問題発生時のみの対応や短期的な優先事項、改善効果の不透明さ、責任の曖昧さは障壁となってしまいます。これらを克服し、継続的改善を定着させるための具体的な施策が求められます。

継続的改善を組織に定着させる戦略

継続的改善を文化として根付かせるためには、経営層の理解と支援を得て、仕組み・プロセス・文化の3つの要素を組み合わせることが重要です。

また、改善活動の効果を定量的に可視化し、関係者に共有することで、優先度を高めます。
定期的な振り返りの場を設け、課題の洗い出しと対策を習慣化することも有効です。
さらに、責任者を明確にし、小さな改善から着実に実行することで、改善の継続とスケールを促進します。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?