
백엔드
확장성 있는 TCP 통신 시스템 구축하기
두줄요약
TCP 연동을 위해 마이크로서비스와 대외기관 사이에 TCP Gateway를 두고 Netty 기반 통신 구조를 설계했습니다. 세션 관리, 헬스체크, 패킷 분할 대응으로 안정적인 전문 송수신을 구현했습니다.
문제 상황
- HTTP/JSON 중심 연동 환경에서 TCP 프로토콜 제휴사가 추가되며 별도 통신 구현 필요
- 동기/비동기 세션 관리 차이, 세션 불일치, 패킷 잘림으로 인한 응답 유실 문제 발생
구조와 흐름
- 마이크로서비스와 대외기관 사이에 TCP Gateway를 두고 JSON 요청을 전문으로 변환하는 중개 구조 채택
- 공통부/개별부 기반 전문 모델과 tcp-telegram 모듈 분리로 공통 명세 재사용
- Netty의 Encoder/Decoder, ConnectionManager, ChannelPipeline으로 전문 변환·세션 관리·송수신 처리
선택 이유
- 신규 대외기관 추가 시 연동 비용을 줄이기 위해 공통 TCP 컴포넌트 방식 선택
- 비동기 통신에서는 커넥션 풀과 헬스체크, Redis Pub-Sub로 요청-응답 매핑 분산 처리
- 길이 필드 기반 전문에는 커스텀 ByteToMessageDecoder를 적용해 패킷 분할 수신 대응
성능/운영 포인트
- 대외기관이 허용한 세션 수와 커넥션 풀 크기 일치로 세션 임의 종료 문제 완화
- 헬스체크와 재연결로 비활성 세션 복구
- 통지 전문 저장, 재처리 기능으로 유실 구간 보완