프로덕션 리얼리티 (살아있는 다이어그램)

Reality(리얼리티)는 여러분의 C4 다이어그램을 실제로 동작 중인 것의 살아있는 뷰로 바꿔줍니다. 읽기 전용 프로덕션 소스 — Kubernetes, Datadog, New Relic — 를 연결하면 Archyl이 실제 서비스와 그 의존성을 발견하고, 이를 여러분이 직접 큐레이션한 모델과 대조해 조정합니다. 다이어그램은 더 이상 한 시점의 스냅숏에 머무르지 않고 프로덕션을 반영하기 시작합니다.
Reality는 읽기 전용이며 비파괴적입니다. 스캔이 인프라를 변경하는 일은 결코 없으며, C4 모델을 스스로 편집하지도 않습니다. 발견된 모든 것은 여러분이 승인하는 제안일 뿐입니다.
동작 방식
Reality는 세 개의 평면(plane)을 깔끔하게 분리해 유지합니다.
- Model(모델) — 여러분이 큐레이션한 C4 아키텍처(의도). 오직 여러분만 변경합니다.
- Reality(리얼리티) — 프로덕션에서 관측된 것을 지속적으로 갱신하는 거울(사실).
- Binding(바인딩) — 둘 사이의 연결로, 여러분이 확정합니다.
스캐너는 오직 Reality 평면과 Binding 평면에만 기록합니다. 발견된 리소스를 모델로 승격(promote)하는 것은 언제나 명시적인 클릭으로만 이루어집니다.
1단계 — 조직에 소스 연결하기
자격 증명은 여러분 조직의 마켓플레이스에 저장되므로, 각 소스를 한 번만 구성하면 어떤 프로젝트에서든 사용할 수 있습니다.
Organization → Marketplace로 이동해 다음 중 하나를 연결하세요.
Kubernetes
클러스터 API에 대한 읽기 전용 연결입니다.
- API Server URL — 예:
https://10.0.0.1:6443 - 읽기 전용 ServiceAccount 토큰 — 내장된
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를 클릭합니다.
- 연결된 통합 중 하나를 선택합니다.
- 프로젝트 scope(범위)를 추가합니다 — Kubernetes namespace 또는 Datadog/New Relic environment(예:
production). 모든 것을 포함하려면 비워 두세요. - Add & scan을 클릭합니다.
한 프로젝트는 원하는 만큼 소스를 가질 수 있습니다 — Kubernetes 와 Datadog을 함께, 하나만, 또는 여러 개를.
3단계 — 스캔
각 소스는 독립적으로 스캔합니다. 소스의 refresh(새로고침) 아이콘을 사용해 다시 스캔하세요. 디스커버리는 멱등적(idempotent)입니다. 다시 스캔하면 이미 있는 것을 중복으로 만들지 않고 갱신하며, 프로덕션에서 사라진 것은 (삭제되지 않고) 표시됩니다.
옵저버빌리티 소스는 지연될 수 있습니다. 서비스는 보통 몇 분 내에 나타나지만, relationships(관계)는 트레이스 분석으로 계산되므로 충분한 트래픽이 지속될 때 채워지는 데 10~30분이 걸릴 수 있습니다.
4단계 — 리소스 조정하기
Resources 탭은 발견된 것을 그룹으로 묶어 보여줍니다.
- Unmodeled in production(프로덕션에서 모델링되지 않음) — 프로덕션에서 동작 중이지만 아직 다이어그램에 없는 것. 각 항목에 대해 다음을 할 수 있습니다.
- Bind — 제안된 기존 C4 요소에 연결합니다.
- Promote — 새로운 C4 요소로 만듭니다(아래 참조).
- Ignore — 무시합니다(복구 가능).
- Drifted(드리프트됨) — 모델에 바인딩되어 있지만 프로덕션 상태가 어긋난 것(예: 비정상 상태이거나 사라짐).
- In your model(모델에 있음) — 프로덕션과 C4 사이에서 확인된 일치 항목.
- Orphan(고아) — 모델에는 있지만 대응하는 프로덕션 항목이 없는 것.
이름, 종류(kind), 또는 namespace로 검색하려면 filter 필드를 사용하세요.
서비스를 컨테이너 레벨로 승격하기
승격은 발견된 서비스로부터 새로운 C4 container(컨테이너)를 만듭니다. 컨테이너는 시스템 안에 존재하므로, 먼저 원하는 시스템을 여세요(컨테이너 레벨로 드릴다운). 열려 있는 시스템이 없으면 Promote는 비활성화되며 힌트가 표시됩니다. 새 컨테이너는 여러분이 보고 있는 시스템에 생성됩니다.
5단계 — 연결 조정하기
Connections 탭은 발견된 의존성(누가 누구를 호출하는지)을 나열합니다. 어떤 연결은 두 엔드포인트가 모두 모델에 있을 때(바인딩 또는 승격됨) **승격 가능(promotable)**해집니다. Promote를 클릭하면 다이어그램에 실제 관계로 그려집니다. 승격된 연결은 제안 목록에서 자동으로 사라집니다.
다이어그램의 Reality 렌즈
Reality 패널이 열려 있는 동안 캔버스에는 라이브 스킨이 켜집니다. 확인된 프로덕션 리소스로 뒷받침되는 C4 요소는 우측 상단에 작은 health dot(상태 점)과 인스턴스 개수를 표시합니다. 이는 비파괴적으로 유지됩니다 — 편집이 아니라 오버레이입니다. 승격된 서비스는 깔끔하고 평범한 노드로 렌더링됩니다.
안전성과 한계
- 읽기 전용 — Reality는 프로덕션 시스템에 절대 기록하지 않으며 C4 모델을 자동으로 편집하지도 않습니다. 모든 변경은 여러분이 승인합니다.
- 소스별 격리 — 한 소스를 스캔하는 것이 다른 소스의 데이터에 영향을 주는 일은 결코 없습니다.
- 되돌릴 수 있음 — 바인딩은 해제할 수 있고, 무시한 항목은 복구할 수 있으며, 승격된 요소는 편집하거나 삭제할 수 있는 일반 C4 요소입니다.
- 신뢰 수준 — 관계는 출처에 따라 태그가 붙습니다: observed(텔레메트리 기반, 가장 강한 신호) vs config-derived(클러스터 구성 기반). 텔레메트리 소스(Datadog, New Relic, Kubernetes + 서비스 메시)는 가장 완전한 의존성 그래프를 제공합니다.