일상생활

데비시스터즈 쿠버네티스 도입 사례 공개

악분 2021. 6. 12. 13:44
반응형

목차

    공개 영상: https://youtu.be/8R4DDEqjc0I

     

    안녕하세요.

    2021.6.11에 데브시스터즈에서 쿠버네티스를 이용한 게임 운영사례를 공개했습니다.

    게임 주제를 벗어나서 정말 완벽한 발표였습니다. 제가 흥미롭게 본 것만 요약할게요~

    1. 쿠버네티스 도입 이유

    영상 도입 그리고 마지막에 데브시스터즈가 쿠버네티스를 도입한 이유를 반복설명합니다.

    • 동일한 인프라에서 동일한 구조로 배포할 수 있고
    • 쿠버네티스 오픈소스 생태계가 잘 마련되어 있다.

    동일한 인프라, 동일한 배포란 소리는 쿠버네티스가 구축된 환경이면 기존 게임 그대로 똑같이 서비스를 배포할 수 있다는 의미입니다. 물론 형상관리가 되어야 하는데, 데브시스터즈에서는 형상관리를 위해 gitops문화를 사용한다고 말합니다.

    그리고 쿠버네티스는 오케스트레이션 기능이 장애복구전략, auto-scaling전략에 매우 좋습니다. 서버 pod가 죽어도 쿠버네티스 감지해서 자동으로 다시 실행하므로 레거시로 설정했던 장애복구설정을 따로 안해도 됩니다.

    auto-scaling또한 yaml파일로 간단히 정의할 수 있으므로 효율성이 극대화됩니다.

    2번째 생태계 구성도 큰 이유라 생각합니다. 쿠버네티스를 제외하고 많은 오케스트레이션 도구가 있지만 커뮤니티가 거의 죽다시피 없습니다. 생태계가 안정적으로 운영되면서 "이런 기능이 없을까?"라는 것은 솔루션 또는 오픈소스로 공개되어 있습니다.

    2. 7년에 거친 쿠버네티스 R&D

    현재 게임 서비스 "쿠키런", "안녕! 용감한 쿠키들", "쿠키런 킹덤"의 대부분 컴퍼넌트가 쿠버네티스로 운영되고 있다고 합니다. 놀라운 것은 7년동안 끊임없는 연구..

    도입 초기에는 온프레미스에서 직접 쿠버네티스를 다뤘지만 최근에는 관리형 쿠버네티스 AKS를 사용한다고 합니다. 아마도 노드가 장애가 나면 복구시간이 어마어마 소요되기때문에 노드관리는 AWS에게 위임하고 비지니스 효율성을 증가하는 방법을 선택한 것 같습니다.

    3. 쿠버네티스 애드온 활용성!

    데브시스터즈가 영상에서 밝힌 쿠버네티스 애드온 사용갯수는 30개 이상입니다.

    데브시스터즈가 직접 구현해야 할 기능을 먼저 ① 쿠버네티스 애드온이 있는지 검색하고 ② 적절히 서비스에 맞게 가져다 쓴것으로 생각됩니다. 그만큼 서비스 운영에 필요한 기능이 엄청 많나 봅니다. 영상에서도 언급하지만 깊게 이해하면 장애분석때 도움이 되지만, 꼭 다 이해하지 않아도 된다고 설명합니다.

    발표영상에서는 애드온이 주제가 아니기때문에 어떤 것을 다 사용하는지는 설명하지 않았습니다. 하지만, 중간중간 게임 서비스 배포, 모니터링 등에 사용한 애드온을 잠깐잠깐 사용사례를 설명합니다.

    • 모니터링을 위한 prometheus operator를 사용

    • 네트워크 가시화를 위한 Istio, envoy, Jaeger 사용

     

    • 여러 클러스터 모니터링 관리를 위한 Thanoa 사용

    • 배포 자동화를 위한 argocd, spinnaker, terraform 사용

    3. 배포화 전략

    리소스 성격에 따라 사용하는 배포 도구가 다르다고 설명합니다. 그리고 모든 배포는 gitops문화를 채택했습니다.

    • immutable 리소스는 argocd사용(immutable: 변경불가 리소스가 아니라 한번 설정하면 가능한 변경하지 않을 리소스)
    • 배포가 복잡하거나 자주 변도잉 일어나면 spinnaker를 사용
    • aws에서 종속되어 있는 리소스는 terraform 사용

    gitops는 모든 리소스의 형상을 git에 기록하고, 배포할 때 배포도구가 git에 있는 것만 참고하여 배포를 진행하는 것을 말합니다. 다르게 말하면 배포된 모든 쿠버네티스 리소스는 git에 동기화되어 있습니다.

    장점은 git history만 보면 어떻게 변했는지 형상관리를 할 수 있지만, 단점은 gitops를 기업에서 사용하려면 모든 구성원이 변동사항을 git으로 관리해야 합니다. 한명이라도 git으로 관리안하고 로컬 파일 또는 kubectl edit, replace, patch등으로 수동 설정하면 git동기화가 깨집니다. gitops는 구성원 한명이라도 git을 사용못하면 도입시 단점이 더 많아지는 문화라고 생각합니다.

     

    이외에도 게임서버 인프라를 어떻게 구축했는지 공개하고 있어 게임 인프라에 관심있으신 분들은 매우 도움이 될것같습니다.

    4. 쿠버네티스에 데이터베이스 운영

    데브시스터즈는 100대 이상의 DB를 쿠버네티스에서 운영한다고 소개합니다. 반복되는 인프라 환경을 쿠버네티스를 이용해서 오히려 더 도움이 되었다고 합니다.

    사용사례와 더불어 쿠버네티스에 데이터베이스 운영을 주저하시는 분들을 위해 Q&A도 설명했습니다.

    반응형