
발표자료
- 동남아 지역에 신규 게임 런칭하면서 새로 인프라 구축을 했다.
- 문제점과 고민한 내용, 해결방법에 대해 소개
- 성능개선 방법
서비스 대상 지역의 네트워크 품질과 Latency 고려해서 최적의 장소를 선정 - 싱가폴
Cloud? IDC? 비용과 상황 고려해서 - Cloud 사용!

외부에 있는 api gateway와
가속솔루션과 GSLB(Global Server Load Balancing, 현재 지역에서 가장 가까운 서버에 연결시켜주는 DNS 서버)
GSLB 설명
서버 통신에서 병목 구간은 최초 연결시 TCP handshake with TLS에서 생긴다.
3-way handshake에 TLS 과정까지 포함하면 오래걸림.
가속 솔루션의 원리는 이 병목을 해결하는 것.
TCP handshake with TLS 를 진행할 때 클라이언트와 서버가 가까우면 빨라진다.
가장 느린 구간의 속도를 빠르게 만들어 병목을 해결하자!
Relay service를 만들어 가속솔루션을 대체하자!
api gateway를 싱가폴에 두고, Relay service를 서울에 둔다.
가속 솔루션과 비교했을 때 성능차이가 없었다.
하지만 서버 모니터링, 배포, auto-scaling등 관리 이슈가 증가함.
서버 모니터링은 cloudwatch에 기록하고 api 커맨드패턴은 hystrix, ELK로 모니터링
이슈 1 : 배포 프로세스 중 서울에서 싱가폴로 배포 파일 크기가 커서 latency가 증가하면 배포가 불안정해진다.
해결방법 : 서울에 있는 S3에서 binary file을 싱가폴 서버에 바로 전달. timeout과 retry 설정 쉽게함. rollback 관리만 잘하면 됨.
이슈 2 : DNS Policy 적용 실패
해결방법 : 클라이언트에서 ip를 이용해서 위치파악
이슈 3 : API서버의 Latency가 높음
해결방법 : GSLB의 GeoIP DB를 업데이트
이슈 4 : Global network 불안정, 이벤트 유실
해결방법 : kafka, kinesis에 이벤트 저장하고 log 기록
게임존 진출과 후퇴를 반복하면서 쌓은 노하우를 플랫폼화시킴.
안정적이고 scalable하고 기민하고 유연하게 움직일 수 있는 플랫폼과 인프라를 추구
GSLB와 가속솔루션에 대해서 공부하게 됨.
GSLB란? 접기 / 펼치기
Global Server Load Balancing.
DNS 서비스가 전세계 단위로 확장된 형태.
지역별로 서버가 운영될 때 기존 DNS의 한계와 단점을 보완함.
주기적으로 서버의 Health Check를 모니터링하면서 다운된 서버의 IP는 응답에서 제외한다.
사용자가 다운된 서버에 연결되지 않게 한다.
기존 Round-Robin 방식의 DNS 서버는 다른 서버의 상태를 알 수 없다.
GSLB서버는 연결된 서버의 부하 상태를 체크하면서 로드가 적은 서버의 IP를 반환한다.
사용자와 서버 사이의 RTT를 측정을 통해 각 지역별 서버의 Latency정보를 저장한다.
요청이 들어오면 응답이 빠른 서버를 사용자와 연결한다.
사용자의 지리적 위치를 고려해서 가장 가까운 서버를 연결한다.
https://www.joinc.co.kr/w/man/12/GSLB
GSLB 에서는 연결할 서버의 정보를 캐싱하는데 캐싱하는 시간이 길면 서버의 변동에 민감하게 반응하지 못하고, 시간이 짧으면 GSLB에 부하가 증가한다.
서비스의 특성에 따라 캐싱 시간을 조절해야하며, 일반적으로 GSLB에 부하를 주더라도 시간을 짧게 설정한다.
Reverse Proxy와 Load Balancing의 차이점.
글로벌 플랫폼에서 고려해야하는 이슈들이 정말 많다... Latency, 보안 이슈, 배포, DNS서버 연결
글로벌 플랫폼을 진출한 경험과 노하우를 플랫폼화 시켰다는 점에서 내가 했던 삽질을 다른 사람이 하지 않게 기술축적.
기술축적의 관점에서 당연하다고 생각될 수 있지만 그 뒤에 숨은 노력이 대단하다고 느껴짐.
팀 규모가 4명밖에 안된다고??? 정말 고생이 많으셨겠다..
해외에 진출한 뒤 사용자 수가 줄어들어서 다시 edge존 철수한다는 얘기 들을 때 마음아팠음.
목차로 돌아가기