Syntheticsを活用して計画的なダウンタイムを適切に管理する方法

Observability Mike Simon

ブラウザ外形テストがもたらすのは確かさであるべきで、不確かさではありません。このシリーズをお読みいただいている方なら、本当に価値のあるテストをすでに実践していることでしょう。それらのテストでは実際のユーザー体験が反映され、結果が検証され、意味のあるアラートが発せられているはずです。

しかし、最高の外形テストでも、計画的な変更の際にノイズを発生させることがあります。

リリースの展開や定期メンテナンスの実施のたびに、外形テストによって、変更に伴う影響がすべて記録され始めます。キャッシュが温まるまでの間、ページの読み込みが遅くなるかもしれません。依存先が再起動することもあるでしょう。処理のフローが、その基盤となるインフラの切り替えに伴い、数分間不安定になることもあります。

しかし、これらは障害ではなく、単なる変更作業の影響に過ぎません。問題なのは、その過程で生じるノイズです。

そこで重要なのが、計画的なダウンタイムの管理です。リリースをマーキングし、想定される失敗を抑制し、メンテナンス期間を明確なビジネスコンテキストとともに明示しましょう。そうすることで、大きな環境変更の際にも、外形テストの品質を保ち、シグナルを有用に保つことができます。

この記事では、 「合成コンピューティングを正しく活用する」シリーズの次のベストプラクティスである「計画的なダウンタイムを正しく管理する方法」について解説します。このシリーズを初めてご覧になる方は、まず導入記事をご覧ください。これらのベストプラクティスがどのように組み合わさって、信頼性が高く実用的な合成ブラウザテストを実現するのかを学ぶことができます。

概要:外形テストのための計画的なダウンタイムの管理

計画的なダウンタイムの管理とは、予定されている変更に備えてブラウザ外形テストを事前に調整する手法です。これにより、テストで判断を誤らせるような失敗やパフォーマンスデータの歪みが生じるのを防ぎます。この手法では、オブザーバビリティプラットフォームに対し、次のように指示します。「これから通常とは異なる状況が発生します。結果の解釈はその文脈を踏まえて行うこと」。

Splunk Observability Cloudでは、ダウンタイム構成により以下のことが可能になります。

これにより、計画的な運用作業の前後や実施中においても、外形テストのシグナルを明確に保つことができます。たとえば、管理下でのデプロイ、アップグレード、パス変更といった作業です。

重要である理由

計画的なダウンタイムが重要な理由は、変更作業中にはノイズが生じやすく、ノイズによって本当に対応すべき問題が見えなくなってしまうためです(または、見えても確信が持てなくなります)。

リリース時やメンテナンス時には、合成テストはページの読み込み速度の低下、フローの不整合、一時的な障害などを検出することで、正しく動作します。問題は、これらの信号がメンテナンス期間中に発生することが予想される点です。それらを実際のインシデントのように扱うと、誤ったアラート、汚染されたダッシュボード、誤解を招くパフォーマンス傾向といった結果を招くことになる。

主なリスクを挙げてみましょう。

  1. 計画工事中は嵐にご注意ください。導入作業では、しばしば短時間で予期される障害が発生する。ダウンタイムがなければ、あらゆる障害がアラートを発報する機会となる。
  2. 歪んだベースライン。ウォームアップ時の動作や一時的な遅延の変化は、パフォーマンスや稼働時間の指標を歪める。
  3. 変更が発生した時期の記録はありません。メンテナンス期間を明示しないと、不具合や改善点を実際の事象と関連付けることができません。文脈が非常に重要であることを忘れないでください。

計画的なダウンタイムでは、こうした問題を解決するために、想定される変更を明示し、不要なシグナルを抑制して、外形テストのデータの品質を保ちます。目標は、メンテナンス期間外に外形テストでアラートが発生した場合、それに何らかの意味があると確信できるようになることです。

実践:計画的なダウンタイムの管理方法

Splunk Observability Cloudで計画的なダウンタイムを効果的に管理する方法をご説明します。これにより、外形テストのデータの品質と精度を保ち、実際の運用上の変更との整合性を確保できます。

1. 適切なダウンタイムルールを選択する

