-
gRPC 클라이언트 서비스를 생성할 때 채널 상태를 우선 파악해야 할까?소프트웨어 및 프로그래밍/네트워크 프로그래밍 2024. 12. 6. 19:23
gRPC로 클라 프로그램을 작성할 때 든 생각이다. gRPC는 채널을 생성하고 stub에 서비스를 실행하니, 채널이 정상인지 아닌지 먼저 확인해야 되지 않을까? 채널 상태를 파악하고 서비스를 호출해야 조금 더 최적화 된 코드가 아닐까?
위와 같은 생각이 들어 구글링을 하던 중 좋은 글을 발견하였다 >> 글의링크
결론적으로 말하면 채널의 상태를 우선 파악할 필요가 없다.
우리가 사용하는 gRPC의 Channel은 어플리케이션 레벨에서 추상화한 무엇이다. 실질적인 tcp 커넥션을 의미하지 않는다. 그러므로 아무리 Channel이 Ready 상태여도 서비스 호출에 무조건 100% 전달된다는 보장이 없다. 그러므로 우선 RPC 호출을 해봐야 서버의 상태로 실패를 하든지 네트워크로 실패를 하든지 RPC를 호출을 해봐야 알 수 있다는 것이다.
이 글은 RPC 실패를 채널의 모니터링을 통해 해결하지 말고, RPC 호출 실패 후의 후처리가 더욱 중요하다고 강조한다. 멱등성 RPC 설계를 통해 재시도하는 것이 아키텍처 설계 면에서 더욱 견고하다고 말한다.
위 내용과 무관하게 gRPC 채널의 연결 상태를 모니터링하면 문제의 원인을 쉽게 파악할 수 있다. 채널의 상태가 GRPC_CHANNEL_SHUTDOWN이 되면 연결 상태를 회복하지 못하니 gRPC 통신을 할때 config를 잘못 쓴게 없는지 다시 확인할 수 있다.
'소프트웨어 및 프로그래밍 > 네트워크 프로그래밍' 카테고리의 다른 글
epoll server chatting app (0) 2020.03.26