1261.21 요청-응답과 발행-구독의 적용 사례 비교
1. 두 패턴의 근본적 차이
요청-응답(request-response) 패턴과 발행-구독(publish-subscribe) 패턴은 상호 보완적인 통신 모형으로, 각각 상이한 데이터 교환 요구를 충족한다. 요청-응답 패턴은 클라이언트 주도(client-initiated)의 동기적 상호작용을 제공하며, 발행-구독 패턴은 데이터 생산자 주도(producer-driven)의 비동기적 데이터 분배를 제공한다. 이 근본적 차이는 각 패턴이 적합한 적용 사례를 명확히 구분짓는 기준이 된다.
두 패턴의 선택은 데이터 흐름의 방향성, 시간적 결합의 요구 수준, 그리고 통신 참여자 간의 관계(일대일 또는 일대다)에 의해 결정된다.
2. 적용 사례의 비교
2.1 센서 데이터 분배
센서 데이터의 분배는 발행-구독 패턴이 적합한 대표적 사례이다. IMU, LiDAR, 카메라 등의 센서 드라이버는 일정 주기로 데이터를 생산하며, 이 데이터는 상태 추정기, 인지 모듈, 기록 장치, 시각화 도구 등 복수의 소비자가 독립적으로 활용한다.
발행-구독 패턴이 적합한 이유는 다음과 같다. 첫째, 센서 데이터는 발행자에서 복수의 구독자로 향하는 일대다(one-to-many) 흐름을 형성한다. 둘째, 발행자는 구독자의 존재 여부와 관계없이 데이터를 생산하여야 한다. 셋째, 데이터의 흐름이 연속적이며 주기적이다.
요청-응답 패턴의 부적합 사유는 다음과 같다. 복수의 소비자가 각각 개별적으로 센서 드라이버에 요청을 전송하여야 하므로 통신 오버헤드가 가중된다. 또한, 센서 데이터의 발행 주기와 소비자의 요청 주기 사이의 불일치가 불가피하다.
2.2 파라미터 조회 및 설정
로봇의 운용 파라미터(PID 제어 이득, 센서 교정 값, 속도 한계 등)의 동적 조회와 변경은 요청-응답 패턴이 적합한 사례이다.
요청-응답 패턴이 적합한 이유는 다음과 같다. 첫째, 파라미터의 조회 또는 변경은 클라이언트에 의해 명시적으로 개시되는 요청이다. 둘째, 조회의 경우 현재 값의 즉시 반환이 필요하며, 설정의 경우 변경의 성공 또는 실패에 대한 확인이 필요하다. 셋째, 이러한 연산은 빈도가 낮고 산발적으로 발생한다.
발행-구독 패턴의 부적합 사유는 다음과 같다. 파라미터 변경에 대한 성공·실패의 확인 응답을 제공하는 메커니즘이 부재하다. 또한, 모든 파라미터를 주기적으로 발행하는 것은 자원의 낭비이다.
2.3 제어 명령의 전달
로봇의 속도 명령(/cmd_vel)과 같은 연속적 제어 입력의 전달은 발행-구독 패턴이 적합하다.
발행-구독 패턴이 적합한 이유는 다음과 같다. 첫째, 제어 명령은 고정 주기로 연속적으로 갱신되어야 한다. 둘째, 행동 제어기에서 모터 드라이버로의 단방향 데이터 흐름이다. 셋째, 최신 명령만이 유의미하며, 과거 명령의 보존이 불필요하다.
2.4 좌표계 변환 서비스
특정 좌표계에서 다른 좌표계로의 변환 연산은 요청-응답 패턴이 적합한 사례이다.
요청-응답 패턴이 적합한 이유는 다음과 같다. 변환 요청은 특정 시점에 특정 좌표값에 대하여 발생하며, 즉시 변환 결과를 반환하여야 한다. 이는 일대일의 동기적 상호작용이다.
2.5 행동 상태의 발행
현재 실행 중인 행동의 상태(대기, 실행 중, 완료, 실패 등)를 관심 있는 모듈에 통지하는 것은 발행-구독 패턴이 적합하다.
발행-구독 패턴이 적합한 이유는 다음과 같다. 행동 상태는 임무 계획기, 사용자 인터페이스, 로깅 시스템 등 복수의 소비자에게 동시에 전달되어야 한다. 또한, 상태 변화는 행동 관리기에 의해 자발적으로 발행되며, 외부 요청에 의해 촉발되지 않는다.
3. 적용 사례 비교표
| 적용 사례 | 적합한 패턴 | 주요 근거 |
|---|---|---|
| IMU/LiDAR 데이터 스트리밍 | 발행-구독 | 연속 데이터, 일대다 |
| 카메라 영상 전달 | 발행-구독 | 대용량, 주기적, 일대다 |
속도 명령 전달 (/cmd_vel) | 발행-구독 | 연속, 단방향, 최신값 중심 |
| 행동 상태 통지 | 발행-구독 | 일대다, 이벤트 구동 |
| 주행 계측 (Odometry) 전달 | 발행-구독 | 연속, 주기적 |
| 파라미터 조회/설정 | 요청-응답 | 산발적, 확인 필요 |
| 좌표 변환 요청 | 요청-응답 | 즉시 결과, 일대일 |
| 센서 교정 명령 | 요청-응답 | 비빈번, 성공 확인 |
| 지도 데이터 요청 | 요청-응답 | 일회성, 대용량 결과 |
| 시스템 진단 정보 질의 | 요청-응답 | 필요 시 질의, 확인 |
4. 두 패턴의 조합 활용
실제 로봇 행동 제어 시스템에서는 요청-응답 패턴과 발행-구독 패턴이 독립적으로 사용되기보다는 복합적으로 조합되어 활용된다. 이러한 조합의 대표적 사례는 다음과 같다.
센서 설정 변경 후 데이터 수신: 서비스를 통해 센서의 운용 모드를 변경한 후, 토픽을 통해 변경된 설정에 따른 센서 데이터를 수신한다.
행동 개시 요청과 상태 모니터링: 서비스를 통해 특정 행동의 개시를 요청하고, 토픽을 통해 행동의 실행 상태를 지속적으로 모니터링한다.
파라미터 변경 후 제어 명령 갱신: 서비스를 통해 제어 이득을 변경하고, 이후의 토픽 기반 제어 명령에 변경된 이득이 반영됨을 확인한다.
5. 양 패턴의 한계와 액션 통신의 필요성
요청-응답 패턴과 발행-구독 패턴의 조합만으로는 장시간 실행 행동에 대한 완전한 통신 지원이 어렵다. 구체적으로 다음의 요구를 단일 통합 메커니즘으로 충족할 수 없다.
- 행동 목표의 전달과 수락 확인
- 실행 중 진행 상황의 주기적 피드백
- 행동의 외부 취소 요청 처리
- 행동 완료 시 최종 결과의 구조화된 반환
이러한 복합적 요구를 충족하기 위하여 목표-피드백-결과(goal-feedback-result) 구조를 갖는 액션(Action) 통신 패러다임이 설계되었다. 액션 통신은 내부적으로 요청-응답과 발행-구독의 결합으로 구현되며, 장시간 실행 행동에 최적화된 상위 수준의 통신 추상화를 제공한다.
요청-응답과 발행-구독 패턴의 적용 사례에 대한 비교 분석은 각 통신 패러다임의 적합한 사용 범위를 한정하고, 이를 초과하는 요구에 대한 대안적 패러다임의 필요성을 논증하는 기반이 된다.