경력기술서 · 2022.10 – 2023.01 · KT / 퓨렌스
우리은행 AI기반 불완전판매방지 태블릿 서비스 고도화
백엔드 개발 및 중계망 구축 · 외부망 · 중계망 · 내부운영망
외부망의 태블릿 앱에서 녹취한 음성을 중계망을 거쳐 내부운영망 녹취 서버까지 안전하게 전달하는 서비스입니다.
중계망 TCP Proxy를 직접 구현하고, 웹뷰 화면이 Zeus Reverse Proxy를 거쳐 내부 WAS로 렌더링되도록 연결했습니다.
Netty
TCP Proxy
Zeus (Web Server)
Reverse Proxy
L4 / VIP
WebView
Spring
Linux
00
망 구간 아키텍처
외부망 → 중계망 → 내부운영망
중계망 · 내부운영망 서버 1·2 이중화
외부망
중계망
내부운영망
녹취
TCP
TCP
중계 VIP이중화
Proxy 1TCP Proxy
Proxy 2TCP Proxy
직접 구현
TCP
녹취 VIPHash
기존 솔루션 구축 환경 그대로
화면
HTTP
HTTP
ZeusWeb Server · Reverse Proxy
HTTP
01
규모와 역할
3개 망 연결외부망 · 중계망 · 내부운영망
TCP Proxy중계망 직접 구현
백엔드 개발태블릿 맞춤 대응 · 중계망 구축
3개월2022.10 – 2023.01
02
태블릿 녹취와 웹뷰 화면 흐름
녹취는 TCP로 중계망 Proxy를 거쳐 녹취 서버로, 화면은 HTTP로 Zeus를 거쳐 내부 WAS로 이어집니다.
태블릿 앱
중계 VIP
TCP Proxy 1·2
녹취 VIP
녹취 AP 1·2
Zeus
WAS 1·2
녹취 전송 (TCP)
① 녹취 · 암호화 음성
② Proxy 1·2 분산
③ TCP 중계
④ Hash · 같은 AP 고정
웹뷰 화면 (HTTP)
⑤ 웹뷰 화면 요청
⑥ Reverse Proxy
⑦ 화면 · 정적 리소스 응답
③ TCP Proxy
외부망의 앱이 내부운영망 녹취 서버에 바로 붙지 않도록, 중계망에 TCP Proxy를 직접 구현해 연결을 이어 줬습니다.
④ Hash
녹취는 한 상담의 음성이 한 파일로 이어져야 하므로, 중계망에서 녹취 서버로 갈 때도 녹취 VIP의 Hash 분산으로 같은 녹취 AP에 고정합니다.
⑤ ⑦ 웹뷰
앱은 웹뷰라 화면을 직접 그리지 않고, Zeus Reverse Proxy를 거쳐 내부 WAS가 렌더링한 화면을 받아 표시합니다.
03
트러블슈팅
01Zeus Reverse Proxy 웹뷰 렌더링 지연
문제Reverse Proxy를 거치면서 웹뷰 화면의 브라우저 캐시 · 리소스 로딩이 매우 느려 렌더링이 지연됐습니다.
원인 파악실제 태블릿 웹뷰로 재현하고, Zeus 로그로 리소스마다 몇 ms에 내려받아지는지 확인했습니다. 정적 리소스가 캐시되지 않고 요청마다 내부 WAS까지 다시 받아오고 있었습니다.
해결Zeus 설정을 조정했습니다. 정적 리소스(JS · CSS · 이미지)에 캐시 헤더(Cache-Control · Expires)를 적용하고, 응답 압축과 Keep-Alive 연결 재사용을 켜서 반복 다운로드와 연결 비용을 줄였습니다.
결과리소스 재다운로드가 사라져 웹뷰 화면 렌더링 지연을 해소했습니다.
02TCP Proxy 연결 끊김 — 녹취 단절 방지
문제직접 구현한 TCP Proxy에서 idle timeout 등으로 연결이 비교적 자주 끊겨 녹취가 중단될 위험이 있었습니다.
원인 파악앱 → Proxy, Proxy → 녹취 서버 양방향으로 로그를 남겨 비교하고, timeout 처리가 되지 않은 구간을 찾았습니다.
해결timeout 미처리 구간을 보완하고, 연결이 끊겼을 때를 대비한 폴백 전략을 구축했습니다.
결과연결이 끊기는 상황에서도 녹취가 끊기지 않도록 개선했습니다.
04
핵심성과
안정성
녹취 끊김 없는 TCP 중계
양방향 로그로 timeout 미처리 구간을 찾아 보완하고 폴백 전략을 더해, 연결이 끊겨도 녹취가 이어지게 만들었습니다.
성능
웹뷰 렌더링 지연 해소
Zeus 로그로 리소스별 다운로드 시간을 측정하고 캐시 · 압축 설정을 조정해, 리소스 재다운로드를 없앴습니다.
구축
외부망 태블릿 → 내부망 녹취 연결
중계망 TCP Proxy를 직접 구현해, 기존 녹취 인프라를 그대로 쓰면서 태블릿 녹취를 받을 수 있게 했습니다.