무엇을 찾고 계신가요?
E-Book
게임 개발자를 위한 4가지 필수 DevOps 방식
Oct 31, 2023
큰 숫자 4가 있고 그 앞의 책상에 앉아 있는 직원을 그린 선화 일러스트

핫픽스로 인한 시간의 압박에서 벗어나 빠르게 반복 작업하고 릴리스하세요.

들어가는 말

릴리스를 몇 달 남기고 주 60시간씩 일하고 있나요? 일주일에도 몇 번씩 기적 같은 버그 수정을 위해 밤새도록 코드를 수정하거나, 말 그대로 릴리스 직전에 영감을 받아 기능을 추가하고 있지는 않나요?

이 업계는 계속해서 반복되는 시간의 압박으로 악명이 높습니다. 여러분은 그 엄청난 업무 강도를 즐기는 사람일 수도 있지만, 회계연도가 끝날 때까지 바쁜 업무에 대한 보상이 없다면 스스로에게 그 이유가 무엇인지질문해야 합니다.

출시를 앞두고 과도하게 몰린 업무 때문에 힘들어하던 핵심 개발자 중 한 명이 그만둬서 릴리스가 지연되었을 수도 있고, 밤을 새워 문제를 고쳤더니 오히려 새로운 문제가 생겨서 다시 밤을 새워야 하는 등의 연쇄 작용이 일어났을 수도 있습니다. 마지막 순간에 기능 테스트를 제대로 하지 않아서 프로젝트 전체에 크래시가 발생했을 수도 있습니다. 어떤 상황이든 한 가지 분명한 사실이 있습니다. 바로 이런 상황이 너무 많이 발생한다는 것이죠.

이 전략이 그만큼의 가치가 있다고 느껴지지 않는다면, 헌신적인 노력에도 불구하고 고객이 원하는 것을 제공하지 못하고 있다는 뜻입니다. 셰이더 스크립팅, 물 애니메이션, 레벨 구상, CDN 설정 등은 게임 커뮤니티가 추구하는 가치를 성공적으로 창출하는 데 필요한 여러 요소의 일부일 뿐입니다. 수익성을 갖춘 프로덕션으로 도약하기 위해 꼭 필요한 것은 팬들에게 훌륭한 게임을 제공하는 방향으로만 역량을 집중할 수 있는 시스템과 프로세스를 적용하는 것입니다.

스튜디오가 막바지에 몰아서 작업을 하는 기존의 체계에서 벗어나 생산적이고 효과적인 워크플로를 구축하려면 스마트한 DevOps 방식을 채택해야 합니다. 목표는 팀의 가장 소중한 자원인 시간을 확보하여 팀원들이 가장 중요한 업무에 집중하도록 돕는 것입니다.

시간의 압박으로부터 자유로워지면 실제로 얼마나 많은 시간을 확보할 수 있을까요? Electronic Arts의 테크니컬 디렉터 조시 닉스도르프는 연 단위의 시간을 추가로 확보할 수 있다고 말합니다. “저희 팀에서 중요하게 살펴보는 지표 중 하나는 연 단위로 얼마나 많은 업무량을 절감했는가입니다. DevOps 방식을 도입하기 시작하면서 업무량을 기하급수적으로 줄일 수 있었는데요. 처음 DevOps를 도입했을 때는 약 20년 정도의 시간을 줄였다면 지금은 그렇게 단축한 시간이 1,000년을 넘어섰습니다.”

더 능률적이고 의식적으로 주의를 기울여 개발 프로세스를 구축하면 플레이어에게 더 나은 경험을 더 자주 제공할 수 있습니다. 이 전자책에서는 게임 개발 환경에 특화된 몇 가지 기본 DevOps 원칙과 프로세스를 소개하고 스튜디오의 기술 스택을 원활하게 운영하기 위한 필수 DevOps 툴을 다룹니다.

DevOps를 사용하는 이유

