비트윈 시스템 아키텍처
두줄요약
비트윈의 HTTP·TCP 채팅 서비스와 커플 단위 샤딩 기반 아키텍처를 설명했습니다. 다계층 구조와 HBase 트랜잭션으로 확장성·장애 격리를 개선하는 방향을 제시했습니다.
구조와 흐름
- Java·Netty·Thrift 기반 HTTP API와 TCP 채팅 프로토콜의 공통 서비스 인터페이스
- HBase 기반 메시지 트랜잭션, ZooKeeper·Consistent Hashing 기반 커플 단위 서버 샤딩
- ELB를 통한 HTTP 분산과 서버별 ELB를 통한 TCP 연결, S3 사진 저장 및 CloudWatch 모니터링
선택 이유
- 모바일 네트워크의 채팅 전송 속도를 위한 TCP·Snappy 압축과 Thrift 서비스 재사용
- 빈번히 변경되는 채팅 상태의 HBase 저장 회피와 애플리케이션 서버 인메모리 캐싱
- IDC 운영 경험·TCO를 고려한 AWS 기반 운영과 CPU·메모리 병목별 EC2 인스턴스 분리
트레이드오프
- 서버 증감 시 커플 이동을 줄이는 Consistent Hashing과 클라이언트 샤딩 정보 인지 요구의 복잡성
- 서버 증설 시 신규 ELB Warm-up 필요에 따른 Auto-Scale 제약
- HBase 다중 복제 쓰기와 AZ 간 지연시간 부담으로 인한 Multi-AZ 구성 난이도
성능/운영 포인트
- HDFS 복제본의 ephemeral storage·PIOPS EBS 분산으로 EBS 지연 영향 최소화
- Presentation·Application 다계층 구조로 단일 ELB 진입점, 자동 확장 및 배포 단순화 계획
- HBase 리전과 애플리케이션 샤드의 물리적 공존으로 장애 범위 격리, Haeinsa 배치 트랜잭션으로 AZ 간 쓰기 지연 완화
