Booil Jung

실시간 분산 시스템을 위한 RTI Connext DDS

분산 시스템의 세계는 끊임없이 진화해 왔습니다. 그 진화의 최전선에는 단순히 메시지를 주고받는 것을 넘어, 멀리 떨어진 애플리케이션들이 마치 하나의 거대한 공유 데이터베이스에 접속하듯 상호작용하는 ‘데이터 중심(Data-Centric)’이라는 철학이 있습니다. 이 보고서의 첫 번째 파트에서는 RTI Connext DDS의 구체적인 기술을 파고들기 전에, 우리를 이 새로운 시대로 이끄는 DDS(Data Distribution Service) 표준의 근본적인 패러다임 전환을 깊이 있게 들여다볼 것입니다. 통신을 ‘메시지 배달’이라는 낡은 관점에서 벗어나, 시스템 전체의 ‘상태를 실시간으로 공유’하는 새로운 개념으로 이해하는 것. 이것이야말로 DDS의 진정한 힘을 깨닫는 가장 중요한 첫걸음입니다.

오늘날 우리가 만드는 분산 시스템은 점점 더 복잡해지고, 예측 불가능하게 변하며, 수많은 부품이 눈 깜짝할 사이에 서로 정보를 주고받아야 하는 엄청난 과제에 직면해 있습니다. 이런 환경에서 데이터의 흐름을 얼마나 효과적으로 관리하느냐가 시스템의 성능, 안정성, 그리고 미래의 확장성까지 결정짓는 핵심 열쇠가 됩니다. 데이터 분산 서비스(DDS)는 바로 이 문제를 풀기 위해 태어난 표준 기술로, 기존 통신 방식들의 답답한 한계를 뛰어넘는 새로운 세상을 제안합니다.

지금까지 분산 시스템을 만드는 데 사용되어 온 전통적인 통신 모델들은 저마다 쓸모가 있었지만, 복잡하고 역동적인 현대 시스템의 까다로운 요구를 만족시키기에는 명백한 한계를 보입니다.

원격 프로시저 호출(RPC)에 기반한 클라이언트-서버 모델은 특정 서비스를 요청하고 응답을 받는 상호작용에 아주 효과적입니다. REST나 gRPC 같은 최신 기술들은 웹 서비스와 마이크로서비스 환경에서 지금도 널리 쓰이고 있죠.1 하지만 이 모델은 본질적으로 ‘일대일 통화’에 최적화되어 있습니다. 시스템이 복잡해져서 수많은 구성 요소가 서로에게 끊임없이 데이터를 쏟아부어야 하는 ‘다자간 화상회의’ 같은 상황이 되면 어떨까요? 모든 연결을 일일이 관리해야 하므로 시스템 전체가 거미줄처럼 얽히는 ‘강한 결합(tight coupling)’이 발생합니다. 이는 시스템의 유연성을 떨어뜨리고, 한 곳의 작은 문제가 시스템 전체를 마비시키는 도미노 현상을 일으킬 수 있는 취약한 구조를 만듭니다.3

사물 인터넷(IoT) 분야의 스타인 MQTT 같은 메시지 중심 미들웨어는 ‘발행-구독’ 모델을 사용해 클라이언트 간의 직접적인 연결을 끊어냅니다. 모든 통신은 중앙의 ‘우체국(브로커)’을 거칩니다. 발행자는 우체국에 편지를 보내고, 구독자는 우체국에서 편지를 받아 가죠.4 이 방식은 클라이언트들을 효과적으로 분리하지만, 모든 통신이 몰리는 우체국 자체가 시스템 전체를 멈추게 할 수 있는 ‘단일 장애점(Single Point of Failure)’이자 성능의 병목이 될 수 있다는 치명적인 약점을 안고 있습니다.5

더 근본적인 한계는 이들이 ‘메시지 중심(Message-Centric)’이라는 점입니다. 우체국은 편지가 오고 갔다는 사실은 알지만, 편지 봉투 안에 무슨 내용이 들었는지는 전혀 관심이 없습니다.4 데이터의 의미를 해석하고, 필요한 정보만 걸러내고, 전체적인 상황을 파악하는 것은 모두 편지를 받은 개별 애플리케이션의 몫입니다. 이는 결국 애플리케이션을 점점 더 복잡하고 무겁게 만드는 주범이 됩니다.

DDS는 이런 문제들을 해결하기 위해 완전히 다른 길을 선택합니다. 바로 ‘데이터버스(Databus)’ 또는 ‘글로벌 데이터 공간(Global Data Space)’이라는 개념입니다.6 이것은 마치 모든 분산 애플리케이션이 자신의 컴퓨터 안에 있는 거대한 공유 데이터베이스를 함께 읽고 쓰는 것처럼 상호작용하게 해주는 가상의 공간입니다.

이 패러다임의 핵심은 중앙 우체국(브로커)이 없는, 완전한 P2P(Peer-to-Peer) 구조에 있습니다. 시스템에 참여하는 모든 애플리케이션(Peer)들은 ‘자동 검색(auto-discovery)’ 기능을 통해 서로를 알아서 찾아내고, 필요한 데이터를 직접 주고받습니다.2 이 구조는 중앙 서버에 대한 의존성을 없애 단일 장애점을 원천적으로 차단하고, 데이터가 최단 경로로 전달되게 하여 지연 시간(latency)을 획기적으로 줄입니다. 이는 최고의 신뢰성과 실시간 성능이 필요한 시스템에 결정적인 장점을 제공합니다.5

DDS 패러다임의 가장 혁신적인 부분은 바로 ‘데이터 중심(Data-Centric)’이라는 철학입니다.7 이는 미들웨어가 단순히 데이터를 전달하는 것을 넘어, 그 데이터의

구조와 의미까지 이해한다는 뜻입니다.6

메시지 중심 시스템에서는 애플리케이션이 네트워크에서 받은 정체불명의 바이트 덩어리(blob of bytes)를 해석하는 힘든 일을 도맡아야 했습니다.10 반면, DDS에서는 애플리케이션이 “나는 ‘차량 위치’ 타입의 데이터를 공유하고 싶어”라고 자신의 ‘의도’만 선언하면 됩니다. 그러면 미들웨어는 데이터의 내용에 기반해 직렬화, 라우팅, 필터링, 상태 관리 같은 복잡한 통신 문제를 알아서 처리해 줍니다.11 예를 들어, 구독자는 “온도가 30도 이상인 센서 데이터만 줘”라고 미들웨어에 요청할 수 있고, 미들웨어는 이 조건을 만족하는 데이터만 골라서 해당 구독자에게 전달합니다.

이러한 데이터 중심 상호작용은 발행-구독(Publish-Subscribe) 모델을 통해 이루어집니다. 발행자(Publisher)는 특정 주제(Topic)의 데이터를 글로벌 데이터 공간에 쓰고, 구독자(Subscriber)는 관심 있는 주제의 데이터를 읽어갑니다. 이 과정에서 둘은 서로의 존재나 위치를 전혀 알 필요 없이, 오직 데이터 자체에만 집중합니다. 이로 인해 시간과 공간에 대한 완전한 분리(decoupling)가 가능해집니다.11

이러한 패러다임의 전환은 단순한 기술의 차이를 넘어, 분산 시스템을 설계하는 철학의 근본적인 변화를 의미합니다. 기존 모델에서는 통신과 관련된 복잡한 코드(오류 처리, 데이터 변환, 상태 동기화 등)가 애플리케이션 곳곳에 흩어져 있었습니다. “일반적인 네트워킹 코드의 80%가 데이터 선택과 오류 처리에 쓰인다”는 분석이 이를 잘 보여줍니다.15 DDS는 이 모든 복잡성을 애플리케이션에서 떼어내, 고도로 최적화되고 표준화된 미들웨어 계층으로 옮겨놓습니다.

결과적으로 개발자는 골치 아픈 저수준 네트워킹이나 복잡한 오류 처리 대신, 시스템의 핵심 비즈니스 로직에만 온전히 집중할 수 있게 됩니다. 이는 개발 시간 단축, 테스트 부담 감소, 그리고 장기적인 유지보수 비용 절감으로 이어집니다. 따라서 시스템 설계자에게 DDS의 채택은 단순히 새로운 라이브러리를 하나 추가하는 것이 아니라, 복잡한 분산 시스템을 더 효율적이고 견고하게 만들기 위한 새로운 설계 패턴을 도입하는 전략적 결정이 되는 것입니다.

DDS의 데이터 중심 철학이라는 큰 그림을 이해했다면, 이제 그 철학을 현실로 만드는 기술적인 뼈대를 살펴볼 차례입니다. DDS는 ‘글로벌 데이터 공간’이라는 추상적인 개념을 구체적인 ‘엔티티(Entity)’라는 부품들의 계층 구조와 표준화된 통신 규칙(프로토콜)을 통해 구현합니다. 이 장에서는 DDS 표준의 핵심 아키텍처를 분해하여, 개발자가 시스템을 만들 때 실제로 사용하게 될 기본 구성 요소들과 그들이 어떻게 상호작용하는지 명확하게 설명합니다.

DDS 표준은 두 가지 수준의 인터페이스를 정의하는데, 이는 애플리케이션의 필요에 따라 다른 수준의 추상화를 제공하기 위함입니다.7

DCPS는 시스템을 구성하는 여러 엔티티들을 정의합니다. 이 엔티티들은 레고 블록처럼 계층적인 관계를 가지며, 각각 명확한 역할과 책임을 가집니다. 이들의 관계를 이해하는 것이 DDS 프로그래밍의 첫걸음입니다.

