13.9.1.3 파이프라인 외곽 간접 접속(Decoupling)을 위한 Publisher Sink 기반 덤프 로직
파이프라인(Dataflow) 세계는 각 노드가 엄격하게 묶인 의존성 그래프(Directed Acyclic Graph) 다. A 노드의 결과는 필연적으로 B 노드로 가야 한다.
하지만 시스템을 운영하다 보면 수많은 ‘기생형’ 서브 시스템들이 파이프라인 허리에 달라붙으려 한다. 모니터링 콘솔 센터는 A 노드와 B 노드 사이로 지나가는 “중간 텐서값(Middle-State)“을 훔쳐보고 싶어 하고, 침임 탐지 로그 서버도 그 센서값의 파편을 원한다.
이때 기생(Monitoring)을 원한답시고, 1ms 짜리 하드 리얼타임 파이프라인 그래프 중앙에 로깅 서버용 배관(Link)을 더럽게 찢어(Fork) 붙이는 행위는 아키텍처의 재앙이다. 디버깅 모니터링 노드가 큐 블로킹(Queue Full)을 유발하면 메인 자율주행 모터 제어 배관마저 교착(Deadlock)에 빠져버린다.
본 절에서는 핵심 파이프라인의 레이턴시(Latency)를 단 1나노초도 침범하지 않고, 투명한 관찰자적 시선으로 파이프라인 중간 덤프를 떠다 외곽 범용 생태계로 소거해버리는 비간섭(Decoupled) Publisher Sink 덤프망 런북을 갈파한다.
1. 본질적 파이프라인(Main Graph)의 완전 무결 분리
데이터플로우의 생명은 간결하고 직선적인 제어 배관이다.
다음 2개의 컴포넌트(Camera -> Actuator)로만 이루어진 궁극의 핵심 메인 파이프를 상상해라.
- 엣지 시스템의 C++ 코드나 워커 스레드는 이
Camera -> Actuator로 흐르는 본류에만 전력을 다해야 한다.
그런데 개발자가 디버깅을 하겠답시고 저 둘 사이에 무겁디무거운 JSON 변환 연산과 디버그 로깅 코드를 욱여넣으면 시스템 응답성은 나락을 간다.
2. Shadow Forking과 Pub-Sink 의 결탁
현명한 분산 아키텍트는 코드(C++)를 1줄도 더럽히지 않는다. 오직 선언적 매니페스트(YAML)로, 메인 데이터 통신 소켓의 제로카피 포인터만 그림자처럼 복사(Shadow Clone)하여, 오직 “글로벌 생태계로 던져버리는(Publish)” 버림 용도의 찌꺼기 관문을 만든다.
# [파이프라인 핵심 스레드 비간섭 Pub-Sink 로깅 런북]
sinks:
- id: "Shadow_Dump_Sink" # 파이프라인 메인 흐름에 일절 타격이 없는 그림자 배출구!
uri: "file:///opt/zenoh_flow/builtin_sinks/zenoh_pub_sink.so"
configuration:
key_expr: "debug/telemetry/camera_raw"
links:
# [메인 배관]: 카메라 -> 모터 (1ms 하드 리얼타임 절대 보호 구역)
- from: { node: "Camera", output: "out" }
to: { node: "Actuator", input: "in" }
# [그림자 배관]: 동일한 카메라 데이터를 슥삭 복사해서 외부망(Pub)에 무단 방류한다.
- from: { node: "Camera", output: "out" }
to: { node: "Shadow_Dump_Sink", input: "in" }
이 YAML 배관을 추가하는 순간, 메인 Actuator 가 쓰는 컴퓨팅 스레드 풀(Thread Pool)과 완전히 물리적으로 격리된 다른 비동기 백그라운드 스레드에서 저 그림자 데이터가 처리된다.
3. 토픽 도청자(Eavesdropper) 생태계의 완성
이렇게 Shadow_Dump_Sink 가 허공의 글로벌 토픽(debug/telemetry/camera_raw)으로 바이트를 후려갈기기 시작하면, 전 세계 어디서든 수십 개의 기생형 모니터링 콘솔(React, Grafana Dashboard, Python 스크립트 등)들이 이 토픽을 구독(Subscribe)하려 벌떼처럼 모여든다.
기생충(Subscriber)이 1천 대가 붙든, 아예 다 죽어서 구독자가 0명이 되든, 파이프라인 내부의 Camera -> Actuator 메인 스레드 연산 코드는 Zenoh 엔진단이 베푸는 백그라운드 멀티캐스트 네트워크 카드 복사본 방류의 은혜 위에서 전혀 레이턴시 저하 타격을 받지 않는다(Total Decoupling).
파이프라인 안에서의 논리적 무결점을 박살내지 않으면서도 시스템 내부의 핏줄(Intermediate State)을 투명하게 외곽 관제 생태계로 퍼붓는 것. 복잡한 시스템 내부의 커플링(Coupling)을 허용하지 않고 오직 글로벌 토픽(Topic) 덤프로만 시스템을 관찰 및 통제하는 설계. 이것이 거대 분산 모놀리식 타락을 방어해 내는 엣지 마이크로서비스 관찰성의 극의다.