Booil Jung

Dust-DDS

“Dust-DDS”라는 용어는 기술적 논의의 장에서 종종 혼동을 유발하는 복합적인 개념을 내포하고 있다. 이 용어는 단일 기술을 지칭하는 것이 아니라, 서로 다른 기원과 목적을 가진 세 가지 핵심 기술의 교차점을 암시한다. 따라서 본 보고서는 이 세 가지 개념을 명확히 구분하고 각각의 본질을 규명하는 것에서부터 논의를 시작하고자 한다. 이들의 관계를 이해하는 것은 산업용 사물 인터넷(IIoT)과 분산 시스템의 미래를 조망하는 데 있어 필수적인 첫걸음이다.

첫째, Dust Networks는 기술 회사의 이름이자, 저전력 무선 센서 네트워크(WSN) 분야를 개척한 기술 패러다임을 의미한다. 이는 수많은 초소형 저전력 장치들을 열악한 산업 환경에서도 안정적으로 연결하고자 하는 ‘문제 영역(problem space)’을 대표한다. Dust Networks의 핵심 기술인 TSMP(Time Synchronized Mesh Protocol)는 저전력 통신의 신뢰성을 획기적으로 높여 IEEE 802.15.4e 표준의 일부가 되었으며, 이는 “스마트더스트(Smartdust)”라는 비전을 현실화하는 데 크게 기여했다.

둘째, DDS(Data Distribution Service)는 OMG(Object Management Group)가 제정한 공식 미들웨어 ‘표준’이다. DDS는 복잡한 분산 시스템에서 실시간으로 데이터를 안정적이고 효율적으로 공유하기 위한 데이터 중심의 통신 아키텍처를 정의한다. 이는 특정 구현체가 아닌, 고성능 데이터 분배 문제를 해결하기 위한 ‘솔루션 아키텍처(solution architecture)’에 해당한다.

셋째, Dust DDS는 S2E Software Systems가 개발한 DDS 표준의 특정 ‘구현체(implementation)’이다. 이 구현체는 최신 프로그래밍 언어인 Rust로 작성되었으며, 이름의 유사성에도 불구하고 Dust Networks의 기술과 직접적인 기술적 파생 관계는 없다. 이는 DDS 표준을 현대적인 개발 환경에서 안전하고 효율적으로 사용하기 위한 하나의 구체적인 소프트웨어 제품이다.

결론적으로, 사용자의 “Dust-DDS”라는 질의는 단순한 오해가 아닌, 기술적 통찰을 담고 있는 직관적인 질문으로 해석할 수 있다. 이는 “고성능 데이터 중심 미들웨어인 DDS라는 솔루션이, Dust Networks가 직면했던 저전력, 비신뢰성 네트워크라는 문제를 효과적으로 해결할 수 있는가?”라는 근본적인 질문을 함축한다. 본 보고서는 이러한 관점에서 세 개념을 먼저 명확히 분리하여 설명하고, Dust DDS라는 특정 구현체를 분석한 후, 이 두 세계를 잇는 공식적인 가교 기술인 DDS-XRCE를 심도 있게 탐구함으로써 사용자의 질의에 대한 종합적인 해답을 제시하고자 한다.

DDS는 분산 시스템의 구성 요소들을 통합하여 낮은 지연 시간의 데이터 연결성, 극도의 신뢰성, 그리고 확장 가능한 아키텍처를 제공하는 OMG의 미들웨어 프로토콜 및 API 표준이다. DDS의 핵심 철학은 애플리케이션 개발자가 운영체제, 네트워크 전송, 저수준 데이터 형식과 같은 복잡한 통신 메커니즘으로부터 해방되어 애플리케이션의 핵심 로직에만 집중할 수 있도록 하는 것이다.

DDS의 근간을 이루는 통신 모델은 발행-구독(Publish-Subscribe, Pub/Sub) 패턴이다. 이 모델에서 데이터를 생성하는 노드(발행자, Publisher)는 특정 주제(Topic)로 데이터를 분류하여 발행하고, 데이터를 소비하는 노드(구독자, Subscriber)는 관심 있는 토픽을 구독하여 해당 데이터만 수신한다. 발행자와 구독자는 서로의 존재나 위치를 미리 알 필요 없이 런타임에 동적으로 서로를 발견한다. 이러한 느슨한 결합(loose coupling)은 시스템의 유연성과 확장성을 극대화하며, 다대다(many-to-many) 비동기 통신을 가능하게 한다. DDS는 애플리케이션의 개입 없이 메시지를 받을 대상 결정, 구독자 위치 파악, 메시지 전달 실패 시 처리 등 모든 전송 관련 작업을 자동으로 처리한다.

