본문 바로가기
- CS/협업

[협업] CI/CD Pipeline 파이프라인

by david_동근 2025. 6. 5.
※ 경험 기반이라기 보단, 개인적으로 조사한 결과를 바탕으로, '게임 개발'에 맵핑하여 정리한 내용이기에,
실제 회사마다 현업에서 사용하는 방법과 조금 다르거나, 다소 불확실할 수 있다는 점을 주의하시길 바랍니다.

 

개발하는 과정에서, 버그 없는 배포와 빠른 테스트, 그리고

지속적인 업데이트등을 위해 정교하고 체계적인 과정이 필요합니다.

 


 

게임 개발 DevOps

개발팀과 운영팀 간의 커뮤니케이션(협업)의 장벽을 해소하기 위해 DevOps가 있습니다.

제가 알고 있는 바로는,
코드를 자동으로 빌드하고, 테스트하고, (CI/CD)서버에 배포한 뒤,
문제를 실시간으로 감지하고 빠르게 대응하는 흐름을 DevOps 라고 합니다.

 

게임 개발 간단한 흐름

간단하게 어떤 흐름으로 업무가 이루어질지 아이디어를 떠올려 보겠습니다.

1. 기획 & 협업 환경 구성
    - 협업 기획 문서 : 기획서 (기술이나 이거저거 써있겠죵?)
    - Issue 관리 : 작업 티켓, 스프린트 계획, 버그 관리, 기간 관리
2. 개발
    - 코딩 + 작업 : (Client)게임 로직이나 그래픽, (Server)API나 서버 구성
    - 코드 리뷰 & 저장소 : 깃헙 풀리퀘(PR)나 리뷰, 깃 or 빗버켓 같은 형상 관리
3. CI
    - 빌드 자동화, 테스트, 배포 연결 : 빌드를 관리할 서버 (젠킨스, 깃랩CI 등...)
    - 단위 test : 로직 단위 테스트 수행 후 greenLight여야, merge가 가능 (+서버 API 동작 검증도 필요)
4. Deploy ( & 인프라)
    - 서버 환경 구성 자동화 : 일명 컨테이너화가 필요, Docker 같은...
    - Storage & 오케스트레이션 : 데이터 저장할 도커헙이나 서버 운영이나 확장에 필요한 Kubernetes 등...
5. 운영 및 관리, 모니터링 (1번으로 연결)
    - 알림 : Slack 이나 기타 등등... (디코나 MS팀즈도 쓰려나?)
    - 모니터링 : Grafana 등으로 에러 로그, 상태 등등
    - 기타 분석 : Unity/Google Analytics 나 ELKstack 등

CI/CD Pipeline

게임을 개발하는 회사마다 다 달라용!

 

위와 같이 정리해봤는데, 회사마다 그리고 어떤 게임을 개발하느냐에 따라 조금씩 다를 것입니다.

아래 단계별로 다시 상세하게 정리해 보았습니다.

 

1. 협업의 시작

은 가장 먼저 업무 기획과 커뮤니케이션이겠습니다.

기획자(PM/PO/PD), 프로그래머, 아티스트, 디자이너, QA, 마케팅 및 운영자, DevOps 등...

 

각자 분담하게 될 업무를 준비하고, 협업 도구(Jira Software, Confluence)를 통해

이슈(작업 단위)를 등록~계획 등을 정리하며 소통을 하게 됩니다.

 

2. 개발 시작

개발자들이 할당 받은 작업으로 코딩을 시작하게 됩니다.

게임 클라이언트 개발자라면 Unity, Unreal 등의 엔진 (C++ 자체 엔진일 사용할 수도 있죵)과

Visual Studio 나 Rider 등의 IDE를 통해 개발하게 됩니다.

 

개발자들은 각자 자신의 로컬에서 작업을 합니다만,

Git 을 통해 코드 로직을 버전별로 관리하며 공동 저장소에 push 하는게 매우 중요합니다.

GitHub 또는 BitBucket 에다가 코드 저장소를 만들어 협업을 하게 됩니다.

 

코드가 작성되면 풀리퀘(PR), 리뷰를 거쳐 git push 를 하게됩니다.

 

3. Jenkins / 빌드 자동화

Jenkins 는 CI 도구로써, 공동 저장소에 push 된 사항을 감지합니다.

git pull 로 GitHub 에서 최신(수정) 코드를 가져오며,

정해진 파이프라인 스크립트에 따라 Build, Test, Analyze 를 자동을 수햅합니다.

