업계 동향

[2018][ifkakao] 무정지, 무점검 서버개발

Sencia 2021. 3. 22. 16:14
반응형
2018년에 개최된 ifkakao에서 발표된 세션을 정리한 글입니다. 
이 세션에 대한 pdf 자료 및 발표자에 대한 정보는 아래 링크를 통해 확인해주세요. 

https://if.kakao.com/2018/program?sessionId=abcd6780-c38a-4889-b8e7-da02d2000510

 

개요

글로벌 게임서비스의 무정지, 무점검 서버 개발과 운영의 사례를 소개
1. 무정지 무점검을 위해 적용된 서버 개발 기술들의 소개
2. 무정지 무점검 운영을 위한 서버의 구성과 DevOps 운용 소개

 


요약 

  • Flush, Var, Query System, Site Flipping 기술 개발 
  • CD/CI 자동화로 소프트웨어 변경의 어려움과 배포 리스크 제거 
  • 클라우드를 이용해 인프라 자동화 
  • DevOps 문화로 분업화되었던 소프트웨어 생명주기를 압축 단순화 

=> 최종적으로 무정지, 무점검 서비스 

 

무정지&무점검을 어렵게 하는 것들 

01. 패치 

서버에 패치 적용을 위해 서버를 내려야하는 경우가 많음

  • 바이너리 교체 
  • 로직 재시작 
  • 새 데이터 로드
  • 하위 호환이 되지 않아

 

이를 해결하기 위한 방법으로 

01) 기존 서버로의 추가 유입을 막고(Drain) 

02) 새 버전 서버로 유입되도록 바꿈(Redirect) 

 

 

이것이 가능한 이유는 VM 기반이므로 새로운 사이트 만들기 용이 & 하위호환 API 시스템 구축 

이 방법의 장점은 아래와 같음 

  • Deploy마다 완전히 서버를 지우고 terraform을 통해 완전히 새로 서버를 만들기 때문에 항상 클린한 서버를 만들고 하드웨어의 이동도 쉬움
  • 이전 사이트로 롤백 용이 
  • 문제가 있을때 서비스에 지장없이 조사 가능 

 

02. 설정 변경 

  • 설정 파일이 로컬에 존재하지 않음 
  • 로그 파일 자동으로 수집 

이를 통하여 서버는 온전히 서비스를 돌리는 역할만 맡을 수 있음

 

03. 상수 변경 

상수값을 변경하려고 하면 코드 변경 & 재배포 필요 

static const int minGames = 2;

 

이를 해결하기 위해 Var system 도입 

Query system의 일부로 작동중인 서비스에 등록된 함수를 실시간 RPC로 호출하고 값을 얻어올 수 있음

개발자, QA, 프로듀서 누구든 값 변경 가능 

Var::Setting<Time::Tick> m_varCharRequestTimeoutInterval;

Var::Setting<biz:string> m_varMessageOfTheDay;

04. 스케일링

앞서 언급했듯이 서버에 설정 정보를 남겨두지 않음

따라서 스케일링이 필요한 경우, 단순히 VM 추가로 해결 가능 

  • MQ를 통한 서버통신으로 직접 연결 불필요 

 

05. 장애 

  • 서비스별 Pool 별도 구성
  • health check에서 이상이 있는 장비는 pool에서 제외 

 

06. DevOps 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형