DDS를 다른 미들웨어와 구별 짓는 가장 중요한 특징은 ‘데이터 중심성’이다. 메시지 중심 미들웨어(예: MQTT)가 데이터의 내용을 이해하지 못하고 단순히 바이트 스트림으로 취급하는 반면, DDS는 데이터의 ‘내용’과 ‘구조’를 이해한다. 이를 통해 DDS는 애플리케이션에게 ‘글로벌 데이터 공간(Global Data Space)’이라는 추상적인 개념을 제공한다. 개발자 입장에서 이 공간은 마치 로컬 메모리처럼 보이며, 특정 데이터 객체의 값을 읽고 쓰는 행위만으로 데이터 공유가 이루어진다. 실제로는 DDS 미들웨어가 이 작업을 가로채 원격 노드에 있는 적절한 데이터 저장소를 업데이트하는 메시지를 보내는 방식으로 동작한다.

이러한 패러다임의 전환은 개발자의 사고방식을 “A 노드에서 B 노드로 메시지를 보내야 한다”에서 “공유 데이터 공간에 있는 ‘온도’ 값을 갱신한다”로 바꾼다. 미들웨어가 ‘어떻게’ 데이터를 전달할지를 전적으로 책임지기 때문에, 개발자는 복잡한 분산 환경의 통신 로직에서 해방된다. 이 추상화 능력 덕분에 DDS는 수백, 수천 개의 노드가 동적으로 참여하고 이탈하는 복잡한 시스템(예: 대규모 로봇 군집, IIoT)의 복잡성을 효과적으로 관리할 수 있다.

표준적인 DDS 아키텍처는 중앙 집중적인 메시지 브로커나 서버가 없는 완전한 P2P(Peer-to-Peer) 구조를 가진다. 각 노드(Participant)는 네트워크상의 다른 모든 노드와 직접 통신한다. 이 브로커리스 아키텍처는 중앙 서버라는 단일 장애점(Single Point of Failure)과 통신 병목 현상을 원천적으로 제거하여 시스템의 신뢰성과 실시간성을 극대화한다.

이러한 P2P 통신과 벤더 간 상호운용성을 보장하는 핵심 기술이 바로 DDSI-RTPS(DDS Interoperability Wire Protocol)이다. RTPS는 DDS의 통신 시맨틱스를 실제 네트워크 패킷으로 변환하는 규칙을 정의한 와이어 프로토콜 표준이다. 덕분에 RTI, eProsima, Eclipse 등 서로 다른 벤더가 만든 DDS 구현체들이 동일한 DDS 도메인 내에서 원활하게 데이터를 교환할 수 있다.

DDS는 별도의 설정 파일이나 중앙 레지스트리 없이도 네트워크에 참여하는 새로운 발행자와 구독자를 런타임에 자동으로 발견하는 ‘동적 발견’ 메커니즘을 제공한다. 새로운 노드가 네트워크에 연결되면, 멀티캐스트 또는 유니캐스트를 통해 자신의 존재와 발행/구독하려는 토픽 정보, 그리고 요구하는 서비스 품질(QoS) 설정을 알린다. 다른 노드들은 이 정보를 수신하여 필요한 통신 경로를 자동으로 설정한다. 이 기능은 시스템의 동적인 변경에 유연하게 대처할 수 있는 진정한 ‘플러그 앤 플레이’를 가능하게 하며, 특히 노드의 참여와 이탈이 잦은 대규모 분산 시스템에 필수적이다.

DDS가 고성능 데이터 분배를 위한 소프트웨어 아키텍처라면, Dust Networks는 물리 세계의 데이터를 수집하는 저전력 장치들의 연결이라는 근본적인 과제에 집중했다. 이들의 비전은 “스마트더스트(Smartdust)”라는 개념에서 출발한다.

스마트더스트는 빛, 온도, 진동, 화학 물질 등을 감지할 수 있는 센서, 로봇, 기타 장치와 같은 수많은 초소형 전자기계 시스템(MEMS, Microelectromechanical systems)으로 구성된 시스템을 의미한다. 1990년대 중반 DARPA의 연구에서 시작된 이 개념은, 먼지처럼 작은 수많은 ‘모트(mote)’들을 특정 공간에 뿌려 무선으로 네트워크를 형성하고 주변 환경을 감지하는 것을 목표로 한다.