여기서 자동화의 의미는...
개발자가 일일이 수동으로 Build/Test 할 수고를 대신하고,
Test 실패 시, Slack 등으로 자동으로 notify 하며,
Build 성공 시, 다음 단계 (Docker 컨테이너 생성 등...) 이동을 뜻 합니다.
git pull
sh nunit
newman run
mvn sonar:sonar
docker build

 

위 코드는 Jenkins 명령어로 대충 흐름을 보자면,

git pull : push 된 코드 받아오기

sh nunit : sh 는 shell 명령어이고, nunit은 테스트 실행 스크립트 이름

newman run : newman 은 Postman (API)테스트 시나리오를 CLI로 실행하도록 하는 도구

mvn sonar:sonar : Maven으로 SonarQube 분석을 실행

docker build : Docker 서버 Image(image : 실행 가능한 앱 전체를 뜻 함) 를 생성

 

4. 테스트 자동화

게임 Quality 를 지키는 테스트 도구들이 몇개 있습니다.

구글테스트 : C++, NUnit : C#

NUnit

Unity 드가면 'Unity Test Framework' 라는 패키지가 있는데, NUnit 기반이라고 합니다.

유니티 에디터에서 Test Runner 창으로도 가능하며, CLI 로 Unity -runTests 명령어가 가능합니다.

혹은 Jenkins 에서 NUnit 테스트가 필요하다면,

Unity.exe -runTests -testPlatform EditMode -projectPath ./myProject

 

로 결과 리포트(.xml 파일일 거에용) 로 결과를 표시하는 것도 가능하다고 들었습니다...(ㅎㅎ)

Postman

REST API 테스트 도구로써, 게임 서버가 제공하는 API 들을 자동으로 호출하며 검증합니다.

위에서 보여드린 예시 처럼 CLI 로 newman 으로 실행 가능하며, 서버가 정상적으로 작동하는지 테스트합니다.

SonarQube

소스 코드 quality 분석 도구로써, 잠재적 버그나 각종 예외(NullPointerException 같은 거) 뿐만 아니라,

복잡도나 코드 스타일 같은 것도 미리 Refactoring 할 수 있도록 도움을 준다고 합니다.

 

5. Docker 컨테이너화 & Kubernetes

서버 기반 게임이면 이미 표준이라고 보는 듯 합니다.

예를 들어... 멀티플레이 MMO 나 룸기반서버, PvP 매치메이킹 등의 서버

혹은 로그인, 랭킹이나 채팅 등 백엔드 API 서버 들을 Docker 로 컨테이너화 하여 관리를 합니다.

Kubernetes 는 자동화된 대규모 서비스 운영을 위한 도구로, 큰 규모의 게임 회사들이 사용하나 봅니다.

 

Jenkins 에서 테스트를 통과한 코드가 준비가 되었다면,

docker build (게임 서버 코드를 docker Image로 빌드),

docker push (그 Image를 DockerHub 나 Nexus 같은 저장소에 올려야 해용)

합니다.

 

저장된 Image를 Kubernetes 에 배포하기 위해,

kubectl apply -f deployment.yaml

 

kubectl 로 클러스터에 배포를 합니다.

유저 수가 많아지면 서버 수를 자동으로 증가 시키는 Autoscaling, 게임 서버를 자동으로 여러개의 pod으로 띄우며,

서버가 죽으면 자동으로 재시작합니다.

 

6. Notification & Dashboard

Jenkins 에서 위 과정이 끝나며 Slack 으로 노티피케이션합니다. (다른 걸로도 가능해용!)

Grafana + Prometheus 로 서버 CPU나 메모리, 트래픽 모니터링을 하며,

Kibana (ELK) 로 로그 분석 Jenkins Dashboard로 빌드/배포 내역 확인이 가능합니다.

 


 

 

 

여기까지 직접 찾아보고 조사하며 자문하고... 정리해봤는데,

실제 게임 개발 회사는 사by사 다를 수 있기 때문에...

참고용으로만 봐주시길 바라용! >.<

또 뭔가 이상하거나 잘 못된 정보가 있으면 답글로 알려주시면 감사하겠습니당~!

그럼 좋은 하루 되세요~ ♪(๑ᴖ◡ᴖ๑)♪

'- CS > 협업' 카테고리의 다른 글

[CS] 버전 관리 Version / revision / source control  (8) 2025.06.09
[협업] CI / CD  (1) 2025.06.03
[Issue Tracker] Jira 지라 협업툴  (0) 2025.05.31