게임 개발은 새로운 세대의 콘솔이 출시될 때마다 점점 더 복잡해집니다. 플레이어는 점점 더 나은 그래픽스와 더 잦은 출시 후 업데이트, 뛰어난 고객 지원을 기대합니다. 출시 시점에 버그로 가득한 게임을 복구하는 것은 사실상 불가능에 가까운 일입니다. Xsolla의 회장 크리스 휴이시는 GamesIndustry.biz 인터뷰 “성공한 게임을 기반으로 성장할 수는 있지만, 실패한 게임의 잿더미 위에서는 성장할 수 없습니다”라고 말했습니다.

플레이어 가치를 극대화하려면 프로세스와 툴을 검토한 다음 어떤 부분을 최적화할 수 있는지 파악해야 합니다. 지금의 워크플로로 앞으로도 게임을 지원할 수 있는지, 다음 프로젝트에도 적용할 수 있는지 따져 보세요.

스튜디오 팀은 개발자와 아티스트가 점점 더 어려워지는 작업을 어떻게 수행할 수 있는지에 집중하는 경향이 있습니다. 하지만 그러다 보면 프로세스를 파악하지 못하는 경우가 생길 수 있습니다. 예를 들어 프로그래머가 DevOps 프로세스에 따라 작업을 멈추고 결과물을 더 자주 확인하면 버그 수정에 소요되는 시간을 줄일 수 있습니다.

이러한 프로세스를 이해하지 못하면 스튜디오는 다음과 같은 어려움을 겪을 수밖에 없습니다.

  • 항상 시간 압박을 느끼며 과로에 시달리는 개발자
  • 릴리스마다 반복해서 생기는 버그와 부정적인 피드백
  • 혼란스러운 개발 계획으로 인해 스튜디오에 만연한 좌절감
  • 전반적으로 낭비되는 팀원들의 노력

해결책은 개발 주기를 최적화하고 단축하는 DevOps 방식과 툴을 도입하여 일관되게 작동하는 고성능 게임을 제작하는 것입니다. 이에 따른 이점은 너무 많아 전부 나열할 수 없지만, 여기 몇 가지만 소개합니다.

  • 프로세스 자동화를 통해 반복적인 작업으로부터 개발자 해방
  • 사후 대응이 아닌 사전 예방적 의사 결정
  • 플레이어에게 더 높은 품질의 콘텐츠를 제공하는 CI(지속적 통합) 및 배포
  • 과로, 스트레스, 번아웃 감소

그렇다면 회계연도 말의 성과는 어떨까요? 상상 이상의 결과로 직원뿐 아니라 고객과 회계사까지도 모두 더 만족스러워할 것입니다.

4가지 필수 방식