2002년에 설립된 Dust Networks는 이러한 스마트더스트 비전을 산업용 무선 센서 네트워크(WSN) 시장에서 성공적으로 상용화한 개척자이다. 이들의 핵심적인 기여는 열악한 RF 환경에서도 ‘초저전력 소모’와 ‘높은 신뢰성의 데이터 전송’이라는 상충되는 두 가지 목표를 동시에 달성한 데 있다.

이러한 혁신을 가능하게 한 핵심 기술은 TSMP(Time Synchronized Mesh Protocol)이다. TSMP는 네트워크의 모든 노드들이 시간을 정밀하게 동기화하여 통신이 필요할 때만 함께 깨어나고, 평소에는 깊은 절전 모드를 유지하는 시분할 채널 호핑(Time-Slotted Channel Hopping) 방식의 메시 네트워크 프로토콜이다. 이를 통해 노드의 배터리 수명을 10년 이상으로 연장하면서도 99.999% 이상의 데이터 전송 신뢰도를 달성할 수 있었다. TSMP의 우수성은 널리 인정받아 IEEE 802.15.4e 무선 통신 표준의 핵심 요소로 채택되었다.

또한 Dust Networks의 아키텍처는 분산 시스템 설계의 중요한 통찰을 제공한다. 데이터 전송 경로는 여러 노드를 거치는 탈중앙화된 메시(mesh) 형태를 취하여 단일 경로 실패에 대한 강건성을 확보했지만, 네트워크 형성, 경로 최적화, 스케줄링과 같은 복잡한 ‘네트워크 관리’ 기능은 상시 전원이 공급되는 게이트웨이에 중앙화시켰다. 이는 배터리로 동작하는 수많은 말단 센서 노드(모트)의 연산 부담과 전력 소모를 최소화하기 위한 매우 실용적인 설계 결정이었다. 데이터 경로의 분산화와 관리 경로의 중앙화라는 이 설계 패턴은, 이후에 설명할 DDS-XRCE가 자원 제약적 환경 문제를 해결하기 위해 채택한 에이전트 기반 아키텍처와 중요한 유사점을 가진다.

Dust Networks의 기술은 이후 SmartMesh IP라는 이름으로 진화하며 IPv6(6LoWPAN을 통해)와 ARM Cortex-M3 같은 고성능 프로세서를 통합하여 산업용 시장을 넘어 더 넓은 IoT 영역으로 확장되었다. 이들의 유산은 오늘날 IIoT 환경이 직면한 근본적인 과제, 즉 수많은 저전력 장치를 어떻게 안정적으로 연결하고 관리할 것인가에 대한 실용적인 해법을 제시했다는 점에서 큰 의미를 가진다.

본 장에서는 S2E Software Systems가 개발한 Rust 기반의 오픈 소스 DDS 구현체인 “Dust DDS”에 대해 기술적으로 심층 분석한다. Dust DDS는 OMG DDS 표준을 현대적인 시스템 프로그래밍 언어인 Rust 환경에서 구현한 것으로, 그 설계 철학과 특징은 고신뢰성 분산 시스템을 구축하려는 개발자들에게 중요한 시사점을 제공한다.

Dust DDS의 아키텍처는 몇 가지 핵심적인 설계 원칙을 기반으로 구축되었다. 이는 단순한 DDS 기능 구현을 넘어, 차세대 미션 크리티컬 시스템이 요구하는 안정성과 개발 생산성을 목표로 한다.

Dust DDS의 가장 중요한 정체성은 Rust 언어로 작성된 ‘네이티브’ OMG DDS 및 DDSI-RTPS 와이어 프로토콜 구현체라는 점이다. 이는 다른 언어로 작성된 라이브러리를 단순히 감싸는(wrapping) 방식이 아니라, 프로토콜의 모든 요소를 Rust로 직접 구현했음을 의미한다. 개발사인 S2E Software Systems는 이 프로젝트를 통해 OMG DDS 표준을 충실히 따르면서도 Rust의 장점을 극대화하고자 했다.

구현의 목표는 ‘최소 DDS 프로파일(minimum DDS profile)’을 준수하는 고품질 구현체를 제공하는 것이다. 이는 모든 복잡한 부가 기능보다는 DDS의 핵심적인 데이터 분산 기능에 집중하여 안정적이고 예측 가능한 동작을 보장하겠다는 의도로 해석된다. 표준 준수는 다른 벤더의 DDS 구현체(예: RTI Connext DDS, eProsima Fast DDS)와의 완전한 상호운용성을 보장하기 위한 필수 요건이다.

