728x90
반응형

network 2

[Spring] WebClient 동기 처리 시 필수! TCP & Block 이중 타임아웃으로 안정성 확보하기 (RestClient 못 쓸 때)

최근 운영 중인 서비스에서 등에 식은땀이 흐르는 경험을 했습니다.잘 돌아가던 Quartz 스케줄러 Job이 어느 순간부터 로그 하나 없이 '멈춤' 상태가 되어버린 것이죠.에러 로그도 없고, 스레드는 살아있는데 작업이 진행되지 않는 좀비 상태였습니다.원인을 파헤쳐 보니 범인은 WebClient의 block() 메서드였습니다.외부 API 통신 중 예상치 못한 네트워크 이슈가 발생했는데, 타임아웃 설정이 제대로 되어 있지 않아 스레드가 무한 대기 상태에 빠진 것이었죠."WebClient는 비동기인데 왜 block을 써?"라고 하실 수 있지만, 레거시 시스템이나 비즈니스 로직상 반드시 동기 처리가 필요한 경우가 있잖아요?게다가 Spring 버전 문제로 최신 RestClient를 도입할 수도 없는 상황이었습니다...

Backend/Spring 2026.02.12

2. Network 기초 : DNS, 주소창

웹프로그래밍 공부를 하고, 벌써 수차례 프로젝트를 진행하였다. 그리고 벌써 정보처리 기사 자격증을 딴지 반년이 지나가는데, 정보처리기사 시험만 합격했지, 아직까지도 스스로 웹의 개념이나 네트워크에 대해 개념이 잘 잡혀있지 않았다고 생각한다. 그래서 오늘부터 정보처리기사 공부하면서 보았던 지식들이나 자료들을 조금 더 구체화 하여 나의 지식으로 바꿔나갈 예정이다. 우리는 핸드폰, 컴퓨터 등 다양한 전자기기로 인터넷을 이용한다. 하지만 이게 어떻게 웹 사이트에 들어가게 되는지 궁금증을 가지게 될 때가 있는데,(나만 있을수도 있다.) 내가 주소창에 주소를 적으면 그걸 어떻게 찾아지는거지?? 라는 생각을 하였다. 우리가 주소창에 URL(Uniform Resource Locator)을 적으면 그 주소가 DNS 해석..