プロダクションリアリティ(リビングダイアグラム)

Reality(リアリティ)は、C4 ダイアグラムを実際に稼働しているものの生きたビューへと変えます。読み取り専用の本番ソース(Kubernetes、Datadog、New Relic)を接続すると、Archyl が実際のサービスとその依存関係を検出し、それらをあなたが整備したモデルと突き合わせて整合させます。ダイアグラムはもはやスナップショットではなくなり、本番環境を反映するようになります。
Reality は 読み取り専用かつ非破壊的 です。スキャンがインフラを変更することは決してなく、C4 モデルを自動で編集することもありません。検出されたものはすべて、あなたが承認する提案です。
仕組み
Reality は 3 つのプレーンをきれいに分離して保ちます。
- Model(モデル) — あなたが整備した C4 アーキテクチャ(意図)。変更できるのはあなただけです。
- Reality(リアリティ) — 本番環境で観測されたものを継続的に更新するミラー(事実)。
- Binding(バインディング) — 両者をつなぐリンクで、あなたが確認するもの。
スキャナーが書き込むのは Reality と Binding のプレーンに対してのみです。検出されたリソースをモデルへ昇格させるのは、常に明示的なクリックです。
ステップ 1 — 組織でソースを接続する
認証情報は組織のマーケットプレイスに保存されるため、各ソースの設定は 一度 だけ行えば、どのプロジェクトからでも利用できます。
Organization → Marketplace に移動し、次のいずれかを接続します。
Kubernetes
クラスターの API への読み取り専用接続です。
- API Server URL — 例:
https://10.0.0.1:6443 - Read-only ServiceAccount Token — 組み込みの
viewClusterRoleにバインドしたServiceAccountを作成し、トークンを生成します - Skip TLS Verification — 自己署名証明書を使う開発クラスターの場合のみ
trueに設定します
Archyl がクラスターに書き込むことは決してありません。読み取りエンドポイント(describe/list)のみを呼び出します。
Datadog
- API Key と Application Key(APM 読み取り権限付き)
- Site —
datadoghq.com、datadoghq.eu、us5.datadoghq.com、…(アカウントのリージョンと一致している必要があります)
Datadog は APM の Service Map を読み取ります。これには推論された外部依存関係(データベース、キュー、サードパーティサービス)も含まれます。
New Relic
- User API Key(
NRAK-…) — エンティティとリレーションシップの読み取りに使用します - Account ID(任意)
- Region —
USまたはEU(アカウントと一致している必要があります)
New Relic は APM アプリケーションと OpenTelemetry サービス、そしてそれらの CALLS リレーションシップを読み取ります。
ステップ 2 — プロジェクトにソースを追加する
プロジェクトのダイアグラムを開き、ツールバー(右上)の Reality をクリックします。右側に Reality パネルが開きます。
- Add source をクリックします。
- 接続済みのインテグレーションから 1 つを選びます。
- プロジェクトの scope(スコープ)を追加します — Kubernetes の namespace、または Datadog/New Relic の environment(例:
production)です。すべてを含めたい場合は空欄のままにします。 - Add & scan をクリックします。
1 つのプロジェクトには任意の数のソースを設定できます — Kubernetes と Datadog の両方でも、1 つだけでも、複数でも構いません。
ステップ 3 — スキャン
各ソースは独立してスキャンされます。ソースの refresh(更新)アイコンを使うと再スキャンできます。検出はべき等です。再スキャンは既存のものを重複させるのではなく更新し、本番環境から消えたものはフラグが立てられます(決して削除はされません)。
オブザーバビリティソースには遅延が生じることがあります。サービスは通常数分以内に表示されますが、Connections(接続)はトレース分析から計算されるため、十分なトラフィックが継続して 10〜30 分かかってから反映されることがあります。
ステップ 4 — リソースを整合させる
Resources(リソース)タブは、検出されたものをグループ化します。
- Unmodeled in production(本番で稼働中だが未モデル化) — 本番環境で稼働しているが、まだダイアグラムに載っていないもの。それぞれについて次の操作ができます。
- Bind — 候補となる既存の C4 要素にリンクします。
- Promote — 新しい C4 要素に変えます(後述)。
- Ignore — 却下します(復元可能)。
- Drifted(ドリフト) — モデルにバインドされているが、本番状態が乖離したもの(例: 異常、または消失)。
- In your model(モデル内) — 本番と C4 の間で確認済みの一致。
- Orphan(オーファン) — モデルには存在するが、本番に対応物がないもの。
filter(フィルター)フィールドを使って、名前・種類・namespace で検索できます。
サービスをコンテナレベルへ昇格させる
Promote は、検出されたサービスから新しい C4 container を作成します。コンテナはシステムの内部に存在するため、まず昇格させたいシステムを開いてください(コンテナレベルまでドリルダウンします)。システムが開かれていない場合、Promote は無効になり、ヒントが表示されます。新しいコンテナは、表示中のシステム内に配置されます。
ステップ 5 — 接続を整合させる
Connections(接続)タブは、検出された依存関係(誰が誰を呼び出しているか)を一覧表示します。接続は、その 両方 のエンドポイントがモデル内(バインド済みまたは昇格済み)になると 昇格可能 になります。Promote をクリックすると、ダイアグラム上に実際のリレーションシップとして描画されます。昇格された接続は、提案リストから自動的に外れます。
ダイアグラム上の Reality レンズ
Reality パネルを開いている間、キャンバスにはライブのスキンが適用されます。確認済みの本番リソースに裏付けられた C4 要素は、右上に小さな ヘルスドット(とインスタンス数)を表示します。これは非破壊的なままです — 編集ではなくオーバーレイです。昇格されたサービスは、きれいな通常のノードとして描画されます。
安全性と制限
- 読み取り専用 — Reality が本番システムに書き込んだり、C4 モデルを自動編集したりすることは決してありません。すべての変更はあなたが承認します。
- ソースごとの分離 — あるソースをスキャンしても、別のソースのデータに影響することはありません。
- 可逆的 — バインディングは解除でき、無視した項目は復元でき、昇格された要素は編集や削除が可能な通常の C4 要素です。
- 信頼レベル — リレーションシップは起源によってタグ付けされます。observed(テレメトリ由来、最も強いシグナル)と config-derived(クラスター構成由来)です。テレメトリソース(Datadog、New Relic、Kubernetes + サービスメッシュ)が、最も完全な依存関係グラフを提供します。