토픽과 서비스의 차이
부탁하고 답을 꼭 들어야 할 때는 어떻게 할까?
화면을 누르면 다음 장으로 넘어갑니다
토픽의 한계
토픽에는 답장이 없습니다
3강의 토픽은 보내고 끝입니다. 거북이가 메시지를 받았는지, 시킨 일을 해냈는지 보낸 쪽은 알 수 없습니다.
"거북이를 한 마리 더 만들어 줘. 그리고 새 이름을 알려 줘" 같은 부탁에는 답이 필요합니다.
서비스
묻고 답을 받는 대화법
서비스(service)는 한쪽이 요청(request)을 보내면 다른 쪽이 일을 하고 응답(response)을 돌려주는 대화법입니다. turtlesim의 /spawn이 그 예입니다.
/my_node는 설명을 위해 붙인 노드 이름입니다.
두 역할
묻는 쪽과 답하는 쪽
요청을 보내는 쪽이 서비스 클라이언트(service client), 요청을 받아 처리하고 응답하는 쪽이 서비스 서버(service server)입니다. 둘 다 노드 안에 만드는 부품입니다.
서버는 하나
응답은 물어본 쪽에게만
한 서비스를 여러 클라이언트가 부를 수 있습니다. 서버는 요청마다 따로 답하고, 응답은 그 요청을 보낸 클라이언트에게만 갑니다.
같은 이름의 서비스 서버는 하나만 띄웁니다. 둘이면 어느 쪽이 답할지 정해져 있지 않습니다.
한눈에 비교
흐름이냐, 한 번의 부탁이냐
토픽은 센서 값이나 속도 명령처럼 계속 흐르는 데이터에, 서비스는 거북이 만들기나 화면 지우기처럼 가끔 한 번 시키고 결과를 받는 일에 씁니다.
고르는 기준은 9편에서 다시 정리합니다.
turtlesim 속
거북이도 서비스를 열어 둡니다
turtlesim 노드는 거북이 만들기(/spawn), 지우기(/kill), 그림 지우기(/clear), 처음으로(/reset), 펜 바꾸기(/turtle1/set_pen) 같은 서비스를 서버로 열어 둡니다.
다음 편