Dust DDS가 다른 구현체와 구별되는 가장 큰 특징은 ‘안전한(safe) Rust’만을 사용하여 구현되었다는 점이다. Rust 언어는 컴파일 시점에 메모리 소유권(ownership), 빌림(borrowing), 생명주기(lifetime) 규칙을 강제하여 메모리 누수, 데이터 경쟁(data race)과 같은 고질적인 동시성 및 메모리 관련 버그를 원천적으로 방지한다. Rust 코드에서 메모리 관련 저수준 조작을 위해서는 unsafe 키워드를 명시적으로 사용해야 하는데, Dust DDS는 이 unsafe 코드 블록을 전혀 사용하지 않았다고 선언한다.

이러한 설계 결정은 단순한 기술적 선택을 넘어선 전략적인 포지셔닝이다. 로보틱스, 항공우주, 자동차, 의료기기와 같이 소프트웨어의 사소한 결함이 치명적인 결과로 이어질 수 있는 미션 크리티컬 시스템 분야에서는 소프트웨어의 신뢰성과 안정성이 무엇보다 중요하다. C/C++로 작성된 기존의 많은 시스템들이 메모리 관련 버그로 인해 어려움을 겪어왔다. Dust DDS는 Rust의 컴파일 타임 안전성 보장을 통해 이러한 종류의 버그를 근본적으로 제거함으로써, 코드의 품질과 신뢰성 측면에서 강력한 경쟁 우위를 확보하고자 한다. 이는 Dust DDS를 단순한 DDS 구현체 중 하나가 아닌, 차세대 고신뢰 시스템을 위한 고품질 보증(high-assurance) 옵션으로 자리매김하게 한다.

Dust DDS는 오픈 소스 라이선스 하에 개발 및 배포되고 있어, 누구나 소스 코드를 확인하고, 사용하며, 프로젝트에 기여할 수 있다. 이는 DDS 기술의 접근성을 높이고, 커뮤니티 기반의 검증과 발전을 촉진하는 중요한 요소이다.

Dust DDS는 표준 DDS 기능들을 충실히 구현하면서도 현대적인 개발 환경의 요구사항을 반영한 실용적인 API 설계를 제공한다.

Dust DDS의 가장 주목할 만한 API 설계 특징 중 하나는 동기(synchronous)와 비동기(asynchronous) API를 모두 제공한다는 점이다.

이러한 이중 API 제공 전략은 매우 실용적인 접근법을 보여준다. 이는 기존 DDS 개발자들의 학습 곡선을 낮추고 레거시 시스템과의 통합을 용이하게 하는 동시에, 최신 비동기 Rust 개발 패러다임을 적극적으로 수용하여 새로운 애플리케이션 개발자들의 요구를 충족시키려는 의도다. 이는 표준 준수를 통한 안정성과 현대적 개발 트렌드 수용이라는 두 마리 토끼를 모두 잡으려는 노력의 일환이다.

DDS는 서로 다른 언어로 작성된 시스템 간의 상호운용성을 중요하게 생각하며, 이를 위해 OMG IDL(Interface Definition Language)을 사용하여 데이터 타입을 정의한다. Dust DDS는 이러한 이기종 환경과의 통합을 완벽하게 지원한다.

개발자의 코멘트에 따르면, Dust DDS는 OMG DDS 표준 API를 최대한 가깝게 따르는 것을 목표로 한다. 이는 다른 Rust DDS 구현체인 RustDDS가 Rust 언어에 더 자연스러운(idiomatic) API를 제공하기 위해 의도적으로 표준에서 벗어난 것과는 대조적인 접근 방식이다. Dust DDS의 이러한 선택은 DDS 표준에 익숙한 개발자들이 쉽게 적응할 수 있도록 하고, 여러 벤더의 구현체가 혼재하는 환경에서의 예측 가능성과 상호운용성을 최우선으로 고려한 결과로 볼 수 있다.

이러한 상호운용성을 실제로 검증하기 위해, Dust DDS 프로젝트는 ‘Shapes Demo’를 포함하고 있다. Shapes Demo는 서로 다른 색상과 모양의 도형을 네트워크상에서 주고받는 간단한 애플리케이션으로, DDS 벤더 간의 상호운용성을 테스트하는 사실상의 표준(de facto standard)으로 사용된다.

Rust 생태계 내에는 Dust DDS 외에도 몇 가지 주목할 만한 DDS 구현체가 존재한다. 이들과의 비교를 통해 Dust DDS의 기술적 위치를 더 명확히 파악할 수 있다.

Dust DDS와 RustDDS는 둘 다 네이티브 Rust로 작성된 구현체이지만, 설계 철학에서 뚜렷한 차이를 보인다.

