20.6.2.2 페이로드 매핑 오토(Auto) 모드 억제 및 원시 바이트(Raw Bytes) 처리 일원화 전술

20.6.2.2 페이로드 매핑 오토(Auto) 모드 억제 및 원시 바이트(Raw Bytes) 처리 일원화 전술

이기종 프로토콜인 MQTT 와 Zenoh 메쉬망을 브릿지(Bridge)로 연결할 때, 어설프게 똑똑한 프록시 데몬이 문자열을 텍스트(JSON)로 자동 오인하여 무거운 인코딩 로직을 돌리다 스루풋을 작살내고 데이터 포터블리티마저 박살 내는 참사(20.6.2.1장 참조)를 진단했다.

초당 수십만 개의 텔레메트리 바이트를 옮겨야 하는 하드 리얼타임 데이터 분산 시스템에서, 브릿지(Proxy) 계층이 건방지게 패킷의 내용물을 ‘읽고, 추측하고, 번역하려는’ 시도 자체는 불법(Illegal)이어야 한다. 브릿지의 임무는 단 하나, 무상태(Stateless) 도급업체로서 A 파이프의 물을 B 파이프로 흘려보내는 물리적 단순 노동이다.
본 절에서는 낡은 MQTT 우주에서 넘어오는 수많은 쓰레기 포맷들을, 어떤 논리적 개입이나 포맷 추측 없이 무자비하게 날 것(Raw) 그대로 강제 캐스팅해버리는 Auto 모드 영구 척살 및 원시 바이트 일원화 런북을 갈파한다.

1. 지옥의 스마트 매핑(Smart Mapping) 억제 선언

Zenoh-Bridge-MQTT 를 구동할 때, 기본값(Default)으로 켜져 있는 미친 설정이 바로 auto-mapping 이다.

로컬망의 낡은 온도 센서가 Temp: 27 이란 문자열을 던지면, 기본 브릿지는 이걸 파싱한답시고 C++ 정규식이나 문자열 검색 루틴을 내부적으로 한 바퀴 굴리며 CPU 를 낭비한다.
아키텍트는 브릿지 구동 매니페스트(Config) 단에서 이 불필요한 번역가의 지능을 0(Zero)으로 퇴화시켜버린다.

// [Zenoh MQTT 브릿지의 지능 퇴화 및 짐꾼(Porter) 강제 런북]
{
  bridge: {
    mqtt: {
      // 1. 네가 뭔데 패킷을 추측하려 드는가? 멍청하게 굴어라!
      payload_mapping: "Raw", // [절대 권력] Auto 따위는 없다! 무조건 Raw 배열로만 옮긴다.
      
      // 2. 만약 네가 라우팅하다 깨진 문자열을 만나더라도 절대 고치려 들거나 에러 내지 말고 패스해라!
      forward_malformed: true 
    }
  }
}

2. 원시 바이트(Raw Bytes) 랩핑: 제로-오버헤드의 완성

payload_mapping: "Raw" 옵션이 선언되는 순간, 브릿지 데몬 스레드는 놀라운 경량화를 겪는다.

MQTT 브로커로부터 0x7B 0x22 0x74 ... 와 같은 50바이트의 쓸모없는 문자열 뭉텅이가 수신되면, 이 멍청해진 브릿지는 그것이 JSON인지 텍스트인지 이진 파일인지 보지도 않는다.

  1. RAM 에 잡힌 그 50바이트의 시작 포인터와 길이(Length) 정보만 딴다.
  2. 그 위에 application/octet-stream (의미 없는 단순 이진 바이트라는 규격 표표)을 멱살 잡아 강제로 씌워버린다. (Metadata Wrapping).
  3. 그리고 즉시 Zenoh 엔진단으로 배출해 버린다.

이 “안 보고 던지기” 스루풋(Throughput) 메커니즘은, 텍스트 파싱을 할 때 초당 10만 건에서 CPU 발열을 일으키던 브릿지를 단숨에 초당 100만 건 이상(1M msgs/sec) 의 절대적 처리량 구간으로 수직 상승시킨다. CPU는 문자열 해석 루프(string.contains() 등)를 돌지 않으니 L1 캐시는 상쾌하게 비워지고, 발열은 평형을 찾으며 제로 오버헤드(Zero-Overhead)의 성지가 열린다.

3. 포맷 해석 책임의 엔드포인트 전가 (End-To-End Translation)

“그러면 그 의미 불명의 원시 바이트(Octet-Stream)를 넘겨받은 클라우드 시스템이나 디스플레이 패널은 어떻게 해석하는가?”
이것이 진정한 분산 시스템 책무 할당(Delegation)의 정점이다.

중간 교차로(Router/Bridge)에서 데이터를 번역하려 드는 구시대적인 ESB(Enterprise Service Bus)의 망령을 처형하라! 라우터와 브릿지는 빛의 속도로 짐(Bytes)만 옮기는 도로일 뿐이다.
그 데이터에 무슨 의미가 담겨 있는지를 포맷팅하고 파싱하는 행위(Business Logic)는, 그 짐을 최종적으로 풀어서 그래픽으로 전시할 리액트(React) 웹 관제 프론트엔드나, 클라우드의 Python 최종 데이터 분석기(End-point Client) 가 100% 전담하여 떠맡아야 한다.

최종단에 위치한 파이썬 스크립트만이 여유로운 CPU 사이클을 쓰면서 json.loads(payload.bytes) 를 수행하면 그만이다.
파이프라인 한가운데서 발생하는 포맷 번역 개입을 억제하고 데이터의 이진(Raw) 순수성을 훼손 없이 전달시키는 것. 이것이 복잡계를 지배하는 ’엔드 투 엔드 원칙(End-To-End Principle)’의 야만스럽지만 가장 압도적인 승리 공식이다.