1.7.3 ROS 2 대체 미들웨어로서의 입지 강화
현대 로보틱스 공학의 사실상 표준(De facto standard)으로 군림해 온 로봇 운영체제(ROS, Robot Operating System) 생태계는 ROS 2로 버전업되면서 DDS(Data Distribution Service)를 기본 통신 미들웨어(RMW, ROS Middleware)로 채택하는 강수를 두었다. 그러나 무거운 데이터 구조와 복잡한 검색(Discovery) 메커니즘을 가진 DDS 프로토콜은 빈약한 컴퓨팅 자원을 가진 소형 에지(Edge) 로봇이나 통신 상태가 불안정한 무선 네트워킹(Wi-Fi, 5G 등) 환경에서 처참한 멀티캐스트(Multicast) 대역폭 폭주와 데드락(Deadlock) 현상을 야기하며 차세대 모빌리티 개발자들의 근심거리가 되었다.
본 절에서는 Zenoh(제노)가 기존 ROS 2 생태계의 견고한 장벽을 무너뜨리고, DDS 아키텍처의 한계를 투명하게 대체해 나가는 zenoh-bridge-dds 및 기본 rmw_zenoh 패러다임의 원리와 그 치명적 효율성을 해부한다.
1. 퍼블릭 망(WAN)과 멀티캐스트 폭풍(Multicast Storm) 병목의 파괴
로보틱스 인프라가 독립된 하나의 팩토리(Factory)나 연구실의 로컬 랜(LAN)을 벗어나, 인터넷으로 전 세계와 연결(Connected Car, Teleoperation)되어야 하는 순간 거대한 한계가 드러난다. DDS는 설계 사상 자체에 엄격한 P2P 로컬 멀티캐스트를 전제로 깔고 있어, 인터넷 공유기를 타고 외부 공용망(WAN) 라우터로 나가는 순간 브로드캐스트 패킷이 블로킹 오작동(Block)을 일으킨다. 이를 타파하려면 지옥과도 같은 글로벌 IP 지정과 보안 터널링(VPN) 설정 등 끔찍한 네트워크 엔지니어링 런북(Runbook) 오버헤드가 동반되었다.
Zenoh는 ROS 2 생태계에 플러그인 방식의 zenoh-bridge-dds 브리지를 투하함으로써 이 문제를 완전히 소거했다. 로봇의 두뇌인 ROS 노드(Node) 옆에 조용히 데몬으로 기생하는 Zenoh 라우터는, 로컬에서 터져 나오는 DDS 멀티캐스트 스톰(Storm) 트래픽을 자신만이 독식(Intercept)하여 가볍게 가변 인코딩 압축(Compression)을 해버린다. 이후 로컬망 밖으로 뻗어 나갈 때는 멀티캐스트의 흔적조차 남기지 않고, 압축된 단일 TCP/QUIC 터널(Tunnel)을 하나만 뚫어 전 세계 반대편의 클라우드 관제 센터에 위치한 또 다른 Zenoh 라우터로 총알처럼 직배송해 낸다. 이 우아한 멀티플렉싱 오토 터널링(Auto-Tunneling)은 ROS 2 개발자가 단 한 줄의 미들웨어 소스 콜(Call) 수정이나 네트워크 방화벽 우회 셋업 없이도 인터넷 규모(Internet-scale)의 지구 반대편 데이터 전송을 가능하게 하는 기염을 토해냈다.
2. RMW(ROS Middleware) 계층의 네이티브(Native) 융합, rmw_zenoh의 등장
Zenoh가 단순한 릴레이 브리지(Relay Bridge)의 역할에 안주했다면 영원히 보조재(Sidecar)의 위치에 머물렀을 것이다. 하지만 거대 오픈소스 커뮤니티와 ZettaScale 팀은 DDS 프로토콜 그 자체를 ROS 2 아키텍처의 내장에서 완전히 도려내고, 그 빈자리에 Zenoh 코어 엔진을 물리적으로 직접 박아 넣는 rmw_zenoh (RMW: ROS Middleware) 구현체를 세상에 내놓았다.
기존 ROS 2 아키텍처는 노드끼리 소켓(Socket)을 열고 통신하기 위해 무거운 XML 구조의 인터페이스 규약(IDL) 컴파일에 의존해야 했지만, rmw_zenoh 엔진으로 구동되는 ROS 2 생태계는 DDS 패킷 계층의 생성 연산 자체를 영원히 스킵(Skip)한다. 오직 최소한의 1바이트 가변 정수(Variable Integer) 헤더만을 사용하는 Zenoh의 와이어 포맷(Wire Format) 위로 ROS 메시지 토픽(Message Topic)이 직행함으로써, 마이크로컨트롤러(MCU)에서나 구동 가능할 법한 극도의 메모리 다이어트(Diet)와 CPU 점유율 하락 곡선을 실현한다. 특히 잦은 노드 스핀(Spin)이 일어나는 자율주행 알고리즘 환경에서 시스템 풋프린트(Footprint)를 절반 가까이 삭감한 이 놀라운 벤치마크 결과들은, 현재 글로벌 자동차 티어 1(Tier 1) 제조사들이 맹목적으로 기존 DDS 스택을 걷어차고 rmw_zenoh 기반 프레임워크로 갈아타게 만드는 마법의 스위치로 강하게 작용하고 있다.
3. 마이크로-ROS(Micro-ROS) 한계를 뛰어넘는 Zenoh-Pico와의 이기종 브릿징
수 킬로바이트(KB) 남짓한 SRAM을 지닌 아주 작은 8비트, 32비트 임베디드 코텍스(Cortex) 모터 제어 보드는 거대한 ROS 2 스택을 구동할 체력이 없다. 오픈소스 진영은 이 틈새를 메우기 위해 Micro-ROS를 고안해 냈지만, 이마저도 XRCE-DDS라는 또 다른 기형적인 에이전트 브리지 종속성(Dependency)을 가지며 레이턴시 핑퐁(Ping-pong) 병목과 잦은 세션 크래시를 동반했다.
여기서 Zenoh의 스케일 무관형(Scale-agnostic) 아키텍처의 진가가 불을 뿜는다. 가장 밑단의 펌웨어(Firmware)를 C 엔지니어링으로 초압축(Scale-down)한 Zenoh-Pico 에디션은 이러한 거추장스러운 ROS 2 에이전트 없이 네이티브하게 최상단 AWS ROS 2 노드와 직접 대화를 섞는다. 1미터짜리 로컬 직렬 버스(Serial Bus)이든 1만 킬로미터짜리 위성망(SATCOM) 터널이든, 낡은 마이크로보드의 온도 센서 핀은 100기가비트(Gbps) 데이터센터의 GPU 노드까지 단 하나의 Zenoh 네임스페이스 경로표 하나만을 나침반 삼아 무변환 직행 라우팅(Zero-translation Routing)을 질주한다. 결과적으로 ROS 2 시스템의 혈맥을 최고위 클라우드 백본에서부터 최하층 먼지 스케일의 베어메탈(Bare-metal) 센서 구멍에까지 투명하고 연속적으로 심어버리는 이 아키텍처적 침략은, Zenoh가 아니면 영원히 풀지 못할 로보틱스 통신 역사상 최고의 백엔드(Backend) 통일 마스터피스로 불리고 있다.