Close

DevOps 監視

デリバリー パイプラインの各段階で認知度を高める

Krishna Sai の顔写真
Krishna Sai

IT ソリューションズ担当エンジニアリング部長


DevOps に期待されていることとしては、開発の期間短縮、定期的なテスト、リリース頻度の増加はもちろん、品質の向上とコストの削減といったことが挙げられます。これを実現するために、DevOps 監視ツールでは、計画、開発、統合、テスト、デプロイ、運用にいたる開発ライフサイクル全体を通して、自動化、広範な測定、可視化が可能になっています。

最新のソフトウェア開発ライフ サイクルはかつてないほど速く、開発段階とテスト段階が複数同時に進行しています。そこで生まれたのが DevOps です。開発、テスト、運用の機能をそれぞれ専門チームが個別に担当する方法から、1 つの統合チームがすべての機能を担当する "You build it, You run it" (構築した者が運用する) (YBIYRI) 方式への移行です。

頻繁にコード変更することも当たり前になったため、開発チームは本番環境の包括的なリアルタイム ビューを提供する DevOps 監視を必要としています。

DevOps 監視とは


監視と可観測性の比較図

DevOps 監視では、計画、開発、統合、テスト、デプロイ、運用までの開発プロセス全体を監督します。これには、本番環境のアプリケーション、サービス、インフラストラクチャのステータスをすべてリアルタイムに表示することが含まれます。リアルタイム ストリーミング、履歴再生、可視化などの機能は、アプリケーションとサービスの監視に関する重要なコンポーネントです。

連結された輪のアイコン
ソリューションを見る

インシデント管理と対応を合理化

ツールアイコン
関連資料

DevOps ツールの詳細

DevOps 監視によって、チームはいかなるカスタマー エクスペリエンスの低下にも迅速かつ自動で対応できます。さらに重要なことに、チームが開発の初期段階に "シフト レフト" して、異常の発生した本番環境の変更を最小限に抑えられます。一例として、エラーを検出して対応するためのソフトウェアのインストゥルメンテーションの改善があります。これは、オンコールで手動で行うことも、可能な場合は自動で行うこともあります。

DevOps 監視と可観測性の違い


上の無限ループ図の左側を製品側、右側を運用側と考えると、新しい機能を本番環境にプッシュするプロダクト マネージャーの関心は、プロジェクトがタスクとユーザー ストーリーにどのように分割されるかにあります。プロジェクトの左側の開発者は、プロジェクト チケット、ユーザー ストーリー、依存関係など、機能を本番環境に移行する方法を確認する必要があります。"構築した者が運用する" という DevOps の原則に従えば、開発者はインシデントの修復にも関心を持ちます。

ライフサイクルの運用側に移ると、サイト信頼性エンジニアは測定と監視が可能なサービスを理解して、問題が発生した場合は修正できるようにする必要があります。これらすべてのプロセスを結び付ける DevOps ツールチェーンがないと、乱雑で相関性のない混沌とした環境になります。適切に統合されたツールチェーンがあれば、今起きている状況をより理解しやすくなります。

DevOps ループの画像

DevOps 監視の重要性


DevOps のアプローチは継続的な監視を拡張して、ステージング、テスト、さらには開発環境まで対象とします。これにはさまざまな理由があります。

頻繁なコード変更には可視性が必要

継続的インテグレーションと継続的デプロイによってコード変更が頻繁になったため、変更のペースが速くなって本番環境はますます複雑になっています。マイクロサービスとマイクロ フロントエンドが最先端のクラウド ネイティブ環境に導入される中、本番環境では数百、時には数千の異なるワークロードが稼働しており、それぞれ異なる運用要件 (スケール、レイテンシ、冗長性、セキュリティ) があります。

これによって、さらに優れた可視性へのニーズが高まっています。チームには、カスタマー エクスペリエンスの低下を検出して対応することだけでなく、タイム クリティカルな対応が求められます。

コラボレーションの自動化

DevOps は暗黙のうちに、チーム内の開発、運用、ビジネスの機能間でコラボレーションの拡大を必要とします。ところが、ツール間の統合がないことがコラボレーションの妨げになり、異なるチームとの調整においてさまざまな課題が生じる原因になります。これは、アトラシアンの DevOps アンケートの重要なポイントでした。