Splunk Synthetic Monitoringでは、2種類のダウンタイムルールをサポートしています。それぞれメンテナンス中の外形テストのデータを収集したり解釈したりする方法が異なります。下の表に、ダウンタイムのオプションと使用例をまとめました。

ダウンタイムオプション

Rule
Description
Result
Best Use Cases
Pause Tests
Stops selected synthetic tests from running during the downtime window.
No synthetic data is collected. Charts show gaps.
Login maintenance, database cutovers, known breakage windows, infrastructure work.
Augment Data
Tests continue running but each run is tagged with under_maintenance=true. These runs are excluded from uptime, SLAs, SLOs, and averages.
Continuous visibility without polluting availability or baseline reports.
Releases where you want to observe warm-up behavior, dependency restarts, or drift.

重要ポイント:メンテナンス中のデータを活用してインサイトを獲得

under_maintenance=true回の実行はSLAやSLOの対象外ですが、変更時の貴重な挙動を明らかにすることができます。

What to Look For
Why It Matters

• Warm-up impact after deployments

• Short-lived latency spikes

Shows where the application may need caching, readiness checks, or stabilization steps.
• Dependency sensitivity or third-party instability
Helps identify fragile integration points that behave differently during change.
• Regression indicators compared with RUM or APM
Confirms whether synthetic slowdowns match real user impact or backend service issues.

ダウンタイムの設定についてはこちらをご覧ください。

重要ポイント:メンテナンス状況をダッシュボードで視覚化して追跡

Splunkでは、ダウンタイムが外形テストのグラフ上に直接表示されるため、メンテナンスの実施時期や、実施に伴うパフォーマンスの変化をすばやく識別できます。

視覚的なインジケーターには以下が含まれます。

たとえば、以下のスクリーンショットをご覧ください。

ダウンタイムの記録は13か月間保持され、過去の正確な状況の確認に利用できます。

2. 合成ダウンタイムの設定

Splunk Observability Cloudで外形テスト向けにダウンタイムを設定する方法は2つあります。次のいずれかから選択します。

いずれのアプローチもテストデータの品質を保つために役立ちます。どちらを選ぶかは、チームの運営方法によります。

2.1 UIでダウンタイムを設定する

Splunk UIの利用が適しているのは、運用上必要なメンテナンス期間や定期リリース、そして明快な視覚化を自動化せずに実現したい場合です。以前はダウンタイム期間の設定が変更管理プロセスの一環として行われ、変更承認後に変更タスクとの関連付けを通じて実施されていました。

以下はUIでの設定が適しているケースです。

UIでできるダウンタイム関連のアクション

Action
Description
Learn More
Create a downtime window
Configure a one-time or recurring window for selected tests.
Schedule a downtime configuration
Modify an existing downtime
Edit, extend, end early, or delete downtime windows depending on their lifecycle.
Modify an existing downtime

UIベースの管理はシンプルかつ予測可能で、チームを横断した運用も容易です。

2.2 APIを使用し、ダウンタイムをコードとして設定する

ダウンタイムは、ObservabilityクラウドAPIを通じてプログラム的に作成および管理することもできます。これは、デプロイメントワークフローを自動化するチームや、ダウンタイムをリリースパイプラインや変更管理ツールで直接制御したいチームにとって最適な選択肢です。

以下はAPIでの設定が適しているケースです。

詳細はこちら: API を活用して合成ダウンタイム構成を管理する

例:APIを使用したダウンタイム期間の作成

snippet
curl -X POST "https://api.us1.signalfx.com/v2/synthetics/downtime_configurations" 

  -H "Content-Type: application/json" 

  -H "X-SF-TOKEN: $TOKEN" 

  -d '{

        "downtimeConfiguration": {

          "name": "release-maintenance",

          "rule": "augment_data",

          "testIds": [12345],

          "startTime": "2025-05-01T02:00:00Z",

          "endTime": "2025-05-01T03:00:00Z",

          "timezone": "America/New_York"

        }

      }'
title
JSON
label
APIを使用したダウンタイム期間の作成
type
JSON
showcopybutton
true

APIでダウンタイムを管理することで、オブザーバビリティにアプリケーションのデプロイや運用の状況が正しく反映されます。

