winterjung blog


NDC2018 야생의 땅: 듀랑고 세션 정리

NDC 2018 2일차에 들었던 야생의 땅: 듀랑고 관련 세션 2개를 정리했다. NDC 다시보기로만 봤던 듀랑고팀의 발표를 직접 보게 되었는데 무척 재밌었고 서비스가 오픈되었을 때 여러가지 상황이 발생했었는데 그 이유와 어떻게 대응했으며 보완했는지 잘 설명해주셔서 많은 궁금증을 풀 수 있었다. 올해 NDC 다시보기는 7월 중으로 올라온다하고, 아직 발표 자료는 올라오지 않은 것 같다.

서버 아키텍처 Vol. 3 - 이흥섭#

인트로#

대규모 샌드박스#

고가용성#

데이터베이스#

#

청크#

클러스터링#

무중단 패치#

인프라#

초반 서버장애#

인구 과밀화#

재앙의 시작. 수백명이 몰려있기도. 인구분배기는 일정 시간의 인구밀도를 계산하는데 유입이 너무 많아서 제대로 작동 안했음.

접속 대기열 장애#

유명한 장면. 에러내용이 그대로 노출된건 창피한 실수. 플레이어 서비스 쪽에선 에러 내용 감추기가 잘 되어있었지만 로그인 서비스에선 잘 안되어있었음. 당시 접속대기열은 나보다 앞에있는 사람 수를 세서 알려주는데 MySQL. 끊임없는 풀스캔 유발. 락 타임아웃. 과다 연결 등등 펑펑. 결국 접속 대기열 Redis로 재구현. Sorted set이 크게 도움됨.

데이터베이스 과부하#

단일 서버 포기#

가능하면 한 서버만으로 출시하고 싶었음. 알파 서버가 걷잡을 수 없이 상황이 나빠졌고 브라보 찰리까지 열었음에도 대기열이 빡빡했음. 그래서 두 서버를 더 열고 드디어 대기열이 줄어들기 시작함.

회고#

듀량고는 균형에 민감. 해외 CBT에 맞춰진 균형이었음. 추구했던 것과는 반대로 긴 중단시간을 가졌음. 결국 5대의 서버를 열고 난 후에 한 서버에서 7만명을 받을 수 있었음.

앞으로#

QNA#

만들고 붓고 부수고 - 서버 관리 배포 이야기 - 김찬웅#

인트로#

초기 서버 인프라 관리#

Limited Beta Test를 겪으며#

서비스 오픈을 앞두고#

느린 배포 해결#

배포 전용 호스트 도입. 파이썬은 병렬 처리할 때 멀티프로세싱을 사용해 CPU 개수에 달려있음. 단순하게 EC2에 vCPU 40인 호스트를 그냥 띄워서 Fabric을 사용함

지속 가능한 배포 도구#

Fabric을 대체할 Ansible을 차용함. 똑같이 Agentless하고 Python으로 되어있고 커뮤니티가 활성화. playbook 이라는 yaml. 1000여개의 모듈을 제공. 기존의 Fabric을 어려움 없이 마이그레이션했고 오히려 코딩량이 줄어들었다. Ansible의 특징인 멱등성. 연산이 여러 번 적용하더라도 결과가 달라지지 않음. ansible은 실패한 호스트를 따로 볼 수 있음. retry도 쉽게 가능

서비스 오픈 이후#

그 다음#

ChatOps와 ClickOps. 클릭과 슬랙 봇 채팅으로 모든걸 관리. 실제로 슬랙 봇이 어떤 단계가 진행중인지 알려줌.

정리#

작은 인프라에서 큰 인프라로 넘어갈 때 인프라 투명성과 기록 가능성 도입. 더더욱 큰 인프라로 갈 때 규모 대응과 지속 가능성에 대해 성장시킴. Terraform과 Packer는 꼭 고려해볼 것을 추천. 배포 도구는 본인의 인프라 규모와 언어에 따라 결정