コラボレーションを自動化するには、エディタ内で開発パイプラインの全体像を把握するといったプラクティスがあります。また、コミットやプル リクエストをリッスンする自動化ルールを設定し、関連する Jira 課題のステータスを更新し、チームの Slack チャネルにメッセージを送信できます。さらに、スキャン、テスト、分析のレポートを提供するインサイトを活用できます。

自動コラボレーションのスクリーンショット

実験

顧客のニーズに対応するために製品を最適化する必要性は、パーソナライゼーションと最適化されたコンバージョン ファネルによって促進され、結果として絶え間ない実験につながります。本番環境では何百件もの実験や機能フラグを実行できるため、監視システムを通じてエクスペリエンスの低下の原因を特定するのは困難です。

常時稼働サービスやアプリケーションに対する要件の増加、そして厳格な SLA コミットメントによって、アプリケーションの脆弱性が高まる恐れがあります。開発チームは、監視と対応の対象となるサービス レベル目標 (SLO) とサービス レベル指標 (SLI) を確実に定義する必要があります。

変更管理

本番環境の停止のほとんどは変更が原因であるため、特に金融業界や医療業界などのミッション クリティカルなアプリケーションでは、変更管理が不可欠です。変更に伴うリスクを判断して、そのリスクに基づいて承認フローを自動化する必要があります。

こうした複雑さに対処するには、理解と監視の包括的戦略が必要です。これには、監視プラクティスを定義して採用し、開発プロセスに不可欠な機能豊富で柔軟性の高い高度な監視ツールセットを用意する必要があります。

依存システムの監視

より普及してきた分散型システムは、多くの場合、多数の小規模な企業間サービスで構成されます。今やチームは、構築したシステムを監視するだけではなく、依存システムのパフォーマンスと可用性も監視して管理する必要があります。Amazon Web Services (AWS) は、コンピューティング、ストレージ、ネットワーキング、データベース、アナリティクス、デプロイ、管理、モバイル、開発ツールなど、175 点を超える製品とサービスを提供しています。AWS でアプリケーションを構築する場合は、アプリケーションのニーズに適したサービスを選択する必要があります。また、依存システムのエラーを分散型で追跡して障害を処理するための、インストゥルメンテーションと戦略も必要です。

DevOps 監視の主な機能


従来の DevOps と同様に、監視戦略を開発して実装するにはコア プラクティスと一連のツールにも注意する必要があります。

シフトレフト テスト

ライフ サイクルの早い段階で実行されるシフトレフト テストは、品質の向上、テスト サイクルの短縮、エラーの削減に役立ちます。DevOps チームにとっては、シフトレフト テストのプラクティスを拡張して、本番前環境の健全性を監視することが重要です。これによって、本番環境全体の継続性を維持するために監視が早期に頻繁に実施されて、監視アラートの品質が維持されます。テストと監視は連携する必要があります。早期監視は主要なユーザー ジャーニーとトランザクションを通じて、アプリケーションの動作の評価に役立ちます。また、本番環境にデプロイする前に、パフォーマンスと可用性の逸脱を特定する際にも役立ちます。

アラートとインシデントの管理

クラウドネイティブの世界では、インシデントはコードのバグと同じくらい日常茶飯事です。これらのインシデントには、ハードウェアとネットワークの障害、設定ミス、リソースの枯渇、データの不一致、ソフトウェアのバグなどがあります。DevOps チームはインシデントを受け入れて、高品質のモニターを用意して対応する必要があります。

これをサポートする次のようなベスト プラクティスがあります。

  • コラボレーションの文化を構築して、開発中に機能テストや自動テストと併せて監視を使用する。
  • 開発中に、平均検出時間 (MTTD) と平均分離時間 (MTTI) を最小化する、適切で高品質なアラートをコード内に構築する。
  • モニターを構築して、依存するサービスが期待どおりに動作することを確認する。
  • 必要なダッシュボードを構築して、それらを使用できるようにチーム メンバーをトレーニングする時間を割り当てる。
  • モニターが期待どおりに動作することを確認して欠落しているモニターを特定するために、サービスの "大演習" を計画する。
  • スプリント中に、以前のインシデント レビューのアクション、特に欠落しているモニターの構築と自動化に関連するアクションを完了するように計画を立てる。
  • セキュリティ (アップグレード/パッチ/ローリング認証情報) の検出機能を構築する。
  • "すべてを測定して監視する" というマインドセットを育成して、検出されたアラートへの対応は自動化によって決定する。

