게임 렉 백서 › L13 서버 구성과 운영
부가 서버 장애 Auxiliary service outage
원인 ID in-subservice · 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·서버 인프라
그림과 실험이 있는 원본 카드로 열기 →
채팅·파티·경매장처럼 게임 서버와 따로 도는 서버에 장애가 나면 그 기능만 동작하지 않습니다.
왜 기능 전용 서버가 느려지거나 죽음 → 그러면 해당 기능 요청만 응답 없음 → 화면에서는 채팅 안 됨, 파티 초대 무반응, 거래소 무한 로딩(전투는 정상)
- 증상
- 씹힘·롤백, 접속 불가·무한 로딩
- 요인
- 정체, 손실
- 누가 겪나
- 특정 기능만
- 언제
- 가끔 무작위로, 사람이 몰릴 때
- 담당
- 주 담당 게임개발팀·서버 개발 · 함께 인프라팀·서버 인프라
- 게임개발팀 할 일
- 실패해도 게임은 계속되게 설계, 기능별 상태 표시, 여러 기능을 중앙 서버 한 대에 몰지 않기.
- 인프라팀 할 일
- 부가 서버별 헬스체크·경보, 이중화와 자동 재시작.
- 그래프에서는
- 연결이 한꺼번에 끊김 · 기능별 요청 성공률, 부가 서버 연결 수·헬스체크
- 확인할 곳
- 채팅·파티·경매장 같은 부가 서버별 헬스체크·프로세스 상태와 연결 수, 기능별 요청 성공률·응답 시간. 로드밸런서 뒤라면 대상 그룹의 UnHealthyHostCount
- 이러면 맞음
- 제보된 기능을 맡은 서버만 헬스체크 실패나 연결 급락을 보이고 게임 서버의 틱과 전투는 정상
- 이러면 아님
- 여러 기능이 한꺼번에 멈췄으면 그 기능들을 함께 중계하는 중앙 서버나 연쇄 장애 쪽
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
- 더 알아보기
- 파티·길드·귓속말·서버 간 이동을 한 대의 중앙 서버(월드·매니저 서버)가 모두 중계하는 구조라면, 그 서버 하나가 느려질 때 여러 기능이 한꺼번에 멈춥니다.
출처
- Bulkhead Pattern Microsoft Azure
구성 요소를 풀로 격리하면 하나가 실패해도 나머지는 계속 동작하고 장애가 번지지 않음 - REL05-BP01 Implement graceful degradation to transform applicable hard dependencies into soft dependencies AWS
AWS Well-Architected. 의존 대상이 장애여도 핵심 기능은 약간 오래된 데이터나 대체 데이터로 계속 동작하도록 설계 - CloudWatch metrics for your Network Load Balancer AWS
UnHealthyHostCount: 헬스체크에서 비정상으로 판정된 대상 수
함께 보면 좋은 원인
같은 층: L13 서버 구성과 운영
같은 증상(씹힘·롤백)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기