토픽 vs 서비스 판단 기준

카메라 영상을 서비스로 받으면 안 될까?

질문 1

계속 흐르나, 가끔 묻나

센서 값이나 속도 명령처럼 끊임없이 새 값이 나오는 데이터는 토픽에 흘려보냅니다. 거북이 만들기처럼 가끔 한 번 시키는 일은 서비스로 부탁합니다.

질문 2

결과를 꼭 알아야 하나

값 하나쯤 놓쳐도 곧 다음 값이 오는 데이터라면 토픽으로 충분합니다. 일이 성공했는지, 결과가 무엇인지 알아야 다음으로 넘어갈 수 있다면 서비스를 씁니다.

질문 3

누가 몇이나 받나

여러 노드가 같은 데이터를 받아야 한다면 토픽입니다(3강 8편). 보내는 쪽은 누가 듣는지 몰라도 됩니다. 서비스는 묻는 쪽 하나에 답 하나입니다.

질문 4

오래 걸리면 액션입니다

"목표 지점까지 가기"처럼 오래 걸리는 일을 서비스로 시키면 끝날 때까지 아무 소식이 없고, 중간에 멈추라고 할 수도 없습니다. 중간 보고와 취소가 필요한 일은 9강의 액션(action)으로 시킵니다.

흔한 실수

서비스를 빠르게 반복해 부르지 않습니다

위치를 알고 싶다고 1초에 수십 번 서비스를 부르면 매번 요청과 응답이 오갑니다. 계속 바뀌는 값은 토픽으로 받습니다. 실제로 turtlesim은 거북이 위치를 /turtle1/pose 토픽으로 계속 내보냅니다.

골라 보기

이럴 땐 무엇을 쓸까요?

계속 흐르면 토픽, 한 번 묻고 답을 받으면 서비스, 오래 걸리고 중간 보고가 필요하면 액션입니다. 펜 색 바꾸기는 turtlesim의 /turtle1/set_pen 서비스입니다.

다음 강

노드의 설정값은 다시 빌드 없이 바꿀 수 있을까요?

8강 1편다시 빌드하지 않고 바꾸고 싶다 7강 목록