비트윈의 멀티티어 아키텍처를 위한 프레젠터 이야기
두줄요약
ELB의 장기 대량 TCP 연결과 프로토콜 복잡성 문제를 해결하기 위해 프레젠터 게이트웨이를 구축했습니다. TCP 멀티플렉싱, C++ 연결 처리, Route53 가중치 라우팅으로 성능과 운영성을 확보했습니다.
문제 상황
- 클라이언트가 ELB를 거쳐 채팅 서버에 직접 TCP 연결하던 구조의 복잡한 서버 선택 과정
- PC 버전·푸시 서버 대응을 위한 장기 대량 연결, SSL 핸드셰이크 성능, ELB 스케일링 한계
구조와 흐름
- 인증 패킷 기반 샤드 판별 후 동일 채팅 서버로 패킷을 중계하는 프레젠터 게이트웨이
- 다수의 클라이언트 TCP 연결을 소수의 내부 연결로 처리하는 Multiplexing Protocol과 Stream 추상화
- Route53 DNS Round Robin 및 가중치 라우팅으로 프레젠터 연결 분산
선택 이유
- OpenSSL·libevent 기반 folly 활용으로 C++ 연결 유지 모듈 구성
- Netty·Alfred 기반 Java 로직 모듈 분리로 인증 처리와 릴레이 담당
- 이후 패킷의 무파싱 단순 릴레이로 API 변경 시 프레젠터 업데이트 최소화
성능/운영 포인트
- SSL Session Ticket 등 네트워크 최적화 기술의 직접 적용 가능성
- 연결 수와 CPU 사용량을 반영한 Route53 가중치의 주기적 갱신
- AutoScaling Group LifeCycleHook 기반의 연결 소진 후 안전한 스케일 인



