ソフトウェアを効率的かつ確実にデリバリーすることは、今日の多くの組織におけるビジネス成功の基盤です。Dynatraceは、プラットフォームエンジニアがデリバリープロセスに関する洞察を得て、パフォーマンスのボトルネックを明らかにし、パイプラインの改善を追跡し、リソース消費を最適化するお手伝いをすることで、重要な役割を果たします。ソフトウェアデリバリープロセスを効率化するためのパイプライン可観測性を実現するため、Dynatraceは分析と自動化のユースケースの基盤として、ソフトウェア開発ライフサイクルイベントの標準化を推進しています。
現在、開発チームは時間のかかるタスクの自動化不足、ツール選択肢の過剰による標準化の欠如、そして十分に成熟していないDevSecOpsプロセスに悩まされています。これにより、ソフトウェアの構築と提供を試みる開発者にとって、苛立たしいボトルネックが生じています。多国籍企業においては、組織規模の大きさゆえに、こうした労力、複雑性、フラストレーションのコストが指数関数的に増大します。このような状況下で、プラットフォームエンジニアリングは、開発者体験を大幅に向上させる形でビジネスの競争力を実現する、説得力のある解決策を提供します。プラットフォームエンジニアリングチームの中心的な要素となるのが、堅牢な内部開発者プラットフォーム(IDP)です。これは、開発者がソフトウェアアプリケーションを構築、テスト、デプロイすることを可能にする一連のツール、サービス、インフラストラクチャを包含します。
内部開発者プラットフォーム(IDP)を製品として扱うことは、プラットフォームエンジニアリングコミュニティ内で新たなパラダイムとして台頭しています。デジタルサービスが処理するリクエストに対する可観測性が求められるのと同様に、開発から本番環境までのコード変更に関連するメトリクス、トレース、ログ、イベントを理解することが必要です。医療機器などの製品安全規制下でソフトウェアを構築する場合、エンジニアリングプロセスのエンドツーエンドの可観測性は不可欠となります。高頻度リリースがビジネスにとって重要である場合、これは最終製品そのものとほぼ同等の重要性を持ちます。
本ブログ記事では、組織のIDP(ソフトウェア開発パイプライン)のデリバリー能力を監視する方法として、パイプライン可観測性に焦点を当てます。このプロセスは、開発者がコード変更をマージした時点で始まり、本番環境で実行される時点で終了します。言い換えれば、パイプライン可観測性は継続的インテグレーション(CI)を包含し、継続的デリバリー(CD)も含みます。以下の図に示されている通りです。

活用事例
パイプラインに関する洞察を得て、Dynatraceの分析と自動化の力を活用することで、数多くのユースケースが可能になります:
- データに基づいた改善を実施する:最も大きな効果をもたらすソフトウェアデリバリー機能に投資しましょう。適切な判断を行うために、パイプラインのKPIは改善すべき領域を明らかにし、開発への長期的な投資を保護し、持続的な資金提供のメリットを関係者に提示することができます。
- デリバリープロセスの自動化:理想的には、改善には手作業の排除、コラボレーションの促進、プロセスの高速化を目的とした自動化の導入が含まれます。
- パイプラインのコンプライアンス/ガバナンスを確保する:コード変更が通過するパイプライン活動のエンドツーエンドの可視化により、監視が必要な盲点を特定し、組織全体でのコンプライアンスを確保できます。
ソフトウェア開発ライフサイクル(SDLC)イベント
ソフトウェア開発ライフサイクル(SDLC)は、製品アイデアが本番環境にリリースされるまでに経る様々なフェーズを概説する点で、DevSecOpsループと類似しています。これらのフェーズは、『DevOps入門ガイド』で議論されているセキュリティのベストプラクティスと整合させる必要があります。ライフサイクルは新製品アイデアを明記したチケットから始まりますが、実際のコード変更がトリガーとなり、さまざまな自動化タスクが起動して次のフェーズに移行することがよくあります。これらの自動化タスクはコード変更を処理し、デプロイ可能なビルドを作成するとともに、デリバリープロセス全体を通じて変更に伴う新しいアーティファクトを生成します。
Dynatraceにおける、こうしたタスクと結果として生成されるアーティファクトの例を、以下の図に可視化して示します:
- 計画:プラットフォームサービスの強化に関するチケットが Jira に作成されます。
- コード:GitHub リポジトリ内の新機能用ブランチをメインブランチにマージします。
- ビルド:GitHub がコード変更をビルドし、デプロイ可能なイメージを作成します。
- テスト: Playwrightがエンドツーエンドテストを実行します。
- リリース:
- イメージがHarborに公開され、Helm Chartが更新されます。
- BlackDuckがセキュリティおよび脆弱性チェックを実施し、スキャン結果を返します。
- デプロイ:
- ArgoCDが開発環境にHelmチャートをデプロイします。
- 強化段階において、合成HTTPモニターが実行されます。
- 自動化によりGitOpsリポジトリが更新され、アーティファクトが本番環境にロールアウトされます。
- 運用: FlagDが機能フラグをOFFからONに切り替えます。

