토픽과 서비스의 차이

부탁하고 답을 꼭 들어야 할 때는 어떻게 할까?

화면을 누르면 다음 장으로 넘어갑니다

토픽의 한계

토픽에는 답장이 없습니다

3강의 토픽은 보내고 끝입니다. 거북이가 메시지를 받았는지, 시킨 일을 해냈는지 보낸 쪽은 알 수 없습니다.

"거북이를 한 마리 더 만들어 줘. 그리고 새 이름을 알려 줘" 같은 부탁에는 답이 필요합니다.

서비스

묻고 답을 받는 대화법

서비스(service)는 한쪽이 요청(request)을 보내면 다른 쪽이 일을 하고 응답(response)을 돌려주는 대화법입니다. turtlesim의 /spawn이 그 예입니다.

/my_node는 설명을 위해 붙인 노드 이름입니다.

두 역할

묻는 쪽과 답하는 쪽

요청을 보내는 쪽이 서비스 클라이언트(service client), 요청을 받아 처리하고 응답하는 쪽이 서비스 서버(service server)입니다. 둘 다 노드 안에 만드는 부품입니다.

서버는 하나

응답은 물어본 쪽에게만

한 서비스를 여러 클라이언트가 부를 수 있습니다. 서버는 요청마다 따로 답하고, 응답은 그 요청을 보낸 클라이언트에게만 갑니다.

같은 이름의 서비스 서버는 하나만 띄웁니다. 둘이면 어느 쪽이 답할지 정해져 있지 않습니다.

한눈에 비교

흐름이냐, 한 번의 부탁이냐

토픽은 센서 값이나 속도 명령처럼 계속 흐르는 데이터에, 서비스는 거북이 만들기나 화면 지우기처럼 가끔 한 번 시키고 결과를 받는 일에 씁니다.

고르는 기준은 9편에서 다시 정리합니다.

turtlesim 속

거북이도 서비스를 열어 둡니다

turtlesim 노드는 거북이 만들기(/spawn), 지우기(/kill), 그림 지우기(/clear), 처음으로(/reset), 펜 바꾸기(/turtle1/set_pen) 같은 서비스를 서버로 열어 둡니다.

다음 편

지금 어떤 서비스가 열려 있을까요?

2편서비스 목록 보기 7강 목록