DevOps 엔지니어가 없어도 개발 환경에서 DevOps와 유사한 방식을 도입하면 그 이점을 누릴 수 있습니다. 1인 개발자도 이 4가지 필수 DevOps 방식을 이해하는 것만으로 생산성을 높일 수 있습니다.

  1. 강력한 버전 관리: 코드 변경 사항 백업은 거의 모든 프로그래머에게 눈을 깜빡이는 것만큼이나 자연스러운 일입니다. 간단한 커밋만으로 작업 내용을 안전하게 보호하고, 덮어쓰기나 손실로부터 데이터를 지킬 수 있습니다. 하지만 게임을 개발할 때는 여러 곳에 분산된 아티스트나 다른 직원이 제작하는 훨씬 더 다양하고 방대한 에셋을 관리하고 추적해야 합니다. 이를 위해서는 강력한 기능을 갖춘 완전한 버전 관리 시스템 도입이 필요합니다.
  2. 빌드 자동화(CI/CD): CI(지속적 통합)는 하나 이상의 소스에서 중앙 저장소로 작업을 자동으로 병합하는 것을 말하며, CD(지속적 배포)는 개발 중에 자동으로 새 빌드를 생성하는 것을 말합니다. 이러한 자동화된 CI/CD 파이프라인 구현은 애자일 방법론에서 확립된 베스트 프랙티스로, 일관되고 자동화된 방식으로 게임을 빌드, 패키징, 테스트할 수 있습니다.
  3. 아티팩트 관리: 아티팩트에는 버전 관리 시스템으로 관리되는 코드나 에셋 외에도 기본 이미지, 소프트웨어 패키지, Helm 차트, 메타데이터, 기타 부수적이지만 핵심적인 리소스들로 구성된 종속 관계가 매우 다양하게 포함되어 있습니다. 아티팩트 관리자는 앱이나 게임을 빌드하거나 배포하는 데 필요한 모든 요소를 저장하는 중앙 저장소를 유지 관리하여 버전 관리를 보완합니다.
  4. 빈번한 자동 테스트: DevOps 방식은 기존의 개발자/QA 사일로를 무너뜨립니다. 이를테면 개발자가 코드를 더 작은 단위로 작성하고 자체 테스트를 수행한 후에 해당 코드를 빌드하도록 메인 코드베이스에 코드를 푸시할 수 있습니다. 테스트는 자동화하여 지속적으로 수행하는 것이 이상적입니다. 이렇게 하면 릴리스할 항목을 정제하면서 QA 팀이 게임 성능을 더 세밀하게 분석할 수 있습니다.
큰 가방을 들고 커다란 방을 걸어가는 남자

1: 강력한 버전 관리

병합 충돌 및 작업 손실 최소화

아티스트와 프로그래머가 끊임없이 부딪히거나, 병합 충돌로 인해 작업이 중복되거나 손실되는 경우는 보통 버전 관리가 그 원인입니다. 게임 개발 환경에서 버전 관리 베스트 프랙티스를 적용하려면 고유한 기능을 갖춘 시스템이 필요합니다.

실제로 코드 파일은 길이와 상관없이 그 크기는 크지 않습니다. 그러나 차세대 콘솔 및 PC 게임의 그래픽스는 상대적으로 용량이 크기 때문에 네트워크 대역폭이 매우 중요합니다. 중앙 저장소에서 에셋을 풀/푸시하는 작업 역시 다른 개발 에셋과 마찬가지로 빠르고 간단해야 합니다.

대부분의 버전 관리 솔루션에서 가장 큰 문제점은 무엇일까요? 바로 사용성입니다.

프로그래머는 일반적으로 커맨드 라인 인터페이스와 복잡한 버전 관리 브랜칭 기술에 익숙하지만, 아티스트는 단순히 저장 버튼을 여러 번 누르는 것조차 힘들어하는 경우도 있습니다. 하지만 아티스트의 그림과 애니메이션은 코드베이스만큼이나 최종 패키지에 중요한 역할을 합니다.

버전 관리 시스템 스크린샷

게임 개발 버전 관리 시스템은 개발자에게 복잡하고 세부적인 옵션을 제공하는 동시에, 기술 수준이 낮은 사용자도 쉽게 사용할 수 있어야 합니다. 그렇지 않으면 엔지니어가 시스템 작동 방식을 반복해서 설명하느라 업무 시간을 소비하게 됩니다.

직관적인 그래픽 UI를 사용하면 여러 플랫폼에 맞춰 제작된 다양한 레벨과 버전으로 동시에 작업하는 프로그래머, 아티스트, 디자이너가 복잡한 브랜칭과 병합 작업을 훨씬 쉽게 제어할 수 있습니다.

추적 가능성이란 에셋이 언제 어디에서 수정되고 어느 브랜치에서 사용되었는지 정확히 확인할 수 있음을 뜻하며, QA 팀에게도 중요한 기능입니다. 또한 모든 저장소, 브랜치, 레이블, 경로에서 적절한 보안이 유지되어야 합니다.

중세 시대 느낌의 방

2: 빌드 자동화(CI/CD)