これらの例は数ある中のほんの一部ですが、ソフトウェア変更と関連コンポーネントに関する重要な情報は、監視が開始される前に生成されます。したがって、Dynatraceでは必須データポイントの意味論を定義し、正規化された方法で保存します。例えば、Gitコミット、チケットID、アーティファクトバージョン、リリースバージョン、デプロイメントステージなどは、特に注意を要するデータポイントです。このメタデータのセマンティクスが明確に定義されていれば、洞察に富んだ分析と堅牢な自動化を構築することが可能となります。
本仕様では、パイプラインおよびタスクイベントのカテゴリをカバーする新たなイベントタイプ「SDLC_EVENT」を定義します。パイプラインは複数のタスクの親となり、結果イベントを論理的にグループ化できます。一方、タスクイベントはビルド、テスト、デプロイ、スキャンなど、単一のライフサイクル活動の状態を表します。Dynatraceドキュメントではイベント一覧を管理しており、新たなユースケースの展開に伴い拡充されます。
イベント標準の定義は、エコシステム内での採用によって成功します。そのため、当社はオープンソースイニシアチブと連携し、CD Foundationが推進するOpenTelemetryのCI/CD仕様との互換性を確保しています。結果として、パイプラインの可観測性に向けたOpenTelemetryへの取り組みは、Dynatraceによってネイティブにサポートされます。
汎用 SDLC イベント取り込みエンドポイント
Dynatraceは汎用SDLCイベント取り込みエンドポイントを導入し、あらゆるサードパーティ製CI/CDツールからの直接データ取り込みを可能にしました。このエンドポイントは任意のJSONペイロードを受け入れ、SDLC仕様のデフォルトプロパティを追加しますが、ベンダー固有データの処理と仕様で定義されたプロパティの抽出にはOpenPipeline™を活用します。GitHubとArgoCDが最初にOpenPipeline設定を提供するツールとなります。
このエンドポイントとOpenPipelineの組み合わせにより、以下のような多様なユースケースが可能となります:
- Dynatrace内でカスタマイズされたダッシュボード上でのパイプライン異常可視化。
- ノートブックなどのツールを用いたデリバリータスクの詳細な分析。
- Dynatrace Site Reliability Guardian を使用した自動リリース検証。
- サードパーティの CI/CD アクティビティを Dynatrace の監視対象エンティティと関連付ける。
今後の展開にご期待ください
現在、本APIではイベント処理パイプラインの設定が可能です。OpenPipelineアプリ内での設定管理機能のサポートは最優先事項となっております。これに伴い、前述のGitHubおよびArgoCD設定をはじめ、その他の設定も順次提供予定です。
場合によっては、CI/CDツールのログ行に重要なデータポイントが含まれており、それ自体でDynatraceへの追加イベント送信が不要となることがあります。そのため、関連するメタデータを自動的に抽出し、ログ行からSDLCイベントを生成するログプロセッサの開発を進めております。
最後に、GitHub および ArgoCD のメタデータに基づくDORA メトリクス用の既製ダッシュボードの開発を進めております。
今後の予定
- Explore: ドキュメント内の分析サンプルをご覧ください。これはプレイグラウンド環境で実行可能です。
- 採用:最も重要なパイプラインを特定し、可視化してください。つまり、利用可能なイベント取り込みエンドポイントを活用し、パイプラインのアクティビティをDynatraceに送信します。多くの場合、Webhook機能を活用することで実現可能です。
- 微調整:SDLC仕様に基づいてプロパティを抽出するOpenPipeline構成を作成し、データ正規化を実施します。
ご質問がございましたら
新しいディスカッションを開始するか、Q&A フォーラムでお尋ねください。
フォーラムへ