이러한 계층적 엔티티 모델은 시스템 설계에 강력한 유연성을 줍니다. 예를 들어, 시스템 설계자는 Publisher 수준에서 전반적인 신뢰성 정책(RELIABLE)을 설정하고, 그중에서도 덜 중요한 특정 데이터를 발행하는 DataWriter에 대해서만 개별적으로 정책을 BEST_EFFORT로 재정의할 수 있습니다. 21의 QoS 적용 가능 엔티티 표와 [22]의 설명에서 볼 수 있듯이, 이러한 계층적 QoS 적용 방식은 반복적인 설정을 피하고 시스템의 통신 규칙을 명확하고 효율적으로 관리할 수 있게 해주는 핵심적인 설계 패턴입니다. 이는 단일 설정 파일로 모든 것을 제어하는 방식보다 훨씬 정교하고 확장성이 뛰어납니다.

DDS 표준은 애플리케이션 프로그래밍 인터페이스(API)뿐만 아니라, 네트워크 상에서 데이터가 교환되는 방식, 즉 ‘와이어 프로토콜(wire protocol)’까지 정의합니다. 이 표준 프로토콜이 바로 DDSI-RTPS(DDS Interoperability Real-Time Publish-Subscribe Protocol)입니다.17

RTPS의 가장 중요한 역할은 서로 다른 회사가 만든 DDS 구현체 간의 상호운용성(interoperability)을 보장하는 것입니다.17 즉, RTI Connext DDS로 만든 애플리케이션이 eProsima Fast DDS나 Eclipse Cyclone DDS로 만든 애플리케이션과 별도의 번역기(게이트웨이) 없이 자연스럽게 대화할 수 있는 것은 바로 이 RTPS라는 공용어 덕분입니다.25

RTPS는 다음과 같은 설계 원칙을 기반으로 합니다 26:

결론적으로, DDS의 아키텍처는 애플리케이션 개발을 위한 풍부한 엔티티 모델(DCPS)과 이기종 시스템 간의 원활한 통신을 보장하는 표준 와이어 프로토콜(RTPS)의 환상적인 조합으로 이루어져 있습니다. 이 견고한 아키텍처는 개발자가 복잡한 분산 시스템을 만들 때 골치 아픈 저수준 네트워킹 문제에 얽매이지 않고, 데이터 중심의 설계에만 집중할 수 있도록 하는 강력한 기반을 제공합니다.


DDS 표준이라는 견고한 이론적 토대 위에서, 이제는 업계에서 가장 널리 쓰이는 상용 구현체 중 하나인 RTI Connext DDS를 깊이 있게 살펴볼 차례입니다. 이 파트에서는 RTI(Real-Time Innovations)가 제공하는 구체적인 제품군과 그 생태계를 분석하고, DDS의 가장 강력한 기능인 서비스 품질(QoS)을 실제 시스템 설계에 어떻게 적용하는지 실용적인 관점에서 탐구합니다. 이를 통해 독자는 추상적인 표준을 넘어 실제 프로젝트에서 마주하게 될 RTI Connext DDS의 구체적인 모습과 그 활용법을 이해하게 될 것입니다.

RTI는 단순히 DDS 표준 라이브러리 하나만 제공하는 회사가 아닙니다. 다양한 산업과 애플리케이션의 독특한 요구사항에 맞춰 특화된 제품군과 포괄적인 개발 도구를 포함하는 완성된 생태계를 구축했습니다. 잠재적인 사용자가 자신의 프로젝트에 가장 적합한 솔루션을 선택하기 위해서는 이 제품 생태계에 대한 이해가 필수적입니다.

Real-Time Innovations(RTI)는 미션 크리티컬 및 산업용 분산 시스템을 위한 소프트웨어 프레임워크를 제공하는 세계적인 선도 기업입니다.28 RTI의 주력 제품인 Connext DDS는 국방, 항공우주, 자율주행차, 의료, 에너지 등 최고의 신뢰성과 실시간 성능이 요구되는 까다로운 분야에서 수많은 성공 사례를 통해 그 기술력을 입증해왔습니다.30 RTI는 DDS 표준화 과정에 깊이 관여해왔으며, 시장에서 가장 성숙하고 기능이 풍부한 DDS 구현체를 제공하는 것으로 평가받고 있습니다.

RTI는 다양한 시스템의 고유한 요구사항을 충족시키기 위해 여러 버전의 Connext 제품을 제공합니다. 각 제품은 공통된 DDS 코어 아키텍처를 공유하지만, 특정 사용 사례에 맞춰 기능, 라이선스, 인증 수준이 다릅니다. 마치 같은 자동차 모델이라도 기본형, 스포츠형, 안전 강화형, 오프로드형이 있는 것과 같습니다.

아래 표는 RTI Connext 제품군을 요약하여 각 제품의 목적과 특징을 명확히 보여줍니다. 이는 시스템 설계자가 프로젝트의 요구사항(예: 보안, 안전 인증, 자원 제약)에 따라 어떤 제품을 선택해야 할지 신속하게 판단하는 데 큰 도움을 줍니다.

제품명 주요 대상 산업/애플리케이션 핵심 특징 라이선스/인증 컨텍스트
Connext Professional 일반 산업용 IoT, 분산 제어, 시뮬레이션 DDS 표준의 모든 핵심 기능, 풍부한 개발 도구 제공 32 상용 개발 라이선스
Connext Secure 국방, 항공우주, 의료, 금융, 핵심 기반 시설 OMG DDS Security 표준 준수, 인증, 접근 제어, 암호화 33 보안 기능이 포함된 상용 라이선스
Connext Micro 자원 제약이 있는 임베디드 시스템, 소형 센서/액추에이터 작은 메모리 풋프린트, 낮은 CPU 사용률 28 임베디드용 특화 라이선스
Connext Cert 항공(DO-178C), 자동차(ISO 26262), 의료(IEC 62304) 기능 안전 표준에 대한 인증 증거 자료 제공 28 안전 인증 프로젝트용 특수 라이선스
Connext Drive 자율주행, 소프트웨어 정의 차량(SDV) AUTOSAR, ROS 2와의 통합, 자동차 등급 프레임워크 35 자동차 산업용 특화 라이선스

RTI Connext의 강력함은 다양한 개발 환경과 네트워크 인프라를 지원하는 유연성에서도 나옵니다.

이처럼 RTI Connext는 특정 산업의 요구에 맞춘 전문화된 제품군과 다양한 개발 환경을 지원하는 유연성을 통해, 단순한 통신 라이브러리를 넘어 복잡한 분산 시스템을 구축하기 위한 포괄적인 솔루션 생태계를 제공합니다.

DDS를 다른 모든 통신 미들웨어와 근본적으로 구별 짓는 가장 강력한 기능은 바로 서비스 품질(Quality of Service, QoS)입니다. 여기서 QoS는 단순히 ‘더 빠르다’거나 ‘더 신뢰할 수 있다’는 막연한 의미가 아닙니다. 시스템의 동작 방식 자체를 정의하는 수십 가지의 정교한 정책들의 집합입니다. 시스템 설계자는 이 QoS 정책들을 레고 블록처럼 조합하여, 애플리케이션 코드를 단 한 줄도 바꾸지 않고도 데이터의 전달 방식, 생명 주기, 리소스 사용량 등을 아주 세밀하게 제어할 수 있습니다. 이 장에서는 DDS의 심장이라 할 수 있는 QoS의 개념을 깊이 파고들어, 주요 정책들의 역할과 그들이 시스템 아키텍처에 어떤 영향을 미치는지 분석합니다.

DDS QoS의 기본 동작 원리는 ‘계약(contract)’ 모델에 기반합니다. 통신에 참여하는 두 주체인 DataWriterDataReader는 각각 자신의 QoS 정책을 가지고 있습니다.

두 엔티티 간의 통신은 오직 DataWriter가 제공하는 QoS가 DataReader가 요청하는 QoS를 만족시킬 수 있을 때, 즉 ‘호환(compatible)’될 때만 성립됩니다.18 예를 들어,

DataReader가 “나는 모든 데이터를 빠짐없이 받아야 해”(RELIABLE)라고 요청했는데, DataWriter가 “나는 최선을 다해 보내겠지만 유실될 수도 있어”(BEST_EFFORT)라고만 제공한다면, 둘 사이의 통신은 이루어지지 않습니다. 이 ‘요청 대 제공’ 매칭 메커니즘은 시스템의 통신 정책이 설계자의 의도대로 강제되도록 보장하는, DDS의 견고함을 지탱하는 초석입니다.

모든 DDS 시스템 설계의 출발점이 되는 가장 기본적이고 중요한 QoS 정책들은 다음과 같습니다.

기본 QoS 정책 외에도, DDS는 고가용성, 내결함성, 실시간 제어 등 미션 크리티컬 시스템의 복잡한 요구사항을 만족시키기 위한 강력한 고급 QoS 정책들을 제공합니다.

이러한 고급 QoS 정책들은 독립적으로 동작하는 것이 아니라, 서로 유기적으로 결합하여 강력한 아키텍처 패턴을 형성합니다. 예를 들어, Ownership, Liveliness, Deadline 정책의 조합은 복잡한 고가용성 및 내결함성 시스템을 구축하는 선언적인 프레임워크를 제공합니다. 주 DataWriter는 높은 Ownership_Strength를 가집니다. 만약 이 DataWriterLiveliness를 잃거나(예: 프로세스 다운) Deadline을 위반하면(예: 프로세스 멈춤), 미들웨어는 이를 자동으로 감지하고, 다음으로 높은 strength를 가진 대기 DataWriter에게 데이터 인스턴스의 소유권을 즉시, 그리고 원활하게 이전합니다.44 이러한 정교한 장애 극복 로직은 일반적으로 수천 줄의 복잡한 애플리케이션 코드(하트비트, 상태 감시, 인계 로직 등)를 필요로 하지만, DDS에서는 몇 줄의 QoS 설정만으로 구현됩니다. 이는 미션 크리티컬 시스템에서 DDS가 갖는 독보적인 가치를 보여주는 대표적인 사례입니다.

DDS의 강력한 장점 중 하나는 이러한 복잡한 QoS 정책을 애플리케이션 코드와 분리하여 관리할 수 있다는 점입니다. QoS 정책은 일반적으로 XML 프로파일(profile)을 사용하여 정의됩니다.18 애플리케이션은 시작 시 이 XML 파일을 로드하여