복잡한 파이프라인과 툴을 관리하는 데 드는 시간을 줄이고 제작에 더 많은 시간 투자

모든 DevOps 방식의 일관된 기조는 작업을 더 작은 단위로 세분화하는 것입니다. 작업 단위가 작을수록 쉽게 처리하고, 간단하게 테스트하고, 빠르게 최적화할 수 있습니다. 또한 난관에 부딪히거나 개발 방향을 바꾸기로 했을 때 낭비되는 리소스를 최소화할 수 있습니다.

게임 개발에서는 변경 중인 내용을 다른 사람의 변경 사항과 자주 병합하고 새로운 빌드를 만드는 것이 여기에 해당합니다. 수동으로 빌드를 생성하는 과정이 그 자체로 복잡하지는 않지만, 다른 작업에 방해가 되거나 소요 시간이 갑자기 늘어날 수 있습니다. 다른 대부분의 DevOps 방식과 마찬가지로 핵심은 자동화입니다.

자동화된 빌드 파이프라인은 버전 관리 시스템과 연결되어 변경 사항을 모니터링하고 커밋마다 또는 변경 사항이 특정 임곗값에 도달할 때마다 새 빌드를 생성합니다. 다시 말해서 개발자는 문제가 걷잡을 수 없이 커지기 전에 결점을 발견하고 수정할 수 있습니다. 또한 코드와 에셋을 더 안정적이고 바로 릴리스할 수 있는 상태로 유지할 수 있습니다. 어떤 이유로든 변경 사항을 롤백해야 하는 경우, 마지막으로 성공한 빌드로 돌아가면 됩니다. 다른 팀에서 빌드에 쉽게 액세스하여 업데이트하고 적시에 피드백을 제공할 수도 있습니다.

팀의 문화 측면에서 보자면, 자동화를 구축하는 DevOps 방식을 채택하면 팀에서 새로운 기능을 개발하는 단계로 넘어가기 전에 기존의 작업을 완료하는 것을 우선순위로 삼게 됩니다. 호흡이 긴 작업을 하다가 지쳐 쓰러지기보다는 작은 성공을 바탕으로 한 걸음씩 나아가는 방식입니다. 이 과정을 통해 확신이 생기고, 제대로 마무리되지 않은 코드로 인해 다른 사람의 작업을 방해할 가능성도 줄어듭니다.

멀리서 바라본 거대한 미래형 도시

3: 아티팩트 관리

필요한 곳에 게임 저장

CI/CD 시스템이 새 빌드를 만들면 일반적으로 빌드를 아티팩트 저장소로 푸시하고, 이 저장소에서 아티팩트 관리자가 모든 종속 관계 및 기타 필요한 구성 요소를 등록합니다. 이러한 ‘기타 필요 구성 요소’를 오케스트레이션하는 것이 바로 게임 개발 DevOps에서 아티팩트 관리가 중요한 이유입니다.

아티팩트는 사내 개발자, 계약직 아티스트, 수많은 오픈 소스 코드용 공용 저장소 등 모든 종류의 소스에서 생성될 수 있습니다. 아티팩트 관리자는 모든 중요 콘텐츠가 업로드되고 보관되도록 보장하면서 해당 콘텐츠의 버전과 승인을 확인하고 보안 문제를 검사하는 등의 작업을 수행합니다. 오류는 다양한 지점에서 발생할 수 있습니다.

물론 훌륭한 아티팩트 관리 시스템에는 몇 가지 최소 요구 사항이 있습니다. 라이선스 부여를 기반으로 버전 관리와 필터링을 지원하기 위해 메타데이터를 관리할 수 있어야 합니다. 또한 개발자가 어떤 콘텐츠를 얼마나 오래 보관할지 설정할 수 있어야 합니다. 다운타임을 방지하기 위해 고가용성 시스템으로 구축하는 것도 중요합니다.