Eclipse Cyclone DDS는 C 언어로 작성된 매우 성숙하고 널리 사용되는 오픈 소스 DDS 구현체다. Rust에서 Cyclone DDS를 사용하기 위해 cyclonedds-sys라는 래퍼(wrapper) 라이브러리가 존재한다.

결론적으로, Rust DDS 생태계는 ‘순수성(Purity) 대 실용성(Pragmatism)’이라는 고전적인 축을 따라 분화하고 있다. Dust DDS는 네이티브, 안전성, 표준 준수라는 ‘순수성’을 대표하며, 코드 품질과 신뢰성이 최우선인 신규 프로젝트에 이상적이다. RustDDS는 Rust 개발자의 편의성을 극대화하는 ‘관용적(idiomatic)’ 접근을 취하며, cyclonedds-sys는 이미 검증된 C 구현체를 활용하여 빠르게 DDS 기능을 제공하는 ‘실용성’을 대표한다. 개발자는 프로젝트의 우선순위(안전성, 개발자 경험, 기존 생태계 활용)에 따라 이들 중 적합한 것을 선택하게 될 것이다.

DDS는 본래 고성능, 고대역폭의 유선 네트워크 환경을 가정하고 설계되었다. 그러나 IIoT와 스마트더스트의 비전은 배터리로 동작하고, 통신 대역폭이 매우 낮으며, 네트워크 연결이 불안정한 수많은 소형 장치들을 다루어야 한다. 이 장에서는 표준 DDS를 이러한 자원 제약적 환경에 적용할 때 발생하는 근본적인 문제점들을 분석하고, 이를 해결하기 위해 OMG가 공식적으로 제시한 해결책인 DDS-XRCE 표준을 심도 있게 탐구한다.

표준 DDS와 DDSI-RTPS 프로토콜을 저전력 무선 센서 네트워크(WSN)와 같은 환경에 직접 적용하는 데에는 몇 가지 근본적인 어려움이 존재한다. 이는 DDS의 설계 가정과 자원 제약적 환경의 물리적 현실 사이의 ‘임피던스 불일치(impedance mismatch)’에서 비롯된다.

이러한 불일치는 DDS의 강력한 기능들이 자원 제약적 환경에서는 오히려 부채가 될 수 있음을 시사한다. 따라서 DDS의 데이터 중심 철학과 풍부한 QoS 기능을 저전력 장치까지 확장하기 위해서는, 이러한 환경에 특화된 새로운 적응 계층(adaptation layer)이 필수적으로 요구된다.

OMG는 이러한 문제점을 해결하기 위해 DDS-XRCE(DDS for eXtremely Resource Constrained Environments)라는 공식 표준을 제정했다. DDS-XRCE는 DDS의 P2P 모델을 과감히 포기하고, 자원 제약적 환경에 더 적합한 클라이언트-서버(Client-Server) 아키텍처를 도입하여 DDS 생태계를 극단적인 엣지(edge)까지 확장한다.

DDS-XRCE의 핵심은 클라이언트-에이전트 모델이다.

이 구조에서 XRCE 클라이언트는 DDS 네트워크에 직접 참여하는 대신, XRCE 에이전트에게 가벼운 명령(operation) 메시지를 보낸다. 예를 들어, “HelloWorld 토픽의 발행자를 생성해줘” 또는 “이 데이터를 발행해줘”와 같은 요청을 보내면, 에이전트가 이 요청을 받아 실제 DDS 세계에서 해당 작업을 대신 수행한다.

이 아키텍처의 본질은 자원 소모가 큰 DDS 관련 작업들을 모두 에이전트에게 오프로딩하는 것이다. 에이전트는 클라이언트를 대신하여 다음과 같은 역할을 수행한다:

  1. DDS 엔티티 관리: DomainParticipant, Topic, Publisher, Subscriber와 같은 무거운 DDS 객체들을 생성하고 관리한다. 클라이언트는 단지 이 객체들을 참조하기 위한 가벼운 ID만 유지한다.
  2. Discovery 및 Liveliness: 다른 DDS 참여자들과의 동적 발견 및 활성 유지 프로토콜을 전담한다. 클라이언트는 이러한 복잡한 P2P 상호작용으로부터 완전히 격리된다.
  3. 데이터 캐싱 및 중계: 에이전트는 클라이언트가 구독한 데이터를 수신하여 저장(캐싱)했다가, 클라이언트가 절전 모드에서 깨어나 데이터를 요청할 때 전달해 줄 수 있다. 이는 배터리 수명을 위해 간헐적으로 통신해야 하는 장치에 매우 중요한 기능이다.