DevOps 監視ツール


一連の健全な監視プラクティスを補完するのは、DevOps/YBIYRI の文化に沿った高度なツールです。これは、コード リポジトリ、IDE、デバッガー、欠陥追跡、継続的インテグレーション ツール、デプロイ ツールといったお馴染みの開発ツールだけではありません。監視ツールを識別して実装する必要もあります。

単一の画面で、本番環境だけでなくステージングにおけるさまざまなアプリケーションとサービス、インフラストラクチャの依存関係を包括的に把握できます。これによって、複雑な分散型環境の健全性をプロビジョニング、取り込み、タグ付け、表示、分析できるようになります。たとえば、アトラシアンの内部 PaaS ツール Micros には、サービスに関するすべての情報を簡潔かつ発見可能な方法で提供する、マイクロスコープというツールが含まれています。

単一画面のスクリーンショット

アプリケーションのパフォーマンス監視は、CPU やメモリの使用率などのシステムの基本指標に加えて、ページの読み込み時間、ダウンストリーム サービスのレイテンシ、トランジションなどのアプリケーション固有のパフォーマンス指標を確実に監視するために不可欠です。SignalFX や NewRelic などのツールは、指標データをリアルタイムで観察する際に最適です。

開発中のエラー、トランザクション、合成、Heartbeats、アラーム、インフラストラクチャ、キャパシティ、セキュリティなど、さまざまなタイプのモニターを実装します。メンバー全員がこれらの分野のトレーニングを受けていることをご確認ください。これらのモニターはアプリケーション固有のものが多く、各アプリケーションの要件に基づいて実装する必要があります。たとえば、Opsgenie 開発チームは、アラートまたはインシデントを作成して、アラート フローが期待どおりに実行されているかどうか (つまり、統合、ルーティング、ポリシーが正しく機能しているかどうか) をチェックする合成モニターを実装します。また、インフラストラクチャの依存関係の合成モニターも実装して、さまざまな AWS サービスの機能を定期的に検証します。

アラートおよびインシデント管理システムは、チームのツール (ログ管理、クラッシュ レポートなど) とシームレスに統合されるため、チームの開発と運用のリズムに自然にフィットします。このツールでは、優先通知チャネルに配信される重要なアラートをレイテンシが最も低い状態で送信する必要があります。また、特に単一のエラーや障害から複数のアラートが生成される場合などで、多数のアラートをフィルタリングしてグループ化する機能も含まれている必要があります。アトラシアンでは、これらの機能をお客様に提供する製品として Opsgenie を用意しています。また、これを社内で使用して、堅牢で柔軟性かつ信頼性の高いアラートおよびインシデント管理システムが開発プラクティスとうまく統合されることを確認しています。

結論


DevOps を採用する一方で、テストに加えて監視もシフトレフトさせることが重要です。また、変更を本番環境に迅速にデリバリーして高品質を確保できるように、プラクティスとツールを配備することが重要です。

詳細については、DevOpsインシデント管理変更管理に関するアトラシアンの追加リソースをご確認ください。

Krishna Sai
Krishna Sai

Krishna Sai はアトラシアンの IT ソリューションズ担当エンジニアリング部長です。いくつかのスタートアップ企業やアトラシアン、Groupon、Polycom などの企業で、20 年以上もエンジニアリング/テクノロジーのリーダーシップを発揮しています。インドのバンガロール在住で、チームのコラボレーションの方法に影響を与えるような製品の開発に精力的に取り組んでいます。


この記事を共有する

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

DevOps のイラスト

DevOps コミュニティ

DevOps のイラスト

シミュレーション ワークショップ

マップのイラスト

無料で始める

DevOps ニュースレター購読

Thank you for signing up