양방향 통신(Bi-directional communication)
현재 우리가 구현한 클라이언트-서버 구조에서는 통신이 클라이언트에서 서버로만 흐르는 일방통행 방식입니다. 클라이언트 입장에서는 서버가 메시지를 잘 받았는지, 요청한 작업을 성공적으로 마쳤는지 알 길이 없죠.
이런 답답한 상황을 해결하려면 서로 데이터를 주고받을 수 있는 양방향 통신(Bi-directional communication) 시스템이 필요합니다.
응답(Ack) 패턴(Ack pattern)
서버가 클라이언트에게 응답을 돌려줄 수 있는 가장 간단하고 명확한 방법은, 클라이언트가 서버에 메시지를 보낼 때 **답장을 받을 수 있는 송신자(Sender)**를 함께 실어 보내는 것입니다.
이를 응답(Ack) 패턴(Ack pattern) 또는 응답 채널 방식이라고 부릅니다. 서버는 요청받은 작업을 처리한 뒤, 메시지에 포함된 이 응답용 채널을 통해 클라이언트에게 결과를 다시 보내주면 됩니다.
이는 **메시지 전달 프리미티브(Message passing primitives)**를 활용하는 Rust 애플리케이션에서 아주 흔하게 볼 수 있는 설계 패턴입니다.
Exercise
The exercise for this section is located in 07_threads/07_ack