흥미롭게도, DDS-XRCE는 원래의 브로커리스 DDS 아키텍처가 엣지 환경에서 만들어내는 문제들을 해결하기 위해 다시 브로커와 유사한 에이전트를 도입했다. 이는 MQTT의 브로커처럼 클라이언트들의 통신을 중재하는 중앙 지점 역할을 한다. 이는 순수한 P2P 모델을 엣지에서 일부 포기하는 대신, 데이터 중심이라는 DDS의 핵심 철학을 훨씬 더 광범위한 장치들로 확장하기 위한 실용적인 아키텍처적 절충안이다. 결과적으로 전체 시스템은 DDS의 P2P 네트워크와 DDS-XRCE의 클라이언트-서버 네트워크가 결합된 하이브리드 아키텍처 형태를 띠게 된다.

DDS-XRCE 표준은 여러 벤더에 의해 실제 제품으로 구현되어 널리 사용되고 있다.

이러한 XRCE 구현체들은 ROS 2와 같은 프레임워크가 고수준 로봇 공학과 저수준 마이크로컨트롤러 기반 하드웨어 사이의 간극을 메우는 데 결정적인 역할을 한다. ROS 2는 DDS를 기본 미들웨어로 채택하여 고성능 통신을 구현했지만, 로봇 시스템 내부의 모터 제어나 센서 값 읽기를 담당하는 수많은 소형 MCU들은 완전한 DDS 스택을 실행할 수 없다. 이때 DDS-XRCE, 특히 micro-ROS의 기반이 되는 eProsima의 Micro XRCE-DDS가 표준화된 통신 가교를 제공한다. 이를 통해 작은 MCU에서 실행되는 모터 제어기는 마치 네이티브 DDS 참여자인 것처럼 ROS 2 데이터 공간에 자신의 상태를 발행하고, 제어 명령을 구독할 수 있게 되어, 전체 시스템이 하나의 일관된 데이터 중심 아키텍처로 통합될 수 있다.

DDS가 자원 제약적 환경, 특히 본질적으로 패킷 손실이 발생하는 비신뢰성 무선 네트워크에서 다른 프로토콜 대비 갖는 궁극적인 장점은 풍부하고 세밀한 서비스 품질(QoS, Quality of Service) 정책에 있다. QoS는 DDS를 단순한 데이터 전송 프로토콜에서 지능적인 데이터 관리 프레임워크로 격상시키는 핵심 요소다.

개발자는 애플리케이션 코드에서 복잡한 재전송 로직이나 타이머, 상태 관리를 직접 구현하는 대신, DDS가 제공하는 QoS 정책을 선언적으로 설정함으로써 미들웨어에 이러한 복잡한 작업을 위임할 수 있다. 비신뢰성 네트워크와 관련된 주요 QoS 정책은 다음과 같다:

이처럼 QoS 정책은 애플리케이션 개발자를 비신뢰적인 물리 계층의 복잡성으로부터 분리시키는 강력한 추상화 계층을 제공한다. 이는 IIoT와 WSN의 핵심 과제인 ‘비신뢰성 네트워크 위에서 신뢰성 있는 애플리케이션 구축하기’에 대한 DDS의 근본적인 해답이다.

이 장에서는 DDS와 그 구현체들을 더 넓은 사물 인터넷(IoT) 및 산업용 사물 인터넷(IIoT) 생태계의 맥락 안에서 평가한다. 경쟁 프로토콜과의 비교를 통해 DDS의 전략적 위치를 명확히 하고, 주요 벤더와 적용 사례를 통해 그 실용성을 검토한다.

DDS, MQTT, CoAP는 모두 IoT 통신을 위해 사용될 수 있지만, 그 설계 철학과 아키텍처는 근본적으로 다르다. 어떤 프로토콜을 선택하는가는 구축하려는 시스템의 아키텍처와 요구사항에 따라 결정되어야 할 전략적인 문제다.

이러한 비교를 통해 중요한 통찰을 얻을 수 있다. DDS와 MQTT 사이의 선택은 단순한 기술적 선호의 문제가 아니라, 시스템의 ‘지능’이 어디에 위치하는지에 대한 근본적인 아키텍처 결정과 맞닿아 있다. 만약 시스템의 핵심 로직이 클라우드나 중앙 서버에 있고 엣지 장치들이 단순한 데이터 수집기 역할(원격 측정)을 한다면, MQTT의 중앙 집중형 허브-앤-스포크(hub-and-spoke) 모델이 자연스러운 선택이다. 반대로, 시스템이 엣지에서의 자율적인 동작, 노드 간 실시간 P2P 상호작용(예: 차량 대 차량 통신, 로봇 군집 제어), 그리고 중앙 서버의 장애에 대한 강건성을 요구한다면, DDS의 탈중앙화된 데이터 중심 모델이 월등히 우수하다. DDS-XRCE는 이 두 모델의 장점을 결합하는 하이브리드 접근을 가능하게 한다. 즉, MQTT와 유사한 원격 측정 사용 사례를 통해 수집된 데이터를 더 큰 규모의 DDS 기반 자율 시스템에 공급하는 역할을 할 수 있다.