단순히 일부 S3 버킷을 프로젝트 저장소로 지정하는 것과 비교하면, 실제 아티팩트 관리자 구현에는 상당한 이점이 있습니다. 즉, 모든 프로젝트 리소스에 대한 공통 라이브러리를 유지하면 특히 아티스트와 엔지니어 간의 협업을 개선할 수 있습니다. 모든 리소스를 등록하고 추적할 수 있어서 예측과 반복이 모두 가능한 빌드를 만들 수 있습니다. 또한 팀원 모두가 배포 관리에서 벗어나 코딩, 애니메이션, 디자인 등 자신의 전문 분야에 집중할 수 있습니다.

빛이 쏟아지는 거대한 문 사이로 걸어가는 남자

4: 빈번한 자동 테스트

피드백에 대응하고 민첩하게 작업

QA를 위한 효과적인 DevOps 방식을 형성하는 두 가지 원칙은 다음과 같습니다.

  1. 개발 초기의 잦은 테스트
  2. QA 워크플로 자동화

돌다리도 두드려 보고 건너라는 말이 있습니다. 다음 단계로 넘어가기 전에 먼저 필요한 작업을 마치고 시험해 보아야 한다는 뜻입니다. 개발자도 마찬가지로 짧은 단위로 코드 블록을 작성하고 다음 부분을 작성하기 전에 다시 확인해야 합니다. 개발자와 QA의 경계가 모호해지는 것입니다.

개발자가 코드를 자주 확인하면 빌드에 대해 자동화된 테스트를 진행할 때도 유용합니다. 컴파일러가 새 빌드를 저장소에 푸시할 때마다 테스트가 이루어지기 때문입니다. 자동화된 테스트를 지속적으로 실행하면 개발이 끝난 이후에도 남아 있는 버그로 인해 프로덕션 코드에 문제가 발생할 가능성을 대폭 낮출 수 있습니다. 또한 버그가 남아 있더라도 그리 치명적이지 않을 것입니다.

버그를 완전히 박멸할 수는 없습니다. 자동화된 QA 테스트와 더불어 테스트 프로토콜뿐 아니라 게임 출시 후에도 게임이 실행되는 디바이스에서 자동으로 리포트를 받을 수 있어야 합니다. 또한 QA 또는 사용자 설치에서 이상 징후가 발견되는 즉시 시스템이 특정 크래시와 예외 데이터를 리포트하여 더 빠르게 수정할 수 있어야 합니다. 이렇게 하면 최종 사용자가 발견하지 못한 대부분의 문제를 찾아내고 눈에 띄는 결함으로 드러나기 전에 고칠 수 있습니다.

게임 개발 환경에 적용되는 모든 DevOps 방식 중에서도 가장 중요한 것이 바로 빈번한 자동 테스트입니다. 플레이어는 정기적으로 새로운 콘텐츠를 원하고, 스튜디오는 새롭고 획기적인 기능을 출시일에 맞춰 내놓아야 한다는 엄청난 압박을 받습니다. 주요 인플루언서 한 명이라도 좋지 않은 경험을 하게 되면 그 여파는 치명적일 수 있습니다. 따라서 올바른 QA가 반드시 필요합니다.

게임 스튜디오의 성공 사례

DevOps와 애자일 방식은 사실 대부분 상식에 가까운 업무 습관입니다. 하지만 복잡한 코드, 수천 개의 에셋, 까다로운 성능 제약이 있는 게임을 제작하는 스튜디오는 세심한 소스 관리, CI(지속적 통합) 및 배포, 안전한 아티팩트 관리, 빈번한 자동 테스트를 보장하는 전용 DevOps 툴을 사용해야 합니다.

개발 플랫폼과 긴밀하게 연동되는 DevOps 툴을 사용하면 그 효과가 배가됩니다. 수천 명의 Unity 크리에이터가 워크플로를 개선하고 멋진 게임을 제작하기 위해 점점 더 풍부해지는 Unity의 DevOps 툴 라이브러리를 사용하고 있습니다. 그중 몇 가지 사례를 아래에서 살펴보세요.