3. メンテナンスの前後にバッファを追加する

メンテナンス期間の前後にはバッファ時間が必要です。デプロイ後にはシステムのウォームアップ、依存関係の初期化、キャッシュの再構築、トラフィックの安定化が行われるためです。

バッファ時間の役割には以下があります。

PythonでのAPI呼び出しの例

snippet
import requests
from datetime import datetime, timedelta

TOKEN = ""
REALM = "us1"
TEST_IDS = [12345]

start = datetime(2025, 5, 1, 2, 0)
end   = datetime(2025, 5, 1, 3, 0)
buffer = timedelta(minutes=15)

downtime_start = start - buffer
downtime_end   = end + buffer

payload = {
    "downtimeConfiguration": {
        "name": "release-maintenance",
        "rule": "augment_data",
        "testIds": TEST_IDS,
        "startTime": downtime_start.isoformat() + "Z",
        "endTime": downtime_end.isoformat() + "Z",
        "timezone": "America/New_York"
    }
}

resp = requests.post(
    url=f"https://api.{REALM}.signalfx.com/v2/synthetics/downtime_configurations",
    json=payload,
    headers={"Content-Type": "application/json", "X-SF-TOKEN": TOKEN},
)

print(resp.status_code, resp.text))
Title
Python
label
PythonでのAPI呼び出しの例
type
パイソン
ShowCopyButton
true

4. メンテナンス後に検証のためのrunを実行する

メンテナンスが完了したら、重要性の高いテストを直ちに実行し、主要なワークフローが正常に動作していることを確認します。これには、次のいずれかの方法を用います。

これにより、リリースが正常に完了したことを直ちに確認できます。

詳細:

結論

計画的なダウンタイムの目的は、アラートを止めることだけではありません。それは、管理下での変更の間も外形テストのデータの品質とシグナルの信頼性を保つことでもあります。外形監視は、的確なダウンタイムルール、十分なバッファ、APIによる自動化、メンテナンス後の検証を活用し、補強されたテストrunを適切に利用することで、オブザーバビリティプラクティスの安定性と信頼性を支える要素となります。

適切に管理されたダウンタイムは強みになります。たとえば、メンテナンス期間外に外形テストでアラートが発生した場合、それが本物のアラートであることを確信できます。リリース中にアラートが発生しなければ、設定が正しく機能しているとわかります。また、補強されたrunを通じてドリフトや脆弱性が明らかになれば、それを早期警告のサインと捉えて、ユーザーに影響が及ぶ前に対処できます。

次に取るべき行動

現在のダウンタイム設定を見直し、重要なテストに適切なルールが設定されていることを確認しましょう。次回のリリース前後にはバッファ時間を設け、ダウンタイムAPIを使ってプロセスを自動化し、メンテナンス完了後に主要なワークフローを検証してみてください。

チームが信頼できる合成テストの構築を続けるには、このシリーズの続きをご覧ください。Splunk Observability Cloudの無料トライアルを利用して、合成データ、RUM、APMがどのように連携してエンドツーエンドの完全な可視性を提供するのかを体験することもできます。

関連記事

Splunk Observability Cloud AI Assistant 再入門 - 4つの基本ユースケース
オブザーバビリティ
5 分程度

Splunk Observability Cloud AI Assistant 再入門 - 4つの基本ユースケース

Splunk Observability Cloudでは、LLMを利用してオブザーバビリティデータを分析し、ユーザーにインサイトを提供するチャットボット機能であるAI Assistantを日本リージョンでも一般提供しています。AI Assistantの機能や動作について、再入門のための情報を提供します。
可用性とは?
オブザーバビリティ
14 分程度

可用性とは?

このブログ記事では、可用性と可用性監視について詳しく解説し、高可用性の実現がビジネスにとって重要である理由を説明します。
DevOpsのリリース管理の概念とベストプラクティス
オブザーバビリティ
5 分程度

DevOpsのリリース管理の概念とベストプラクティス

DevOpsのリリース管理におけるベストプラクティスを説明します。チームが迅速にデプロイできるスケジュールを自動化および維持し、信頼性の高いソフトウェアをよりスピーディにリリースするのに役立ちます。