DomainParticipant, DataWriter, DataReader 등을 생성할 때 특정 프로파일 이름을 참조하기만 하면 됩니다.

XML

<dds>
    <qos_library name="MyLibrary">
        <qos_profile name="ReliableTransientProfile">
            <datawriter_qos>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <durability>
                    <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
                </durability>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>10</depth>
                </history>
            </datawriter_qos>
            <datareader_qos>
                </datareader_qos>
        </qos_profile>
    </qos_library>
</dds>

XML QoS 프로파일 예시 42

이러한 접근 방식은 시스템의 통신 동작을 애플리케이션 재컴파일 없이 변경할 수 있게 해주므로, 시스템 통합, 테스트, 현장 튜닝 과정에서 엄청난 유연성과 효율성을 제공합니다.

아래 표는 주요 QoS 정책과 그 아키텍처적 목적을 요약한 것입니다. 시스템 설계자는 이 표를 통해 “이 센서 데이터는 장애가 나도 괜찮도록 만들어야 해”와 같은 시스템 요구사항을 “Ownership을 EXCLUSIVE로 설정하고 Ownership_Strength 값을 다르게 부여하자”는 구체적인 DDS 구성으로 변환할 수 있습니다.

QoS 정책 아키텍처적 목적 주요 매개변수 일반적인 사용 사례
Reliability 데이터 전달 보장 수준 제어 kind (BEST_EFFORT, RELIABLE) RELIABLE: 상태 변경, 명령어 전송BEST_EFFORT: 고주파 센서 데이터
Durability 데이터 영속성 및 상태 관리 kind (VOLATILE, TRANSIENT_LOCAL, 등) TRANSIENT_LOCAL: 늦게 참여하는 애플리케이션이 최신 상태를 받도록 보장
History 데이터 이력 관리 kind (KEEP_LAST, KEEP_ALL), depth KEEP_LAST, depth=1: 최신 값만 중요한 경우KEEP_ALL: 모든 데이터 분석이 필요한 경우
Ownership / Strength 고가용성, 장애 극복, 리더 선출 kind (SHARED, EXCLUSIVE), value (strength) 주/대기(Active/Standby) 센서 또는 제어기 구성
Liveliness 참여자 활성 상태 감지(장애 감지) kind (AUTOMATIC, 등), lease_duration ‘조용한 실패(Silent Failure)’를 감지하여 장애 극복 트리거
Deadline 데이터 신선도(Freshness) 보장 period 제어 루프에서 데이터가 주기적으로 업데이트되는지 감시
Partition 데이터 흐름 격리 및 시스템 분할 name (문자열 시퀀스) 다중 테넌트 시스템, 테스트/운용 모드 분리, 지역별 데이터 분리
Presentation 데이터 업데이트의 원자성 보장 access_scope, coherent_access, ordered_access 여러 토픽의 데이터 업데이트를 하나의 트랜잭션처럼 처리

데이터 중심 아키텍처의 성공은 전적으로 잘 설계된 데이터 모델에 달려있습니다. 데이터 모델은 분산 시스템 내 모든 참여자가 소통하는 공통의 ‘언어’이며, 시스템의 확장성, 유지보수성, 성능에 지대한 영향을 미칩니다. 이 장에서는 DDS 시스템의 근간이 되는 데이터 모델을 어떻게 정의하고, 시간이 지남에 따라 변화하는 요구사항에 맞춰 어떻게 진화시켜 나갈 수 있는지에 대한 핵심 원칙과 패턴을 다룹니다.

DDS 시스템 설계의 가장 중요한 첫 단계는 ‘데이터 우선 사고(data-first thinking)’입니다.10 이는 애플리케이션의 구체적인 로직이나 통신 메커니즘을 고민하기 전에, 시스템 내에서 교환되어야 할 정보, 즉 공유 데이터 모델을 먼저 정의하는 것을 의미합니다. 이 접근 방식이 효과적인 이유는 데이터 모델이 시스템의 본질적인 “물리적 특성(physics of the system)”에 기반하여, 일시적인 애플리케이션의 사용 사례보다 훨씬 안정적이고 변하지 않는 경향이 있기 때문입니다.12 예를 들어, 항공 관제 시스템에서 ‘비행 계획’이라는 데이터 모델은 특정 애플리케이션의 기능보다는 항공기 비행의 본질에 더 가깝습니다.

이렇게 잘 정의된 데이터 모델은 다음과 같은 역할을 합니다.

DDS에서는 특정 프로그래밍 언어에 종속되지 않는 방식으로 데이터 타입을 정의하기 위해 IDL(Interface Definition Language)을 사용합니다.52 IDL은 OMG(Object Management Group)에 의해 표준화된 언어로, 이를 통해

struct(구조체), sequence(동적 배열), 그리고 long, double, string과 같은 기본 타입을 조합하여 복잡한 데이터 구조를 정의할 수 있습니다.54

Code snippet

// 예시: 항공기 위치 정보를 위한 IDL 정의
module Aviation {
    struct Position {
        double latitude;
        double longitude;
        float altitude;
    };

    struct FlightPlan {
        string flight_id; //@key
        string origin;
        string destination;
        sequence<Position> waypoints;
    };
};

개발자는 이렇게 IDL로 데이터 타입을 정의한 후, RTI Connext DDS가 제공하는 코드 생성기(rtiddsgen)를 실행합니다. 이 도구는 IDL 파일을 파싱하여 C++, Java, C# 등 선택한 프로그래밍 언어에 맞는 타입 클래스와 직렬화/역직렬화, 메모리 관리 등을 위한 보조 코드를 자동으로 생성해줍니다. 이를 통해 개발자는 플랫폼 간 데이터 표현 방식의 차이를 신경 쓸 필요 없이 타입-안전(type-safe)한 방식으로 데이터를 다룰 수 있습니다.

DDS 데이터 모델링에서 가장 중요한 아키텍처 결정 중 하나는 키(key)의 사용 여부와 어떤 필드를 키로 지정할 것인가입니다.10 키는 데이터 스트림 내에서 고유한 ‘실세계 객체(real-world object)’를 식별하는 역할을 합니다.

키를 사용하는 것은 미들웨어가 데이터를 인식하고 관리하는 방식을 근본적으로 바꾸며, 다음과 같은 막대한 이점을 제공합니다 7:

이러한 키의 개념은 관계형 데이터베이스의 기본 키(Primary Key)와 매우 유사합니다. [55]에서 지적하듯이, sequence를 사용하여 일대다 관계를 모델링하는 것(예: carpool 구조체 안에 sequence<car>를 포함)은 일반적인 안티패턴입니다. 이는 하나의 car 정보만 변경되어도 전체 carpool 객체를 네트워크로 재전송해야 하므로 매우 비효율적입니다. 올바른 접근 방식은 car를 별도의 키(carId)를 가진 토픽으로 만들고, 여기에 ‘외래 키(foreign key)’처럼 carpoolId 필드를 추가하여 관계를 맺는 것입니다. 이처럼 DDS 데이터 모델링은 데이터베이스 스키마 설계와 유사한 깊이 있는 분석과 설계 원칙을 요구하며, 이는 시스템의 성능과 확장성을 좌우하는 핵심적인 아키텍처 활동입니다.

장기간 운영되는 시스템에서 데이터 모델은 필연적으로 변화하고 진화합니다. DDS-XTypes(Extensible and Dynamic Topic Types)는 이러한 데이터 타입의 진화를 지원하기 위한 OMG 표준입니다.52 XTypes는 IDL에 추가적인 어노테이션을 도입하여,

DataWriterDataReader가 서로 약간 다른 버전의 데이터 타입을 사용하더라도 통신이 가능하도록 허용합니다.58

XTypes는 세 가지 ‘확장성 종류(extensibility kind)’를 정의하며, 각각 유연성과 성능 간의 트레이드오프를 가집니다 57:

또한, @optional 어노테이션을 사용하면 특정 멤버가 데이터에 포함되지 않을 수도 있음을 명시할 수 있어, 더욱 유연한 데이터 모델링이 가능합니다.54 이러한 XTypes 기능 덕분에, 시스템 전체를 동시에 중단하고 업그레이드할 필요 없이, 개별 구성 요소들을 점진적으로 개선하고 배포하는 것이 가능해집니다.


DDS 표준의 기본 원리와 RTI Connext의 제품 생태계를 이해했다면, 이제는 Connext DDS를 가장 까다로운 시스템에 적용할 수 있게 만드는 고급 기능들을 탐구할 시간입니다. 이 파트에서는 단순한 데이터 교환을 넘어, 시스템의 신뢰성, 성능, 안전성을 보장하는 핵심 요소인 보안, 성능 엔지니어링, 그리고 기능 안전에 대해 심도 있게 다룹니다. 이러한 기능들은 Connext DDS가 단순한 통신 미들웨어가 아니라, 미션 크리티컬 시스템을 구축하기 위한 포괄적인 프레임워크임을 증명합니다.

핵심 기반 시설, 국방, 의료 시스템에서 보안은 선택이 아닌 필수입니다. 데이터 유출, 변조, 또는 서비스 거부 공격은 치명적인 결과를 초래할 수 있습니다. Connext DDS는 OMG의 DDS Security 표준을 통해 데이터버스 자체에 내장된 강력하고 세분화된 보안 모델을 제공하여, 이러한 위협으로부터 시스템을 보호합니다.

DDS Security는 데이터 중심 통신 환경의 고유한 특성을 고려하여 설계된 보안 표준입니다.33 이는 전통적인 네트워크 보안 방식(예: VPN, TLS)과는 다른 접근 방식을 취합니다. 모든 통신을 하나의 암호화된 터널에 넣는 대신, DDS Security는 데이터 흐름 자체에 보안 속성을 부여하여 훨씬 더 정교한 제어를 가능하게 합니다. RTI Connext Secure는 이 OMG DDS Security 표준을 완벽하게 준수하는 상용 구현체입니다.33