스튜디오: Alta

유니티가 Twitch 채널에서 제공하는 Creator Spotlight 시리즈에서, Alta는 Unity Version Control(이전 명칭: Plastic SCM)을 사용하여 릴리스 주기를 단축하고 늘어나는 대규모 팬층에 정기적인 콘텐츠 업데이트를 제공하는 방법을 공유했습니다. Alta의 게임 디렉터 보라미 운은 “소스 관리에 Plastic SCM을 사용한 덕분에 다양한 버전의 프로젝트 브랜치를 만들 수 있어요. 모든 기능에 새 브랜치를 만들고 각 기능 내에서 위험할 수 있는 모든 작업은 하위 브랜치를 만들어서 진행합니다”라고 말합니다.

만화 같은 풍경의 오래된 마을을 배경으로 서 있는 남녀 캐릭터
A Township Tale, Alta 제작

스튜디오: KO_OP

KO_OP는 여러 명이 공동으로 소유한 몬트리올의 게임 스튜디오입니다. KO_OP는 최신 프로젝트인 Goodbye Volcano High를 작업하면서 아티스트와 엔지니어 간의 장벽을 제거할 수 있는 버전 관리 솔루션을 찾고 있었습니다. KO_OP의 개발자 제이콥 블롬스타인은 Unity 활용 사례에서 “Gluon[Unity Version Control의 아티스트 워크플로]은 정말 놀랍습니다”라고 밝혔습니다. “아티스트가 브랜치나 병합에 대해 전혀 알지 못해도 .psd 파일만 추가하면 버전 관리가 투명하게 이루어졌습니다.”

기타를 든 새처럼 생긴 여성 생명체
Goodbye Volcano High, KO_OP 제작

스튜디오: Sycoforge

CEO 미켈라 리멘스베르거는 유니티 블로그에 실린 인터뷰에서, Sycoforge와 커뮤니티가 서로 협력하여 야심작인 Return to Nangrim 을 만드는 과정에서 Unity Version Control이 어떤 도움을 주었는지 설명했습니다. “기술적인 관점에서 볼 때 Unity Version Control은 협업에 큰 도움이 되었습니다. 다양한 버전 관리 툴을 사용해 봤지만, 게임 개발사의 요구 사항에 딱 맞는 툴이 없다는 것을 금방 깨달았습니다. 몇몇 버전 관리 툴은 프로그래머에게는 편리할지 몰라도 아티스트가 사용하려면 고생을 많이 해야 했죠. Unity Version Control 덕분에 개발 환경을 말 그대로 뒤바꿀 수 있었습니다. 프로그래머와 프로그래머가 아닌 직원 모두 쉽게 사용할 수 있었으니까요.”

거대한 중세 시대 느낌의 방
Return to Nangrim, Sycoforge 제작

스튜디오: Cryptic Studios

Perfect World의 계열사인 Cryptic Studios는 Backtrace를 사용하여 버그와 오류 추적을 자동화합니다. Cryptic Studios의 시니어 프로듀서 브렌트 램은 올해 발간된 유니티 전자책 사례 연구에서 “Backtrace는 크래시 데이터를 탐색하고 사용하는 방식을 변화시켰습니다”라고 말했습니다. “누구나 편안하게 쿼리를 실행하고 게임의 상태를 파악할 수 있게 됐죠.”

세 가지 포즈로 총을 들고 있는 여성 플레이어
Quantum League, Nimble Giant Entertainment 제작

지금 시작해 보세요

Unity DevOps 솔루션으로 워크플로 속도를 높이고 DevOps 툴체인을 구축하세요. 더 효율적인 방식으로 게임을 제작하여 계획한 시기에 원하는 품질로 시장에 출시할 수 있습니다. 솔루션에 대해서는 여기에서 더 자세히 알아보세요.