다음 표는 이러한 프로토콜 간의 주요 특징을 요약하여 비교한 것이다.

표 1: 주요 IoT 프로토콜의 아키텍처 및 기능 비교

기능 (Feature) DDS (Data Distribution Service) DDS-XRCE MQTT (Message Queuing Telemetry Transport) CoAP (Constrained Application Protocol)
통신 모델 P2P (Peer-to-Peer), 브로커리스 클라이언트-서버 (에이전트 기반) 클라이언트-서버 (브로커 기반) 클라이언트-서버 (요청-응답)
주요 전송 계층 UDP (기본), TCP, 공유 메모리 UDP, TCP, 시리얼 등 플러그형 TCP UDP
데이터 모델 데이터 중심 (Data-Centric) 데이터 중심 (에이전트 통해) 메시지 중심 (Message-Centric) 리소스 중심 (자원 표현)
데이터 타입 강력한 타입 시스템 (IDL) IDL 기반 (에이전트가 관리) 타입 없음 (Payload는 Opaque) 미디어 타입으로 정의
QoS 세분성 매우 높음 (22개 정책) DDS QoS 정책 상속 낮음 (3단계: 0, 1, 2) 낮음 (Confirmable/Non-confirmable)
보안 모델 DDS-SECURITY 표준 DDS-SECURITY 상속 TLS, 사용자명/비밀번호 DTLS
Discovery 동적 자동 Discovery 클라이언트-에이전트 간 정적 연결 브로커를 통해 Discovery 리소스 디렉토리 통해 Discovery
이상적 사용 사례 실시간 제어, 자율 시스템, 엣지 컴퓨팅 자원 제약적 기기(MCU)의 DDS 연동 원격 측정(Telemetry), 클라우드 연동 저전력 센서의 간단한 상태 보고

DDS는 성숙한 표준으로서, 다양한 상용 및 오픈 소스 구현체로 구성된 활발한 생태계를 보유하고 있다.

DDS 생태계는 크게 두 갈래로 나뉘어 발전하고 있다. 하나는 RTI와 같이 높은 수준의 기술 지원과 안전 인증을 제공하는 고신뢰성 상용 솔루션 시장이고, 다른 하나는 eProsima와 Eclipse가 주도하는 고성능 오픈 소스 프로젝트 시장이다. 특히 ROS 2가 DDS를 채택한 것은 후자의 성장에 결정적인 기폭제가 되었다. 이는 DDS 기술의 사용자 기반을 폭발적으로 증가시켰고, Dust DDS와 같은 새로운 네이티브 Rust 구현체의 등장 등 오픈 소스 커뮤니티의 기술 혁신을 촉진하는 선순환 구조를 만들었다.

DDS의 채택 사례를 살펴보면, 이 기술이 어떤 종류의 문제 해결에 강점을 보이는지 명확히 알 수 있다.

이러한 다양한 적용 사례들에는 공통된 패턴이 존재한다. 바로 ‘여러 소스로부터 들어오는 실시간 데이터를 융합하고, 그 결과를 바탕으로 물리적인 프로세스를 로컬에서 자율적으로 제어해야 하는 시스템’이라는 점이다. 자율주행차, 수술 로봇, 풍력 발전 단지 제어기 등은 모두 중앙 서버와의 통신 지연 없이, 분산된 구성 요소들이 공유된 상태 정보를 바탕으로 실시간으로 협력하여 의사결정을 내려야 한다. 이는 DDS의 데이터 중심 P2P 모델이 가진 본질적인 강점이 가장 잘 발휘되는 영역이며, DDS가 이러한 복잡하고 자율적이며 미션 크리티컬한 도메인에서 지배적인 위치를 차지하는 이유를 설명해 준다.

본 보고서는 “Dust-DDS”라는 복합적인 용어를 해부하고, 관련 기술들의 본질과 상호관계를 심층적으로 분석했다. 마지막 장에서는 지금까지의 분석을 종합하여 시스템 아키텍트와 개발자를 위한 실질적인 의사결정 프레임워크를 제시하고, DDS 기술의 미래 발전 방향을 조망하고자 한다.