DDS Security 프레임워크는 시스템을 보호하기 위한 다섯 가지 핵심 서비스를 정의하며, 이는 ‘보안의 다섯 기둥’으로 불립니다. RTI Connext Secure는 이 모든 서비스를 플러그인 형태로 제공합니다.34

  1. 인증 (Authentication): “당신은 누구인가?”에 답하는 과정입니다. 시스템에 참여하려는 애플리케이션(DomainParticipant)이 신뢰할 수 있는 주체인지 확인합니다. 일반적으로 공유된 인증 기관(Certificate Authority, CA)이 서명한 X.509 디지털 인증서 기반의 공개 키 기반 구조(PKI)를 사용하여 각 참여자의 신원을 검증합니다. 인증되지 않은 참여자는 데이터버스에 아예 접근할 수 없습니다.
  2. 접근 제어 (Access Control): “당신은 무엇을 할 수 있는가?”를 결정합니다. 인증된 참여자라 할지라도 모든 작업을 허용하는 것은 아닙니다. 접근 제어는 서명된 ‘권한 파일(permissions file)’을 통해 각 참여자가 어떤 Topic을 발행(publish)하거나 구독(subscribe)할 수 있는지, 어떤 Partition에 참여할 수 있는지를 세밀하게 통제합니다. 이를 통해 최소 권한 원칙을 시스템 전반에 강제할 수 있습니다.
  3. 암호화 (Cryptography - 기밀성 및 무결성):
    • 기밀성 (Confidentiality): 네트워크를 통해 전송되는 데이터를 AES-256과 같은 강력한 알고리즘으로 암호화하여, 인가되지 않은 자가 데이터를 엿듣더라도 그 내용을 알 수 없게 합니다.
    • 무결성 (Integrity): HMAC-SHA256과 같은 메시지 인증 코드(MAC)를 사용하여 데이터가 전송 중에 변조되지 않았음을 보장합니다. 수신자는 데이터가 원본 그대로임을 확신할 수 있습니다.
  4. 데이터 태깅 (Data Tagging): 데이터 스트림에 보안 관련 메타데이터(예: “비밀”, “대외비”와 같은 보안 등급)를 첨부하는 기능입니다. 이 태그 정보는 참여자 검색(discovery) 과정에서 교환되며, 접근 제어 플러그인이 이 정보를 바탕으로 동적인 접근 결정을 내리는 데 사용될 수 있습니다.
  5. 로깅 (Logging): 모든 보안 관련 이벤트(예: 인증 성공/실패, 접근 거부, 암호화 오류 등)를 안전하게 기록하는 기능입니다. 이 로그는 시스템 감사나 보안 사고 발생 시 원인 분석(forensics)을 위한 중요한 자료로 활용됩니다. 로그 자체도 DDS를 통해 안전하게 전송하여 중앙에서 통합 관리할 수 있습니다.

DDS Security 모델은 전통적인 보안 방식에 비해 몇 가지 중요한 아키텍처적 이점을 제공합니다.

결론적으로, RTI Connext Secure는 데이터 중심 아키텍처에 최적화된 포괄적이고 강력한 보안 솔루션을 제공합니다. 이를 통해 개발자는 복잡한 보안 로직을 직접 구현하는 부담에서 벗어나, 선언적인 정책 설정을 통해 시스템의 보안 요구사항을 만족시킬 수 있습니다.

RTI Connext DDS는 극도의 저지연과 고처리량이 요구되는 실시간 시스템을 위해 설계되었습니다. 하지만 최상의 성능을 이끌어내기 위해서는 미들웨어의 동작 방식과 네트워크의 특성을 이해하고, 그에 맞는 적절한 튜닝을 적용하는 ‘성능 엔지니어링’ 과정이 필수적입니다. 이 장에서는 특히 대용량 데이터 전송과 관련된 주요 과제를 해결하고, 시스템 성능을 최적화하기 위한 실질적인 가이드라인을 제시합니다.

분산 시스템에서 비디오 스트림, LIDAR 포인트 클라우드, 고해상도 이미지 등 대용량 데이터를 전송하는 것은 흔한 일입니다. 이때 데이터의 크기가 네트워크의 최대 전송 단위(Maximum Transmission Unit, MTU)를 초과하면 ‘단편화(fragmentation)’가 발생합니다.

DDS 단편화를 활성화하는 방법은 전송 프로토콜의 message_size_max 속성을 네트워크 MTU(일반적으로 이더넷 환경에서 약 1500 bytes)와 유사한 값으로 설정하는 것입니다. 이렇게 하면 DDS는 이 크기를 초과하는 데이터를 자동으로 단편화하여 전송합니다.

DDS에서 DataWriterwrite() 함수를 호출하면 기본적으로는 동기(synchronous) 방식으로 동작합니다. 즉, write() 함수는 데이터가 미들웨어의 내부 큐를 거쳐 네트워크 전송 버퍼로 복사될 때까지 블로킹(blocking)될 수 있습니다. 이는 애플리케이션의 실시간성을 저해하는 요인이 될 수 있습니다.

최적의 성능을 달성하기 위해서는 시스템 전반에 걸친 체계적인 튜닝이 필요합니다. 다음은 65, 65, 65의 내용을 종합한 핵심 튜닝 절차입니다.

  1. 벤치마킹 및 기준 설정:
    • 성능 문제를 논하기 전에, 현재 하드웨어와 네트워크 환경에서의 기준 성능을 측정하는 것이 중요합니다. RTI가 제공하는 rtiperftest 도구는 처리량(throughput)과 지연 시간(latency)을 측정하는 표준화된 방법을 제공합니다.65 이를 통해 “현재 우리 시스템이 기대치에 미치지 못하고 있는가?”에 대한 객관적인 데이터를 확보할 수 있습니다.
  2. 운영체제(OS) 튜닝:
    • 대부분의 범용 운영체제는 고성능 네트워킹에 최적화되어 있지 않습니다. 대용량 데이터를 처리하기 위해서는 OS 커널 파라미터, 특히 UDP 소켓 버퍼 크기를 늘려주는 작업이 거의 항상 필요합니다. Linux에서는 sysctl.conf 파일을, Windows에서는 레지스트리를 수정하여 버퍼 크기를 튜닝할 수 있습니다.67
  3. DDS 전송 및 QoS 튜닝:
    • 네트워크 인터페이스 명시: 시스템에 여러 네트워크 인터페이스(NIC)가 있는 경우, DDS가 의도치 않은 인터페이스를 사용할 수 있습니다. allow_interfacesdeny_interfaces 속성을 사용하여 DDS가 통신에 사용할 NIC를 명시적으로 지정해야 합니다.65
    • 전송 버퍼 튜닝: DDS 전송 계층의 송수신 버퍼 크기를 OS 수준에서 튜닝한 값과 일치시키거나 충분히 크게 설정해야 합니다.
    • QoS 설정 검토: RELIABLE QoS가 불필요한 곳에 사용되고 있지는 않은지, heartbeat_period와 같은 신뢰성 관련 파라미터가 현재 네트워크 상황에 적합한지 검토해야 합니다. 작은 샘플을 고속으로 전송할 때는 batching 기능을 활성화하여 처리량을 높일 수 있습니다.65
  4. 진단 도구 활용:
    • RTI Admin Console & Monitor: 이 도구들은 실행 중인 DDS 시스템의 상태를 시각적으로 보여주는 가장 강력한 진단 도구입니다. 참여자 간의 연결 상태, QoS 불일치, 패킷 유실, ACK/NACK 통계 등을 실시간으로 확인하여 문제의 원인을 신속하게 파악할 수 있습니다.65
    • 로깅 및 로그 파서: DDS 로깅을 활성화하고 RTI Log Parser를 사용하면, 내부 동작에 대한 상세한 정보를 얻고 오류 메시지를 쉽게 분석할 수 있습니다.68

성능 튜닝은 단 한 번의 설정으로 끝나는 과정이 아니라, 벤치마킹, 튜닝, 진단을 반복하며 시스템에 가장 적합한 구성을 찾아가는 지속적인 엔지니어링 활동입니다.

자율주행차, 항공기, 의료 로봇과 같이 인간의 생명과 안전에 직결되는 시스템에서 소프트웨어의 오작동은 재앙적인 결과를 초래할 수 있습니다. 이러한 시스템을 ‘안전 필수(safety-critical)’ 시스템이라 하며, 이들을 개발할 때는 ‘기능 안전(Functional Safety)’이라는 엄격한 공학적 원칙을 따라야 합니다. 이 장에서는 RTI Connext DDS가 어떻게 이러한 엄격한 안전 요구사항을 충족시키고, 특히 자동차 산업의 핵심 표준인 ISO 26262를 지원하는지 살펴봅니다.

기능 안전은 시스템의 전기/전자 부품 오작동으로 인해 발생할 수 있는 불합리한 위험을 방지하는 것을 목표로 합니다. ISO 26262는 자동차 산업을 위해 특별히 제정된 기능 안전 국제 표준으로, 시스템, 하드웨어, 소프트웨어 개발의 전 과정에 걸쳐 따라야 할 요구사항과 프로세스를 정의합니다.69

이 표준은 위험 분석을 통해 ASIL(Automotive Safety Integrity Level, 자동차 안전 무결성 수준)이라는 위험 등급을 A(가장 낮음)부터 D(가장 높음)까지 부여합니다. 시스템의 각 안전 관련 기능은 할당된 ASIL 등급에 따라 정해진 수준의 엄격한 개발 및 검증 절차를 거쳐야 합니다.69

현대의 자동차는 수많은 전자제어장치(ECU)와 소프트웨어로 구성된 복잡한 분산 시스템입니다. 이들 간의 안정적이고 예측 가능한 통신은 기능 안전을 달성하는 데 있어 매우 중요합니다. 따라서 통신을 담당하는 미들웨어 역시 기능 안전 요구사항을 만족시켜야 합니다.

