DDS로 설계하는 실시간 분산 데이터 통신
DDS의 데이터 중심 발행-구독 구조, QoS 정책, DCPS·RTPS 아키텍처와 실시간 분산 시스템 활용 방식을 정리한다.
2026-08-14 · 최초 발행 2026-01-12
데이터 상태를 중심으로 연결하는 DDS
DDS(Data Distribution Service)는 OMG(Object Management Group)가 제정한 실시간 분산 시스템용 데이터 중심 통신 미들웨어 표준이다. 발행-구독(Publish-Subscribe) 방식을 사용해 결합도를 낮춘 시스템 사이에서 데이터를 교환하며, QoS(Quality of Service) 정책으로 신뢰성·지연시간·내구성을 세밀하게 다룬다. 항공, 국방, 의료, 자율주행처럼 미션 크리티컬한 환경에서 사용된다.
DDS가 맡는 일은 분산 구성요소의 데이터 공유와 실시간 전달, 그리고 대규모 확장성 지원이다. 발행자와 구독자를 분리하므로 위치에 얽매이지 않고 시스템 참여자를 동적으로 바꿀 수 있다.
Topic을 기준으로 발행자와 구독자를 분리한다
DDS의 기본 단위는 Publisher, Subscriber, Topic, DataWriter/DataReader다. Publisher는 데이터를 발행하고 Subscriber는 필요한 데이터를 구독한다. Topic은 데이터 유형을 정의하며, DataWriter와 DataReader는 실제 I/O를 처리한다.
이 구조는 일대다 통신에 적합하고 송신자와 수신자를 분리한다. 새 참여자를 추가하거나 기존 참여자를 제거할 때도 통신 구조를 느슨하게 유지할 수 있다.
DDS의 DCPS(Data-Centric Publish-Subscribe)는 메시지 전달 자체보다 데이터 상태 공유에 초점을 둔다. 논리적인 Global Data Space를 두어 위치와 무관하게 데이터를 읽고 쓸 수 있으며, 데이터 동기화를 자동으로 처리한다.
QoS는 전달 방식과 데이터의 수명을 정한다
DDS에서는 QoS 정책으로 통신 특성을 선택한다. 신뢰성 정책의 RELIABLE은 손실 없는 전달을 보장하고, BEST_EFFORT는 손실을 허용하는 최선 노력 방식이다.
내구성 정책은 데이터 유지 범위를 정한다.
VOLATILE: 현재 데이터만 유지TRANSIENT_LOCAL: 발행자 수명 동안 유지TRANSIENT: 서비스 수명 동안 유지PERSISTENT: 영구 저장
이 밖에 DEADLINE은 데이터 수신 주기, LATENCY_BUDGET은 허용 지연시간, OWNERSHIP은 데이터 소유권 관리를 다룬다.
Domain 안에서 DCPS와 RTPS가 역할을 나눈다
DCPS 계층에서 Domain은 논리적인 통신 영역이다. 같은 Domain에 속한 참여자만 통신하며 Domain ID로 구분한다. DomainParticipant는 Domain의 통신 참여자로서 Publisher와 Subscriber를 소유하고 리소스를 관리한다.
Topic은 이름과 데이터 타입으로 구성되며 발행과 구독을 매칭하는 기준이 된다. DataWriter와 DataReader는 Topic에 연결되어 데이터를 송수신하고 QoS를 적용한다.
RTPS(Real-Time Publish-Subscribe)는 DDS의 하위 전송 프로토콜이다. UDP 멀티캐스트를 기반으로 실시간 특성에 맞춰졌으며, OMG 표준 프로토콜로 서로 다른 DDS 벤더와 이기종 시스템의 연동을 지원한다.
메시지 큐와 MQTT, ROS2 사이의 DDS 위치
메시지 큐(RabbitMQ, Kafka 등)는 메시지 중심이며 일반적으로 브로커를 필요로 한다. 처리량과 영속성이 강점이다. 반면 DDS는 데이터 중심의 다대다 통신을 제공하고, 실시간 요구사항과 풍부한 QoS 정책에 초점을 둔다.
MQTT는 경량 프로토콜로 브로커 기반 IoT 센서 네트워크, 저전력 환경, 제한된 대역폭에 적합하다. DDS는 브로커 없이 P2P 통신을 수행하며 고성능·저지연과 복잡한 QoS가 필요한 미션 크리티컬 시스템에 사용된다.
ROS2는 로봇 개발 프레임워크이고, DDS는 그 통신 계층을 담당한다. ROS2는 rmw(ROS Middleware) 인터페이스를 통해 여러 DDS 벤더를 선택할 수 있으며 Fast DDS, Cyclone DDS 등을 사용할 수 있다.
실시간성과 신뢰성이 함께 필요한 환경
국방 및 항공 분야에서는 극한의 실시간 요구사항, 높은 신뢰성, 복잡한 분산 시스템이 요구된다. 전투기 항공전자 시스템, 함정 전투관리시스템, 무인기(UAV) 제어, 군사 시뮬레이션이 적용 대상이다.
자율주행과 로보틱스에서는 센서 데이터를 실시간으로 처리하고 저지연 제어 명령을 여러 노드에 전달해야 한다. 자율주행차 센서 융합, ROS2 기반 로봇 시스템, 드론 군집 제어에 DDS를 적용할 수 있다.
의료 환경에서는 환자 모니터링의 실시간 데이터와 높은 신뢰성, 규제 준수가 필요하다. 수술실 통합 시스템, 환자 모니터링, 의료 영상 전송이 여기에 해당한다.
산업 자동화에서는 IIoT(Industrial IoT), 실시간 제어, 대규모 센서 네트워크를 스마트 팩토리에 연결한다. 에너지 분야에서는 스마트 그리드, 발전소 제어 시스템, SCADA 연동에 활용된다.
구현체를 고를 때 보는 조건
RTI Connext DDS는 상용 선두 제품으로 풍부한 도구 지원을 제공하며 국방과 항공 분야에 강점이 있다.
eProsima Fast DDS는 Apache 2.0 기반 오픈소스 구현체다. ROS2 기본 DDS이며 활발한 커뮤니티를 갖고 있다.
Eclipse Cyclone DDS는 Eclipse Public License 기반 오픈소스 구현체로 ROS2를 지원하고 높은 성능을 제공한다.
OpenDDS는 BSD 라이센스의 오픈소스 구현체다. OCI가 개발했으며 CORBA 기반이다.
구현체 선택에서는 기술 지원 필요 여부, 라이센스 요구사항, 개발 자원을 먼저 검토한다. 이후 처리량과 지연시간, 메모리 사용량, CPU 효율성을 함께 비교한다.
IDL로 Topic 데이터 구조를 정의한다
DDS의 IDL(Interface Definition Language)은 데이터 구조를 정의하는 언어 독립적 인터페이스이며 코드 생성의 기반이 된다. 다음은 Temperature Topic의 예시다.
module SensorData {
struct Temperature {
long sensor_id;
float value;
long long timestamp;
};
};
애플리케이션은 DomainParticipant를 초기화하고 Domain ID를 지정한 뒤 데이터 타입과 Topic 이름을 등록한다. 이어 QoS 정책을 설정하고 Publisher 또는 Subscriber, DataWriter 또는 DataReader를 만든다. 데이터 교환은 write()와 read() 호출 및 콜백 리스너를 통해 수행한다.
DDS는 발행-구독 모델과 전역 데이터 공간으로 결합도를 낮춘 데이터 교환을 제공한다. QoS 정책은 신뢰성, 내구성, 지연시간을 제어하고, RTPS는 이기종 DDS 구현체의 상호운용성을 뒷받침한다. 국방, 항공, 자율주행, 의료, 산업 자동화와 ROS2 기반 로보틱스에서 통신 인프라로 쓰인다.