현대의 복잡한 IIoT 시스템은 단일 통신 프로토콜만으로 구축되지 않는다. 시스템의 각기 다른 계층과 구성 요소는 서로 다른 요구사항을 가지며, 따라서 아키텍트는 각 상황에 맞는 최적의 도구를 선택하고 조합할 수 있어야 한다. 본 보고서의 분석을 바탕으로 다음과 같은 의사결정 프레임워크를 제안한다.

결론적으로, 현대의 IIoT 아키텍처는 단일 기술이 아닌, 이러한 프로토콜들의 조합으로 구성되는 하이브리드(hybrid) 형태를 띠는 경우가 많다. 예를 들어, 하나의 스마트 팩토리 시스템 내에서 환경 센서들은 DDS-XRCE를 통해 게이트웨이와 통신하고, 공장 바닥의 로봇들은 완전한 DDS를 사용하여 서로 실시간으로 협력하며, 공장의 전체 생산량 요약 데이터는 MQTT를 통해 본사의 클라우드 대시보드로 전송될 수 있다. 성공적인 시스템 아키텍트의 역할은 문제의 각 부분에 어떤 도구를 적용할지 정확히 판단하는 것이다.

DDS를 성공적으로 시스템에 도입하기 위해서는, 단순한 라이브러리 사용법을 넘어 그 근본 철학을 이해하고 접근 방식을 전환해야 한다.

  1. 데이터 모델부터 시작하라: DDS 프로젝트의 첫 단계는 네트워크 코드를 작성하는 것이 아니라, 시스템이 공유할 데이터의 구조를 정의하는 것이다. IDL을 사용하여 토픽과 데이터 타입을 명확히 정의하는 것은 시스템의 인터페이스를 설계하는 과정이며, 이는 전체 아키텍처의 견고함을 결정한다.
  2. QoS를 적극적으로 활용하라: QoS는 부가 기능이 아니라 DDS의 핵심이다. 애플리케이션의 요구사항과 네트워크의 특성에 맞춰 RELIABILITY, DURABILITY, DEADLINE 등의 정책을 신중하게 설정해야 한다. DDS의 진정한 강력함은 미들웨어가 QoS 설정을 통해 통신의 복잡성을 자동으로 관리해주는 데서 나온다.
  3. Discovery 트래픽을 관리하라: 대규모 네트워크나 대역폭이 제한된 무선 네트워크에서는 DDS의 기본 동적 발견 메커니즘이 과도한 트래픽을 유발할 수 있다. 초기 피어 목록(initial peers)을 지정하거나, 일부 구현체가 제공하는 Discovery Server와 같은 기능을 활용하여 불필요한 발견 트래픽을 제어하는 것이 중요하다.
  4. 패러다임 전환을 수용하라: DDS를 성공적으로 활용하기 위해서는 ‘네트워크 프로그래밍’에서 ‘데이터 중심 아키텍처 설계’로 사고방식을 전환해야 한다. 개발 초기에 ‘글로벌 데이터 공간’과 ‘QoS 계약’을 설계하는 데 시간을 투자하면, 이후의 애플리케이션 로직은 훨씬 더 단순하고 명료하며 강건해진다. 이는 미들웨어가 복잡한 통신 메커니즘을 대신 처리해주기 때문이다.

DDS와 그 기반이 되는 데이터 중심 패러다임은 특정 틈새 시장을 넘어 분산 시스템 설계의 주류 아키텍처 패턴으로 자리 잡을 잠재력을 가지고 있다. 몇 가지 주요 동향이 이러한 전망을 뒷받침한다.

분산 시스템이 점점 더 복잡해지고, 자율적이며, 데이터 중심으로 변모함에 따라 데이터 중심 미들웨어의 가치는 더욱 커질 수밖에 없다. 모든 애플리케이션 개발자가 복잡한 데이터 분산, 상태 관리, 장애 허용 로직을 매번 새로 구현하는 것은 비효율적이고 오류 발생 가능성이 높으며 지속 가능하지 않다. 시스템의 규모와 자율성이 증가할수록, DDS와 같이 표준화되고 검증된 기성(off-the-shelf) 데이터 버스가 제공하는 가치 제안은 압도적이 될 것이다. DDS 표준과 그 생태계의 진화는 이러한 산업의 거대한 흐름에 대한 직접적인 응답이며, 앞으로도 분산 시스템 아키텍처의 핵심적인 역할을 계속해서 수행해 나갈 것으로 전망된다.