RTI는 이러한 안전 필수 시스템 시장의 요구에 부응하기 위해 Connext DDS Cert라는 특화된 제품을 제공합니다.28 이 제품은 ISO 26262 ASIL D와 같은 최고 수준의 안전 인증을 목표로 하는 시스템에 사용될 수 있도록 설계되었습니다. Connext DDS Cert는 단순히 소프트웨어 라이브러리만 제공하는 것이 아니라, 인증 기관에 제출해야 하는 방대한 양의 설계 문서, 테스트 결과, 분석 보고서 등 인증 증거 자료(certification evidence)를 함께 제공하여 고객의 인증 과정을 크게 단축하고 비용을 절감해줍니다.36

또한, 자동차 소프트웨어 플랫폼의 핵심 표준인 AUTOSAR는 DDS를 통신 미들웨어 중 하나로 채택하면서, DDS 구현체가 ISO 26262를 준수하는 종단간(End-to-End) 데이터 보호 메커니즘을 지원해야 한다고 명시하고 있습니다.72 이는 DDS가 자동차 산업의 기능 안전 생태계에서 핵심적인 역할을 수행하고 있음을 보여줍니다. eProsima의 Safe DDS와 같은 다른 벤더의 제품들도 ISO 26262 ASIL D 준수를 목표로 개발되고 있습니다.73

Connext DDS의 놀라운 점은, 별도의 안전 메커니즘을 추가하는 것이 아니라 표준 DDS QoS 정책들을 조합하는 것만으로도 강력한 안전 패턴을 구현할 수 있다는 것입니다. 이는 DDS의 아키텍처 자체가 내결함성과 예측 가능성을 염두에 두고 설계되었기 때문입니다. [44][44]은 자동차 시스템에서 이러한 패턴이 어떻게 구현되는지 구체적으로 설명합니다.

이처럼 DDS는 단순한 통신 프로토콜을 넘어, 견고하고 고장 방지 기능이 내장된 시스템 아키텍처를 구축하기 위한 강력한 프레임워크입니다. QoS 정책을 통해 복잡한 안전 로직을 선언적으로 구현할 수 있는 능력은, DDS가 왜 자동차, 항공, 국방과 같은 안전 필수 산업에서 신뢰받는 기술로 자리 잡았는지를 명확히 보여줍니다. 아키텍트의 관점에서 이는 직접 안전 로직을 개발하고 인증받는 데 드는 막대한 비용과 위험을 줄여주는 결정적인 이점입니다.


RTI Connext DDS의 기술적 깊이를 이해했다면, 이제는 시야를 넓혀 이 기술이 실제 산업 현장에서 어떻게 사용되고, 다른 기술들과 비교하여 어떤 위치에 있으며, 주요 개발 프레임워크와 어떻게 통합되는지 살펴볼 차례입니다. 이 파트는 아키텍트와 의사결정자가 Connext DDS를 전략적인 관점에서 평가하고, 자신의 프로젝트에 적합한지 판단하는 데 필요한 거시적인 시각을 제공합니다.

Connext DDS는 이론적인 기술이 아니라, 전 세계 수많은 미션 크리티컬 시스템의 심장부에서 활약하고 있는 검증된 기술입니다. 다양한 산업 분야에서의 성공적인 적용 사례는 DDS의 유연성과 강력함을 증명합니다.

현대 자동차는 ‘바퀴 달린 데이터 센터’로 진화하고 있으며, DDS는 이러한 소프트웨어 정의 차량(SDV)의 핵심 신경망 역할을 합니다.

가장 높은 수준의 신뢰성과 보안이 요구되는 항공우주 및 국방 분야는 DDS 기술이 가장 먼저, 그리고 가장 깊숙이 뿌리내린 영역입니다.

스마트 팩토리, 에너지, 로보틱스 분야에서도 DDS는 시스템의 지능화와 자동화를 이끄는 핵심 기술로 활약하고 있습니다.

의료 분야에서 DDS는 환자의 안전을 개선하고 의료 서비스의 효율성을 높이는 데 기여하고 있습니다.

이처럼 RTI Connext DDS는 다양한 산업 분야에서 가장 까다로운 기술적 과제들을 해결하며 그 가치를 입증하고 있습니다.

시스템 아키텍트는 자신이 선택한 기술뿐만 아니라, 그 대안이 될 수 있는 다른 기술들의 장단점을 명확히 이해하고 있어야 합니다. 이를 통해 기술 선택의 타당성을 입증하고, 특정 문제에 가장 적합한 도구를 선택할 수 있습니다. 이 장에서는 DDS를 널리 사용되는 다른 통신 프로토콜들과 비교 분석합니다.

IoT 시스템에서 가장 자주 비교되는 두 프로토콜입니다. 둘 다 발행-구독 모델을 사용하지만, 그 철학과 아키텍처는 근본적으로 다릅니다. 4의 분석을 기반으로 다음과 같이 비교할 수 있습니다.

DDS는 표준이므로 여러 벤더가 구현체를 제공합니다. RTI Connext 외의 주요 벤더는 다음과 같습니다.

RTPS 와이어 프로토콜 표준 덕분에 이들 벤더 간의 기본적인 데이터 교환은 보장됩니다. 하지만 공유 메모리 전송과 같은 벤더 고유의 최적화 기능이나 고급 QoS 정책의 해석 방식, 그리고 개발 도구의 성숙도 등에서는 차이가 있을 수 있습니다.91 RTI Connext는 특히 풍부한 개발 및 분석 도구, 상세한 문서, 전문적인 기술 지원, 그리고 안전 필수 시스템을 위한 인증 지원 측면에서 강점을 가지는 것으로 평가받습니다.89

아래 표는 주요 통신 프로토콜의 특성을 한눈에 비교하여 아키텍트의 기술 선택을 돕습니다. 이 표는 “어떤 기술이 더 좋은가?”가 아니라 “어떤 문제가 주어졌을 때 어떤 기술이 가장 적합한가?”라는 질문에 답하는 데 중점을 둡니다.

프로토콜 아키텍처 데이터 모델 주요 사용 사례 핵심 강점 핵심 약점
DDS P2P, 브로커 없음 데이터 중심, 타입-안전, 풍부한 QoS 실시간 제어, 자율 시스템, 미션 크리티컬 데이터 공유 저지연, 고신뢰성, 확장성, 세밀한 QoS 제어 개념적 복잡성, 경량 기기에는 무거울 수 있음
MQTT 허브-앤-스포크, 브로커 기반 메시지 중심, 경량, 단순 토픽 IoT 원격 측정, 클라우드 데이터 수집 단순함, 저대역폭/불안정 네트워크에 강함 브로커가 단일 장애점/병목, 실시간 제어 부적합
REST 클라이언트-서버 리소스 기반, 무상태(Stateless) 웹 서비스, CRUD 연산, 공개 API 단순성, 범용성, HTTP 기반으로 접근 용이 오버헤드 큼, 지속적인 데이터 스트림에 비효율적
gRPC 클라이언트-서버 (RPC) 서비스/함수 기반 마이크로서비스 간 통신, 고성능 API 호출 고성능, 언어/플랫폼 독립적 API 정의 Pub/Sub 패턴 부재, 다대다 통신에 부적합

RTI Connext DDS는 독립적인 기술로도 강력하지만, 로보틱스와 제어 시스템 설계 분야의 두 거대 프레임워크인 ROS 2와 Simulink와의 긴밀한 통합을 통해 그 생태계를 더욱 확장하고 있습니다. 이러한 통합은 각 프레임워크 사용자들이 DDS의 강력한 실시간 통신 기능을 자신들의 익숙한 개발 환경에서 원활하게 활용할 수 있도록 셔틀 역할을 합니다.

ROS(Robot Operating System)는 로봇 소프트웨어 개발을 위한 사실상의 표준 프레임워크입니다. 그 차세대 버전인 ROS 2는 아키텍처의 근본적인 변화를 꾀했는데, 그중 가장 중요한 것이 바로 통신 미들웨어로 DDS를 채택한 것입니다.80

Simulink는 제어 시스템, 신호 처리, 동적 시스템 시뮬레이션을 위한 모델 기반 설계(Model-Based Design, MBD) 환경으로, 특히 자동차 및 항공우주 산업에서 널리 사용됩니다. MathWorks는 DDS와의 통합을 위해 DDS Blockset을 제공합니다.

RTI는 MathWorks 사용자를 위해 전용 라이선스 프로그램과 기술 지원을 제공하여 99, 모델 기반 설계를 통해 개발된 정교한 제어 시스템이 Connext DDS의 강력한 실시간 데이터버스와 원활하게 통합될 수 있도록 지원합니다. 이는 복잡한 시스템의 개발 생산성과 신뢰성을 크게 향상시키는 강력한 조합입니다.


지금까지 DDS의 이론적 배경, RTI Connext의 기능, 그리고 실제 산업 적용 사례까지 폭넓게 살펴보았습니다. 마지막 파트에서는 이론을 넘어, DDS를 처음 접하는 개발자가 실제로 기술을 사용해보고 일반적인 문제에 부딪혔을 때 해결할 수 있도록 돕는 실용적인 가이드를 제공합니다. 이 장들은 신규 사용자의 학습 곡선을 완만하게 만들고, DDS 개발의 초기 장벽을 낮추는 것을 목표로 합니다.

복잡한 기술을 배울 때 가장 좋은 방법은 직접 사용해보는 것입니다. 이 장에서는 코딩 없이 DDS의 핵심 개념을 시각적으로 체험하는 것부터 간단한 애플리케이션을 직접 빌드하는 과정까지, 새로운 사용자를 위한 단계별 온보딩 경로를 제시합니다.

RTI Shapes Demo는 코딩 한 줄 없이 DDS의 핵심 개념을 직관적으로 이해할 수 있도록 설계된 강력한 그래픽 도구입니다.102 사용자는 여러 개의 Shapes Demo 창을 띄워놓고, 각 창에서 도형(Square, Circle, Triangle)을 발행하거나 구독하는 것만으로 복잡한 분산 시스템의 동작을 시뮬레이션할 수 있습니다.

