핵심 요약
타다가 비트윈의 멀티티어 아키텍처에서 프레젠터를 도입해 클라이언트-채팅 서버 간 게이트웨이 역할을 구현하고, ELB의 한계를 보완해 대규모 연결을 안정적으로 처리하는 구조를 제시했습니다.
구현 방법
- C++로 연결 유지 모듈을 구현하고 folly를 기반으로 OpenSSL+libevent를 활용
- 인증 파싱은 Alfred(Netty 기반)으로 처리하고 이후 패킷은 Multiplexing Protocol 프레임으로 릴레이
- Multiplexing Protocol은 Thrift로 정의되어 Java/C++ 간 소스가 공유되고 Stream으로 내부 연결을 관리
- Consistent Hash 샤딩과 ZooKeeper 공유로 커플-채팅 서버 매핑을 일관되게 유지
- Route53 Weighted Routing으로 프레젠터 부하를 동적으로 분산하고 AutoScaling Group과 LifeCycleHook(Kharon)으로 안전한 스케일링 관리
주요 결과
- 프레젠터 주소 하나로 다수의 채팅 서버에 연결 가능해 클라이언트 측 프로토콜 복잡성을 해소
- ELB 제약과 대규모 SSL 핸드셰이크 이슈를 줄이고 시스템 확장성을 향상
- 운영 단순화 및 채팅 서버 자동 확장 가능성 확보