안녕하세요. 데브시스터즈 기술본부에서 조직문화, 개발문화를 가꾸고 있는 전경아입니다.
데브시스터즈에서는 오랜 기간동안 Datadog(이하 데이터독)을 모니터링 서비스로 사용하고 있는데요. 지난 2024년 6월에 데브시스터즈에서 축적해온 데이터독의 사용 노하우를 다양한 분들께 공유해드리고자 개발자 분들을 초청하여 Datadog Live with Devsisters 행사를 진행하였습니다.
데이터독 담당자 분들과 함께 준비, 진행하였던 행사의 영상은 Datadog Korea 유튜브에 업로드되어 있으며, 본문에도 첨부해드립니다.
이번 글에서는 전반적인 행사 내용과 소감과 함께, 행사에서 다루었던 내용을 요약해보고자 합니다.
행사 소개
Datadog Live with Devsisters은 데브시스터즈와 데이터독이 함께 준비한 라이브 톡 행사입니다. 데브시스터즈에서 과거에 데이터독을 왜 도입하였는지와 지금까지 어떻게 이용하고 있는지 실제 사례를 공유하고 Q&A 시간을 가지며 참가하신 분들께 데이터독에 대한 이해를 높여드리는 것이 목적이었습니다.
패널톡 형태로 게임, 인프라, 데이터, 플랫폼 팀을 리드하고 계신 4분의 엔지니어를 모시고 진행했는데요, 게임업계 담당자뿐만 아니라 다양한 산업군에서 많은 분들이 모여주셔서 저희의 이야기를 더욱 열정적으로 전달할 수 있었던 귀중한 시간이었습니다.
데브시스터즈의 데이터독 도입 배경
데브시스터즈는 AWS의 한국 리전이 출시되기 훨씬 이전인 2011년부터 AWS 클라우드를 활용하여 서비스를 운영해왔습니다. 2013년에 출시한 쿠키런 For Kakao는 AWS 클라우드를 적극적으로 활용하여 적은 인력으로도 수백만 명의 유저분들에게 안정적으로 서비스를 제공할 수 있게 되었지만, 모니터링 측면에서는 여전히 보완할 필요가 있는 부분들이 있었습니다. 예를 들어, 당시 사용하던 Zabbix, CloudWatch, StatsD, Graphite 등의 기존 모니터링 도구들은 설정과 유지보수를 위해 전문적인 지식과 경험이 필요했고, Stateful 한 특성 때문에 트래픽 변동성이 큰 클라우드 환경에서 효율적인 관리가 어려웠습니다. 또한, 여러 애플리케이션을 운영하는 과정에서 각 애플리케이션에 맞춘 메트릭을 세밀하게 분석하고 수집하기에 지나치게 복잡했습니다.
이와 같은 고민을 하며 차기작 출시를 준비하다보니, 서비스 안정성 면에서 모니터링 스택에 대한 니즈는 커져갔습니다. 그러한 상황에서, 승용님께서 참석했던 컨퍼런스에서 우연한 기회로 데이터독 한국인 엔지니어께서 진행하신 세션을 듣게 되었고, anomaly 등의 다양한 기능이 매력적이고 안정적이라고 느껴 빠르게 차기작의 모니터링 스택으로 도입하게 되었습니다. 결과적으로, 2016년 쿠키런: 오븐브레이크가 출시되었을 때, 수 만명의 유저가 동시에 회원가입을 하는 과정에 발생했던 병목을 감지하여 빠르게 해결하는 등 많은 도움을 받을 수 있었습니다.
데브시스터즈에서의 데이터독 주요 사용 사례는 아래 자료들에서 상세하게 확인하실 수 있습니다.
- Datadog Case Study: Taking monitoring to the next level
- Datadog Observability Day 2023: Devsisters 와 함께하는 쿠키 런 세계의 모니터링 노하우
이후로도 지속적으로 데이터독을 사용하며 아직도 다양한 장점을 체감하고 있습니다. 데브시스터즈에서 체감하는 주요 효용으로는, APM과 같이 니즈에 알맞게 필요한 모니터링 스택을 제공하고 있다는 점, 신규 Integration 요청에 빠르게 대응해주어 사용자로서 편리하다는 점, 그리고 무엇보다 모니터링 플랫폼으로써 핵심 기능과 사용성이 한결 같이 잘 유지되고 있다는 점을 꼽을 수 있습니다.
팀 별 데이터독 활용 사례
다음으로는 게임 개발팀, 게임 플랫폼 팀, 데브옵스 팀에서 데이터독을 어떻게 활용하고 계신지 사례를 공유해주셨습니다. 내용을 간략히 요약하면 다음과 같습니다.
1. 게임 개발팀
- 실시간 지표 모니터링:
- RPS 등의 시스템 지표를 모니터링하여 서버가 얼마만큼의 부하를 받고 어떤 상태에 있는지를 실시간으로 확인하여 트래픽 변동 상황에서 서버의 안정성을 유지합니다.
- 매출, 플레이 통계 등 게임 내 주요 지표를 커스텀 메트릭으로 설정하고 실시간으로 모니터링하여 매출 변동이나 플레이 패턴 변화를 빠르게 파악하고 대응할 수 있습니다.
- 장애 상황 대응:
- 장애 상황 모니터를 통해 특정 조건(ex. Go 서버에서 panic이 발생)이 일어나면 알람이 울리도록 Custom Metric과 조합하여 설정하여 빠르게 장애를 인지하고 신속히 대응할 수 있습니다.
- 프로파일링을 통한 서버 성능 개선:
- APM을 통한 주기적으로 성능 분석을 시도하면서, 신규 기능 도입을 통한 성능 문제를 파악하거나 개발 단계의 실수 등을 확인합니다.
2. 플랫폼 팀
- 서비스 맵을 통한 MSA 모니터링:
- 서비스 간의 의존성을 시각화하여 각 서비스가 어떻게 상호작용하는지 파악합니다. 이를 통해 복잡한 서비스 구조에서도 문제를 쉽게 추적할 수 있습니다.
- 데이터독 기능을 사용한 모니터링:
- APM, Synthetic Monitoring, Service Check 등을 통해 서비스 상태를 확인하고 관리합니다.
- 서드파티 API 모니터링:
- Google 혹은 Apple 로그인과 같은 외부 API에서 문제, 지연 등이 발생하고 있는지 인지하고 대응하기 위해 데이터독 모니터를 사용합니다.
3. 데브옵스 팀
- 기본적인 리소스 사용량 및 이벤트 모니터링:
- CPU, 메모리 사용률, 네트워크 트래픽 등을 모니터링하여 서버 상태를 파악하고, 리소스를 효율적으로 사용하고 있는지도 확인하여 비용을 절감하는 시도로도 이어지고 있습니다.
- 쿠버네티스 환경 모니터링:
- 쿠버네티스 클러스터에서 발생하는 다양한 이벤트를 모니터링하여 문제 발생 시 빠르게 파악합니다. 또한 Pod가 할당되지 않는다거나 반복적으로 재시작하는 등 단순한 지표가 아니라 현상도 확인할 수 있습니다.
- SLO 관리
- 데이터독 SLO를 통해 에러율, 지연 시간, 서비스 상태 등을 관리 및 확인하고 알람을 받고 있습니다.
- 유저에게 서비스를 제공하는 입장에서 SLO는 무조건 높여야 하지만, SLO를 높히는 데에는 많은 비용이 들어갑니다. 이같은 기술적 어려움에 대해 담당 부서에 충분히 공유하여 이해를 구하고, 합리적인 게임 서비스 안정성을 협의하는 과정을 거치고 있습니다.
인프라 관리
다음으로는 데이터독과는 크게 관련이 없을 수 있지만, 행사를 준비하며 사전에 수집하였던 질문 중 쿠버네티스와 인프라 관리에 대한 질문이 많았기 때문에 데브시스터즈에서는 인프라 관리를 어떤 방식으로 하고 있는지 데브옵스 팀에서 소개해주셨습니다.
쿠버네티스를 관리하는 조직이라면 모두 클러스터를 배포, 관리하는 방식이 있으실텐데요. 데브시스터즈에서 과거에는 하나의 클러스터에 여러 개의 게임, 어플리케이션을 배포하는 형태로 사용하고 있었습니다. 그러나 이러한 패턴에서는 구조적으로 특정 어플리케이션에서 발생한 장애가 인프라 혹은 클러스터 단으로 번져 다른 어플리케이션과 게임으로 전파될 위험성이 있고, 또 각 게임에서 적용하고 싶은 설정이 달라 관리해야할 설정셋이 점점 늘어나는 등의 어려움이 있었습니다. 그렇기에 데브시스터즈에서는 이제 각 게임마다 각각의 클러스터를 사용하는 패턴으로 변경하였습니다.
데브시스터즈에서 배포를 필요로 하는 모든 인프라는 코드로 관리될 것을 원칙으로 하고 있으며, 이는 쿠버네티스 클러스터 또한 예외가 아닙니다. 각 개발팀에서 필요로 하는 쿠버네티스 클러스터는 기본적으로 테라폼 코드를 통해 관리하고 있는데, 쿠버네티스를 분리하면서 클러스터와 애드온들을 클러스터 별로 개별 설치하고 관리하는 과도기가 있었습니다. 짐작하시다시피 설치 방법과 버전 별로 필요한 작업들이 달라지기 때문에 클러스터 수가 많아질수록 관리 상 어려움이 크게 발생하였기 때문에, 지금은 대부분의 클러스터를 직접 작성한 EKS 테라폼 모듈을 통해 관리하고 있습니다. 이 모듈에는 데이터독 등의 애드온부터 배포를 위한 도구 등까지, 기본적으로 데브시스터즈에서 EKS를 사용하는 패턴에서 필요한 것들을 직접 설정하여 사용할 수 있게 구현해두었습니다. 설정을 명시하지 않을 경우 미리 설정해둔 기본값이 자동으로 적용 및 업데이트 되기 때문에, 결과적으로 데브옵스 팀에서 축적한 경험이 적은 노력으로 전파되는 구조가 되었습니다.
또한 개발팀에서 개발을 진행하게 되면서 여러가지 환경의 QA가 필요하게 되었습니다. 그런 상황에서 새로운 환경의 서버를 쉽게 배포할 수 있는 CD 툴도 내부적으로 개발하여 사용하고 있습니다. (다소 갑작스럽게 CD툴에 대한 이야기가 나오지만, 관련해서 인프라셀에서 다른 기술블로그 글로 소개를 준비하고 있다고 합니다.)
부하테스트 및 최적화
여러 게임들을 출시해온 데브시스터즈가 부하테스트에 대해 가진 노하우에 대한 질문을 주신 분도 있었습니다. 마침 행사 당시에 쿠키런: 모험의 탑 런칭을 준비하고 있었기 때문에 비교적 생동감 있는 답변을 드릴 수 있었습니다.
런칭 전 부하테스트는 목표 부하를 수용하기 위해 필요한 인프라 규모에 대한 가설을 세우고 검증하는 과정의 반복이기 때문에, RPS, 특정 컴포넌트의 서버 대수 등 다양한 설정을 변인으로 두고 성능에 발생하는 변화를 측정하는 방식으로 진행됩니다. 변인에 따라 여러 가지 시나리오를 준비하고, 이에 대한 지표와 결과를 분석하여 서버의 한계점과 적정점을 찾아가는 과정을 거칩니다. 보통 데브옵스 팀에서 테스트를 위한 격리된 인프라를 준비해서 제공하고, 게임 개발팀에서 이를 사용하여 테스트를 진행하며, 결과에 대해서는 서로 같이 논의하며 개선해나가는 사이클을 거칩니다. 부하 테스트 과정에서도 Datadog APM을 사용하여 어떤 API가 어떤 지점에서 문제를 일으키는지를 flame graph 등을 통해 손쉽게 확인할 수 있습니다.
물론 API에 따른 성능 최적화는 게임 서비스 중에도 진행이 필요합니다. 라이브 서비스 중에는 단순히 한 시점의 지표만 확인하는 것이 아니라, 데이터독 메트릭의 calendar_shift
함수를 활용하여 지난 주 등 과거 시점의 지표와도 비교하면 서비스에 어떤 변동이 있어서 새로운 상황이 발생하는지 모니터링할 수 있습니다.
장애 알람 수신
데이터독을 사용하면 모니터링에 필요한 도구들을 적은 공수로 설정할 수 있지만, 모니터링만큼 중요한 것이 문제 상황에 대해 적절한 시점에 개입을 할 수 있도록 알람을 받는 것입니다. 행사에 참석하신 분들도 이 부분에 관심을 가지고 계신 것을 확인할 수 있었는데요.
데브시스터즈는 현재 데브옵스 팀을 주축으로 알람 가이드라인을 만들어두었고, 일관된 규칙의 알람에 대한 원칙을 홍보, 교육하여 게임팀에서 적용할 수 있도록 돕고 있습니다.
가장 기본적인 컨셉은 데이터독과 슬랙을 연동하여 슬랙으로 알람을 받는 것입니다. 과거에는 배포 환경에 따라 production 환경 알람은 중요 채널로, dev 환경은 서브 채널로 보내는 등의 규칙을 적용하였으나, 이 과정에서 내부 운영툴이나 크게 신경쓰지 않는 외부 서비스 등에 대한 알람이 섞여 들어 와 발생한 알람에 대한 중요도를 판단하는데 혼란을 주었습니다. 그래서 지금은 알람을 받은 시점을 기준으로 15분 내에 대응해야 하는 알람, 1시간 내에 대응해야 하는 알람 등 대응시간에 따라 기준을 나누었습니다.
그렇게 발송된 알람에 대하여 빠르고 체계적인 대응이 필요할 경우 Datadog Incident 기능을 통해 별도의 슬랙 채널을 만들어 커뮤니케이션 파편화를 방지하고, 장애 상황과 타임라인은 노션에 기록하여 해결된 이후에도 참고할 수 있도록 관리하고 있습니다.
마치며
2023년 2월에 진행한 스칼라 개발자 밋업 이후 오랜만에 외부 개발자분들과 지식을 나누고 서로 교류하는 시간을 가졌는데요, 데브시스터즈의 개발 문화를 알릴 수 있는 이번 행사를 함께 준비하고 진행할 수 있어서 뜻깊은 시간이었습니다.
좋은 기회로 행사 전반을 기획하고 진행해주신 데이터독 분들을 비롯하여, 짧은 기간 속에 매주 성실히 준비하면서 패널톡을 진행해주신 창원님, 재영님, 승용님, 대영님, 정훈님께 감사드립니다. 무엇보다, 데브시스터즈에서는 데이터독을 어떻게 사용하는지 궁금증을 가지고 긴 시간동안 집중하며 적극적인 질문으로 의미있는 시간을 만들어주신 참가자분들께 감사드립니다.
다음에도 개발 행사를 진행할 예정이니 많은 관심 가져주시고 다시 만나뵐 수 있기를 기대합니다.
데브시스터즈는 최고의 인재를 찾고 있습니다.
데브시스터즈에서는 능력있는 [기술본부] SRE/DevOps Engineer와 [기술본부] [DevPlay] 서버 소프트웨어 엔지니어 (Senior)를 찾고 있습니다.자세한 내용은 채용 사이트를 확인해주세요!