Shapes Demo는 DDS의 동적이고 데이터 중심적인 특성을 눈으로 직접 확인시켜 줌으로써, 추상적인 개념을 구체적인 경험으로 바꾸어주는 최고의 학습 도구입니다.

개념을 이해했다면, 이제 간단한 코드를 작성해볼 차례입니다. RTI는 GitHub를 통해 단계별 “Getting Started” 예제를 제공하여 신규 개발자가 쉽게 따라 할 수 있도록 돕습니다.104 “초콜릿 공장(Chocolate Factory)”이라는 시나리오를 바탕으로 한 이 예제들은 DDS 애플리케이션 개발의 전형적인 워크플로우를 안내합니다.

  1. 데이터 타입 정의 (IDL): 통신에 사용할 데이터 구조를 IDL 파일에 정의합니다.
  2. 코드 생성: RTI 코드 생성기(rtiddsgen)를 실행하여 IDL 파일로부터 특정 프로그래밍 언어(C++, Java 등)의 소스 코드를 생성합니다.
  3. 애플리케이션 로직 작성: 생성된 코드를 사용하여 DomainParticipant, Publisher, Subscriber, DataWriter, DataReader 등의 DDS 엔티티를 생성하고, 데이터를 write()하거나 read()/take()하는 애플리케이션 로직을 구현합니다.
  4. 컴파일 및 실행: 애플리케이션을 컴파일하고, 발행자(publisher)와 구독자(subscriber)를 각각 실행하여 데이터가 교환되는 것을 확인합니다.

이 과정을 통해 개발자는 DDS API의 기본적인 사용법을 익히고, 자신의 개발 환경을 설정하는 방법을 배울 수 있습니다.

모든 복잡한 기술에는 학습 곡선이 따르며, DDS도 예외는 아닙니다. 특히 분산 시스템의 특성상 문제의 원인이 다양하고 복잡할 수 있습니다. 이 장에서는 신규 사용자들이 가장 흔하게 겪는 문제들을 식별하고, 이를 해결하기 위한 체계적인 접근법과 유용한 도구들을 소개합니다.

DDS를 처음 사용할 때 가장 빈번하게 마주치는 문제는 “발행자는 데이터를 보내고 있는데, 왜 구독자가 아무것도 받지 못하는가?”입니다. 이는 대부분 참여자 간의 ‘검색(Discovery)’ 과정이 실패했기 때문입니다. 109[110]의 내용을 바탕으로 다음과 같은 체크리스트를 통해 문제의 원인을 체계적으로 점검할 수 있습니다.

  1. 방화벽(Firewall): 가장 흔한 원인입니다. DDS는 기본적으로 UDP/멀티캐스트를 사용하여 검색 정보를 교환합니다. PC의 운영체제 방화벽이나 네트워크 장비(라우터, 스위치)가 이 UDP 트래픽, 특히 멀티캐스트 패킷을 차단하고 있는지 확인해야 합니다. DDS가 사용하는 포트(기본적으로 도메인 ID에 따라 계산됨)를 방화벽에서 허용해야 합니다.
  2. 네트워크 구성:
    • 멀티캐스트 지원 여부: 사용 중인 네트워크(특히 Wi-Fi나 복잡한 기업 네트워크)가 멀티캐스트를 지원하지 않을 수 있습니다. 멀티캐스트가 동작하지 않으면, 서로 다른 머신에 있는 참여자들은 서로를 발견할 수 없습니다.
    • 유니캐스트로 전환 (initial_peers): 멀티캐스트를 사용할 수 없는 환경이라면, 유니캐스트를 사용하도록 명시적으로 설정해야 합니다. NDDS_DISCOVERY_PEERS 환경 변수나 XML QoS 파일의 <initial_peers> 태그에 상대방 참여자의 IP 주소를 직접 지정해주면, 멀티캐스트 없이도 검색이 가능합니다.111
  3. DDS 구성 불일치:
    • 도메인 ID (Domain ID): 통신하려는 모든 DomainParticipant가 반드시 동일한 도메인 ID를 사용하고 있는지 확인해야 합니다. ID가 다르면 완전히 다른 가상 네트워크에 있는 것과 같습니다.
    • 토픽 이름 및 타입: 발행자와 구독자가 정확히 동일한 토픽 이름과 호환되는 데이터 타입을 사용하고 있는지 확인해야 합니다. 대소문자나 오타 하나만으로도 매칭은 실패합니다.
    • 파티션 (Partition): 만약 Partition QoS를 사용하고 있다면, 발행자와 구독자가 최소 하나 이상의 공통된 파티션 이름을 가지고 있는지 확인해야 합니다.
  4. QoS 호환성:
    • 앞서 설명한 ‘요청 대 제공’ 모델에 따라, DataWriterDataReader의 QoS 정책이 서로 호환되지 않으면 연결이 성립되지 않습니다. 예를 들어, DataReaderRELIABLE을 요청하는데 DataWriterBEST_EFFORT를 제공하는 경우가 대표적입니다.

문제의 원인을 진단할 때, RTI가 제공하는 강력한 도구들을 활용하면 시간과 노력을 크게 절약할 수 있습니다.

이러한 체계적인 문제 해결 접근법과 강력한 디버깅 도구들은 개발자가 DDS 시스템을 구축하고 운영하면서 마주치는 불가피한 문제들을 효율적으로 해결하고, 시스템의 안정성을 확보하는 데 큰 도움이 될 것입니다.

이 보고서는 RTI Connext DDS를 처음 접하는 기술 전문가를 위해, 그 근간을 이루는 데이터 중심 철학부터 핵심 아키텍처, 고급 기능, 그리고 실제 산업 적용 사례에 이르기까지 포괄적인 분석을 제공했습니다. 분석을 통해 드러난 RTI Connext DDS의 본질은 단순히 또 하나의 메시징 라이브러리가 아니라, 확장 가능하고 신뢰성 높으며 안전한 실시간 분산 시스템을 구축하기 위한 포괄적인 소프트웨어 프레임워크라는 점입니다.

DDS가 제시하는 패러다임의 전환은 명확합니다. 통신의 복잡성을 애플리케이션 개발자의 어깨에서 덜어내어, 고도로 최적화되고 표준화된 미들웨어 계층으로 이전시키는 것입니다. 이는 다음과 같은 전략적 가치를 창출합니다.

물론, RTI Connext DDS를 채택하는 것은 전략적인 아키텍처 결정입니다. 그 강력함을 온전히 활용하기 위해서는 데이터 중심 원칙과 데이터 모델링 모범 사례에 대한 초기 학습 투자가 필요합니다. 그러나 자율 시스템, 지능형 의료기기, 차세대 국방 시스템, 스마트 인프라와 같이 점점 더 복잡해지고 서로 연결되는 현대 시스템의 요구사항을 고려할 때, 이러한 투자는 단순한 비용이 아니라 미래를 위한 현명한 투자입니다.

결론적으로, RTI Connext DDS는 차세대 지능형, 자율형, 미션 크리티컬 시스템을 구축하고자 하는 조직에게, 시스템의 복잡성을 관리하고, 신뢰성을 확보하며, 장기적인 유지보수성과 진화 가능성을 보장하는 가장 성숙하고 강력한 솔루션 중 하나를 제공합니다. 이는 단순한 기술 선택을 넘어, 성공적인 시스템 아키텍처를 위한 전략적 기반을 마련하는 것입니다.

  1. REST vs CRUD: Key concepts and differences - LogicMonitor, accessed July 1, 2025, https://www.logicmonitor.com/blog/rest-vs-crud
  2. What’s the difference between DDS and SOME/IP? - Stack Overflow, accessed July 1, 2025, https://stackoverflow.com/questions/51182471/whats-the-difference-between-dds-and-some-ip
  3. A communications backbone for the autonomous battlespace …, accessed July 1, 2025, https://defencex.ai/wordpress/a-communications-backbone-for-the-autonomous-battlespace/
  4. Navigating IIoT Protocols: Comparing DDS and MQTT, accessed July 1, 2025, https://www.rti.com/blog/comparing-dds-and-mqtt
  5. MQTT and DDS: Machine to Machine Communication in IoT - Real-Time Innovations, accessed July 1, 2025, https://www.rti.com/blog/mqtt-dds-m2m-protocol-internet-of-things/
  6. DDS and MQTT: Basics, Challenges and Integration Benefits EMQ - EMQX, accessed July 1, 2025, https://www.emqx.com/en/blog/navigating-dds-basics-limitations-and-integration-with-mqtt
  7. Architectural Overview and OMG Data-Distribution Service - velog, accessed July 1, 2025, https://velog.io/@protocol5/ROS2OMG-Data-Distribution-Service-Architectural-Overview-and-OMG-Data-Distribution-Service-Architectural-Update
  8. DDS(Data Distribution Service) 이해하기 - Hoon’s Blog - 티스토리, accessed July 1, 2025, https://yhoons.tistory.com/m/117
  9. Connext DDS and the Industrial IoT: The Top 5 Things to Know - RTI, accessed July 1, 2025, https://www.rti.com/blog/connext-dds-and-the-industrial-iot-the-top-5-things-to-know
  10. Data-centric architectural best practices: Using DDS to integrate real …, accessed July 1, 2025, https://militaryembedded.com/comms/communications/data-centric-real-world-distributed-systems
  11. 데이터 분산 서비스 - 위키백과, 우리 모두의 백과사전, accessed July 1, 2025, https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%82%B0%EC%84%9C%EB%B9%84%EC%8A%A4
  12. Data-Centric Programming Best Practices: - RTI, accessed July 1, 2025, https://www.rti.com/hubfs/docs/DDS_Best_Practices_WP.pdf
  13. DDS 보안기술 - 한국전자통신연구원, accessed July 1, 2025, https://ettrends.etri.re.kr/ettrends/131/0905001659/26-5_112-122.pdf
  14. ko.wikipedia.org, accessed July 1, 2025, https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%82%B0%EC%84%9C%EB%B9%84%EC%8A%A4#:~:text=%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8B%A4.-,DDS%20%EB%AA%A8%EB%8D%B8,%EA%B5%AC%EB%8F%85%20%EB%AA%A8%EB%8D%B8%EC%9D%84%20%EA%B5%AC%ED%98%84%ED%96%88%EB%8B%A4.
  15. How DDS simplifies multi - ECU E/E architectures TTTech Auto, accessed July 1, 2025, https://www.tttech-auto.com/knowledge-platform/how-dds-simplifies-multi-ecu-ee-architectures
  16. About the Data Distribution Service Specification Version 1.4 - Object Management Group, accessed July 1, 2025, https://www.omg.org/spec/DDS/1.4/About-DDS
  17. Vortex OpenSplice Core – DCPS 및 DDSI2 - ADLINK Technology, accessed July 1, 2025, https://cdn.adlinktech.com/webupd/en/Upload/data-distribution-service/Vortex_OSPL_Core-Korean-0408.pdf
  18. DDS(Data Distribution Service)란 무엇인가? - Perbiz, accessed July 1, 2025, http://perbiz.co.kr/data/DDS(Data%20Distribution%20Service)%EB%9E%80.pdf
  19. Architecture of DDS When we create a DCPS DDS application, the… Download Scientific Diagram - ResearchGate, accessed July 1, 2025, https://www.researchgate.net/figure/Architecture-of-DDS-When-we-create-a-DCPS-DDS-application-the-following-DDS-entities-are_fig2_267846873
  20. Lab Note - 티스토리, accessed July 1, 2025, https://lab-notes.tistory.com/
  21. RTI® Connext™ DDS-Comprehensive Summary of QoS Policies, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/5.2.0/doc/manuals/connext_dds/RTI_ConnextDDS_CoreLibraries_QoS_Reference_Guide.pdf
  22. Introduction to DDS - OpenDDS 3.28.0, accessed July 1, 2025, https://opendds.readthedocs.io/en/dds-3.28/devguide/introduction_to_dds.html
  23. DDS와 RTPS 개념정리 - Lab Note - 티스토리, accessed July 1, 2025, https://lab-notes.tistory.com/entry/DDS-DDS%EC%99%80-RTPS-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC
  24. Data Distribution Service for Complex Systems DDS Standard RTI, accessed July 1, 2025, https://www.rti.com/products/dds-standard
  25. Introduction to DDS - eProsima, accessed July 1, 2025, https://www.eprosima.com/developer-resources/whitepapers/dds
  26. Real-time Publish-Subscribe (RTPS) [DDS Foundation Wiki], accessed July 1, 2025, https://www.omgwiki.org/ddsf/doku.php?id=ddsf:public:guidebook:06_append:glossary:r:rtps
  27. Real-Time Publish-Subscribe (RTPS) Protocol - NETWORX SECURITY, accessed July 1, 2025, https://www.networxsecurity.org/members-area/glossary/r/rtps.html
  28. RTI Connext DDS - Connectivity Platform for Industrial IoT - Dedicated Systems Australia, accessed July 1, 2025, https://dedicatedsystems.com.au/products/rti-connext-dds/
  29. Software Framework for Physical AI Systems RTI - Real-Time Innovations, accessed July 1, 2025, https://www.rti.com/industries
  30. RTI Connext®: The DDS Software Framework for Better, Faster Defence Systems, accessed July 1, 2025, https://vanguardcanada.com/rti-connext-the-dds-software-framework-for-better-faster-defence-systems/
  31. RTI, DDS and the Industrial Internet of Things - YouTube, accessed July 1, 2025, https://www.youtube.com/watch?v=xAqKCujskxc
  32. RTI Connext DDS Professional, accessed July 1, 2025, http://www.acetronix.co.kr/kor/goods/download.php?no=57
  33. RTI Connext DDS Secure for autonomous systems - Electronic Specifier, accessed July 1, 2025, https://www.electronicspecifier.com/products/design-automation/rti-connext-dds-secure-for-autonomous-systems
  34. RTI Connext DDS Secure - HubSpot, accessed July 1, 2025, https://cdn2.hubspot.net/hubfs/1754418/RTI_Oct2016/PDF/RTI_DDS_Secure.pdf?t=1485482280047
  35. PCB 뉴스 - RTIConnext 6의 매력, accessed July 1, 2025, https://www.ipcb.com/kr/news/2700.html
  36. DDS in Autonomous Car Design - Real-Time Innovations - RTI, accessed July 1, 2025, https://info.rti.com/hubfs/whitepapers/DDS_in_Autonomous_Car_Design.pdf
  37. 소프트웨어 정의 차량용 RTI Connext Drive 기능 개요, accessed July 1, 2025, https://www.rti.com/hubfs/_Collateral/capability-briefs/Korean%20Capability%20Briefs/RTI-capability-brief-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EC%A0%95%EC%9D%98%20%EC%B0%A8%EB%9F%89%EC%9A%A9RTI-Connext-Drive%EA%B8%B0%EB%8A%A5%20%EA%B0%9C%EC%9A%94.pdf
  38. 소프트웨어 정의 차량을 위한 자동차 통신 프레임워크 리더, accessed July 1, 2025, https://www.rti.com/hubfs/_Collateral/Executive-Briefs/RTI-executive-brief-Connectivity-Leader-for-SDV-KR.pdf
  39. 美RTI, 바이두 ‘아폴로’ 자율주행차 생태계 파트너로 - 로봇신문사, accessed July 1, 2025, http://www.irobotnews.com/news/articleView.html?idxno=21748
  40. [myLV.net 집필진 강좌] RTI DDS(Data Distribution Service) Toolkit 소개 - NI Community, accessed July 1, 2025, https://forums.ni.com/t5/Archive-%EA%B0%95%EC%A2%8C%EA%B2%8C%EC%8B%9C%ED%8C%90/myLV-net-%EC%A7%91%ED%95%84%EC%A7%84-%EA%B0%95%EC%A2%8C-RTI-DDS-Data-Distribution-Service-Toolkit-%EC%86%8C%EA%B0%9C/ta-p/3867503
    1. Quality of Service - The Data Distribution Service Tutorial, accessed July 1, 2025, https://download.zettascale.online/www/docs/Vortex/html/ospl/DDSTutorial/qos.html
  41. https://d2vkrkwbbxbylk.cloudfront.net/sites/default/files/rti-examples/rticonnextdds-examples/examples/connext_dds/using_qos_profiles/c/my_custom_qos_profiles.xml, accessed July 1, 2025, https://d2vkrkwbbxbylk.cloudfront.net/sites/default/files/rti-examples/rticonnextdds-examples/examples/connext_dds/using_qos_profiles/c/my_custom_qos_profiles.xml
  42. Advanced Tutorial Using QoS to Solve Real-World Problems - DDS Foundation, accessed July 1, 2025, https://www.dds-foundation.org/sites/default/files/DDS_Advanced_Ttutorial_00-T5_Hunt-revised.pdf
  43. Safety Mechanisms Using the DDS Middleware in Software-Defined …, accessed July 1, 2025, https://www.nxp.com/company/about-nxp/smarter-world-blog/BL-SAFETY-MECHANISMS
  44. 59.18 OWNERSHIP_STRENGTH QosPolicy - RTI Community, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/users_manual/users_manual/OWNERSHIP_STRENGTH_QosPolicy.htm
  45. LIVELINESS QosPolicy - RTI Community, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/users_manual/users_manual/LIVELINESS_QosPolicy.htm
  46. 20.1.1.7.19. LivelinessQosPolicy - 3.2.2 - Fast DDS - eProsima, accessed July 1, 2025, https://fast-dds.docs.eprosima.com/en/latest/fastdds/api_reference/dds_pim/core/policy/livelinessqospolicy.html
  47. ROS QoS - Deadline, Liveliness, and Lifespan - ROS2 Design, accessed July 1, 2025, https://design.ros2.org/articles/qos_deadline_liveliness_lifespan.html
  48. Quality of Service (QoS) policies are sets of requested policies for how - entities - OpenDDS, accessed July 1, 2025, https://opendds.readthedocs.io/en/master/devguide/quality_of_service.html
  49. DEADLINE QosPolicy - RTI Community, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/users_manual/users_manual/DEADLINE_QosPolicy.htm
  50. Shapes Demo - OpenDDS 3.32.0, accessed July 1, 2025, https://opendds.readthedocs.io/en/latest-release/devguide/shapes.html
  51. Data Distribution Service - Wikipedia, accessed July 1, 2025, https://en.wikipedia.org/wiki/Data_Distribution_Service
  52. What’s in the DDS Standard? - DDS Foundation, accessed July 1, 2025, https://www.dds-foundation.org/omg-dds-standard/
    1. Defining a data type via IDL - 3.2.2 - Fast DDS - eProsima, accessed July 1, 2025, https://fast-dds.docs.eprosima.com/en/v3.2.2/fastddsgen/dataTypes/dataTypes.html
  53. data distribution service - How to model in idl for DDS - Stack Overflow, accessed July 1, 2025, https://stackoverflow.com/questions/15337914/how-to-model-in-idl-for-dds
  54. Introducing Xtypes for OpenDDS - YouTube, accessed July 1, 2025, https://m.youtube.com/watch?v=9kNAmtjloH4
  55. CoreDX DDS Dynamic and Extensible Topic Types (X-Types) - Twin Oaks Computing, Inc, accessed July 1, 2025, https://www.twinoakscomputing.com/coredx/coredx_xtypes
  56. RTI Connext Core Libraries Extensible Types Guide, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/extensible_types_guide/RTI_ConnextDDS_CoreLibraries_ExtensibleTypes_Guide.pdf
  57. What XTypes can do for you - Eclipse Cyclone DDS - FAQ, accessed July 1, 2025, https://cyclonedds.io/content/blog/xtypes-features.html
  58. Chapter 38 Data Fragmentation - RTI Community, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/users_manual/users_manual/LargeData_Fragmentation.htm
  59. What do I need to send Large Data successfully? Data Distribution Service (DDS) Community RTI Connext Users, accessed July 1, 2025, https://community.rti.com/kb/what-do-i-need-send-large-data-successfully
  60. PUBLISH_MODE QosPolicy (DDS Extension) - RTI Community, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/users_manual/users_manual/PUBLISH_MODE_QosPolicy__DDS_Extension_.htm
  61. RTI Connext .NET API (legacy): DDS::AsynchronousPublisherQosPolicy Class Reference, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/6.1.2/doc/api/connext_dds/api_dotnet/classDDS_1_1AsynchronousPublisherQosPolicy.html
  62. async_publisher.c, accessed July 1, 2025, https://d2vkrkwbbxbylk.cloudfront.net/sites/default/files/rti-examples/rticonnextdds-examples/examples/connext_dds/asynchronous_publication/c/async_publisher.c
  63. Three Simple Steps to Achieving Peak DDS Performance RTI, accessed July 1, 2025, https://www.rti.com/blog/three-simple-steps-to-achieving-peak-dds-performance/
  64. rticommunity/rtiperftest: RTI Perftest is a command-line application that measures the Latency and Throughput of very configurable scenarios that use RTI Connext DDS middleware to send messages. - GitHub, accessed July 1, 2025, https://github.com/rticommunity/rtiperftest
  65. Tune Your OS for Performance Data Distribution Service (DDS) Community RTI Connext Users, accessed July 1, 2025, https://community.rti.com/best-practices/tune-your-os-performance
  66. Useful tools to debug DDS issues Data Distribution Service (DDS) Community RTI Connext Users, accessed July 1, 2025, https://community.rti.com/howto/useful-tools-debug-dds-issues
  67. ISO 26262 – Functional Safety for Automotive TÜV SÜD - TUV Sud, accessed July 1, 2025, https://www.tuvsud.com/en-us/services/functional-safety/iso-26262-automotive
  68. ISO 26262 Compliance Using Approved Software Components for Road Vehicles - Real-Time Innovations, accessed July 1, 2025, https://info.rti.com/hubfs/whitepapers/ISO_26262_for_Road_Vehicles.pdf
  69. Functional safety for road vehicles - ISO 26262 - DNV, accessed July 1, 2025, https://www.dnv.us/services/functional-safety-for-road-vehicles-iso-26262-82719/
  70. Requirements on Data Distribution Service … - AUTOSAR.org, accessed July 1, 2025, https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_RS_DataDistributionService.pdf
  71. Safe DDS - eProsima, accessed July 1, 2025, https://safe-dds.docs.eprosima.com/
  72. 01/ 로보택시 시장의 변곡점 - 유진투자증권, accessed July 1, 2025, https://www.eugenefn.com/common/files/amail/20240827_B2510_leejaeil_1111.pdf
  73. Streamlining Zonal Architecture with DDS and TSN - RTI, accessed July 1, 2025, https://www.rti.com/blog/streamlining-zonal-architecture-with-dds-and-tsn
  74. DDS and TSN: Converging Two Communications Standards - Real-Time Innovations, accessed July 1, 2025, https://www.rti.com/dds-and-tsn
  75. Future Airborne Capability Environment® (FACE) www.opengroup.org, accessed July 1, 2025, https://www.opengroup.org/face
  76. Use Cases - Connext Devs - RTI Community - Real-Time Innovations, accessed July 1, 2025, https://community.rti.com/static/documentation/developers/use-cases/index.html
  77. Customer Case Study: RTI - InfluxData, accessed July 1, 2025, https://get.influxdata.com/rs/972-GDU-533/images/Customer_Case_Study_RTI.pdf
  78. ROS 2: What is DDS Data Distribution Service (DDS) Community RTI Connext Users, accessed July 1, 2025, https://community.rti.com/page/ros-2-what-dds
  79. Robot Operating System 2 (ROS 2) Architecture by Huseyin Kutluca - Medium, accessed July 1, 2025, https://medium.com/software-architecture-foundations/robot-operating-system-2-ros-2-architecture-731ef1867776
  80. Webinar: Digital Health Approach by FDA - YouTube, accessed July 1, 2025, https://www.youtube.com/watch?v=7NEJYtm76j4
  81. Comparing the Performance of Zenoh, MQTT, Kafka, and DDS, accessed July 1, 2025, https://zenoh.io/blog/2023-03-21-zenoh-vs-mqtt-kafka-dds/
  82. How Does DDS Compare to other IoT Technologies? - DDS Foundation, accessed July 1, 2025, https://www.dds-foundation.org/features-benefits/
  83. REST vs RESTful API: Key Differences According to a Developer - Hevo Data, accessed July 1, 2025, https://hevodata.com/learn/rest-vs-restful-apis/
    1. REST API - RTI Web Integration Service 7.5.0 documentation, accessed July 1, 2025, https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/services/web_integration_service/using_rest_api.html
  84. Fast DDS TSC RMW report 2021 - GitHub Pages, accessed July 1, 2025, https://osrf.github.io/TSC-RMW-Reports/humble/eProsima-response.html
  85. eProsima/Fast-DDS: The most complete DDS - Proven: Plenty of success cases. Looking for commercial support? Contact info@eprosima.com - GitHub, accessed July 1, 2025, https://github.com/eProsima/Fast-DDS
  86. c# - DDS - Which one is recommended - OpenSplice or CoreDX? - Stack Overflow, accessed July 1, 2025, https://stackoverflow.com/questions/38220008/dds-which-one-is-recommended-opensplice-or-coredx
  87. A Security Analysis of the Data Distribution Service (DDS) Protocol Trend Micro, accessed July 1, 2025, https://documents.trendmicro.com/assets/white_papers/wp-a-security-analysis-of-the-data-distribution-service-dds-protocol.pdf
  88. Compilibility problems of eProsima FastDDS and RTI Context DDS, accessed July 1, 2025, https://community.rti.com/forum-topic/compilibility-problems-eprosima-fastdds-and-rti-context-dds
  89. Is OpenSplice DDS compatibile with DDS from other vendors?, accessed July 1, 2025, https://kbase.zettascale.tech/article/vortex-opensplice-compatibility/
  90. ROS 2 middleware interface - ROS2 Design, accessed July 1, 2025, https://design.ros2.org/articles/ros_middleware_interface.html
  91. Different ROS 2 middleware vendors, accessed July 1, 2025, https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Different-Middleware-Vendors.html
  92. RTI Connext DDS - ROS 2 Documentation: Humble documentation, accessed July 1, 2025, https://docs.ros.org/en/humble/Installation/RMW-Implementations/DDS-Implementations/Working-with-RTI-Connext-DDS.html
  93. About different ROS 2 DDS/RTPS vendors, accessed July 1, 2025, https://docs.ros.org/en/foxy/Concepts/About-Different-Middleware-Vendors.html
  94. Get Started with DDS Blockset - MathWorks, accessed July 1, 2025, https://www.mathworks.com/help/dds/get-started-with-dds-blockset.html
  95. How to Use DDS Middleware with Simulink - MathWorks, accessed July 1, 2025, https://se.mathworks.com/videos/how-to-use-dds-middleware-with-simulink-1643693217203.html
  96. Download RTI Connext for MathWorks Users - Real-Time Innovations, accessed July 1, 2025, https://www.rti.com/third-party-integrations/connext-for-mathworks-users
  97. DDS Blockset Shapes Demo - MATLAB & Simulink - MathWorks, accessed July 1, 2025, https://www.mathworks.com/help/dds/ug/dds-blockset-shapes-demo.html
  98. DDS Blockset with RTI Connext Using Shapes Demo - MATLAB & Simulink - MathWorks, accessed July 1, 2025, https://www.mathworks.com/videos/dds-blockset-with-rti-connext-using-shapes-demo-1623839508696.html
  99. Learn About Basic DDS Concepts - Interactive Shapes Demo RTI - Real-Time Innovations, accessed July 1, 2025, https://www.rti.com/free-trial/shapes-demo
  100. RTI Shapes Demo: User’s Manual PDF Network Architecture System Software - Scribd, accessed July 1, 2025, https://www.scribd.com/document/638972276/Untitled
  101. Hands-on examples for getting started with RTI Connext DDS - GitHub, accessed July 1, 2025, https://github.com/rticommunity/rticonnextdds-getting-started
  102. rticonnextdds-gateway/LICENSE.md at master - GitHub, accessed July 1, 2025, https://github.com/rticommunity/rticonnextdds-gateway/blob/master/LICENSE.md
  103. RTI DDS Connext® for UEI Users - Aerospace DAQ, Test, HIL - United Electronic Industries, accessed July 1, 2025, https://www.ueidaq.com/products/rti-dds-connext-for-uei-users
  104. RTI Announces Free Community Access to World-Leading DDS Implementation, accessed July 1, 2025, https://www.defenceiq.com/defence-technology/press-releases/rti-announces-free-community-access-to-world-leadi
  105. Forums Data Distribution Service (DDS) Community RTI Connext Users, accessed July 1, 2025, https://community.rti.com/forum
  106. 4 reasons, why DDS communication is not working - YouTube, accessed July 1, 2025, https://www.youtube.com/watch?v=r_IEn1HbHX0
  107. Typical Reasons for Connext DDS Discovery Failing and Suggested Solutions, accessed July 1, 2025, https://community.rti.com/howto/typical-reasons-connext-dds-discovery-failing-and-suggested-solutions

  108. DDS on myRIO Stops Working After Reset - NI Community - National Instruments, accessed July 1, 2025, https://forums.ni.com/t5/RTI-DDS-Toolkit-for-LabVIEW/DDS-on-myRIO-Stops-Working-After-Reset/td-p/3661345