[실무 설계와 판단]

형상 관리와 소스 관리, 그리고 CI까지

everydeveloper 2025. 12. 26. 11:42

1. 왜 형상 관리 시스템을 다시 정리했는가

개발 조직에서 형상 관리(Source / Configuration Management)
단순히 “코드를 저장하는 도구”가 아니다.

  • 협업 방식
  • 배포 전략
  • 장애 대응
  • 보안 정책
  • 비용 구조

까지 모두 연결된다.

이 글은
GitHub / GitLab / Bitbucket을 실제 운영 관점에서 비교하고,
Jenkins 기반 CI 연동까지 포함해 정리한 실무 기준 기록
이다.

특정 회사나 프로젝트가 아니라,
일반적인 개발 조직에서 충분히 겪을 수 있는 선택지를 기준으로 정리했다.


2. 형상 관리 vs 소스 관리

먼저 개념부터 짚고 간다.

  • 소스 관리(Source Control)
    → 코드의 버전 관리 (Git, SVN 등)
  • 형상 관리(Configuration Management)
    → 코드 + 설정 + 빌드 결과 + 배포 이력까지 포함한 관리 개념

즉,

GitHub/GitLab/Bitbucket은
“소스 관리 도구이면서 형상 관리의 중심 축”

이라고 볼 수 있다.


3. GitHub (SaaS) 정리

3.1 특징

  • 퍼블릭/프라이빗 리포지토리 무제한
  • 직관적인 UI
  • GitHub Actions 기반 CI/CD
  • 오픈소스 생태계 압도적

3.2 무료 플랜 기준

  • 리포지토리 수 제한 없음
  • 협업 기능 기본 제공
  • GitHub Actions 사용 가능
    • 퍼블릭: 사실상 무제한
    • 프라이빗: 월 제한 시간 존재

3.3 장점

  • 진입 장벽 낮음
  • 플러그인·예제·문서 풍부
  • 외부 서비스 연동 쉬움
  • 클라우드 CI/CD 구축이 매우 빠름

3.4 단점 / 한계

  • 고급 DevOps 기능은 상대적으로 제한적
  • 조직 단위 세밀한 통제는 유료 플랜 필요
  • 대용량 파일 관리에는 LFS 필수

3.5 이런 팀에 적합

  • 소규모~중규모 팀
  • 빠른 협업 시작이 필요한 경우
  • 오픈소스 또는 외부 공개 프로젝트

4. GitLab SaaS 정리

4.1 특징

  • “DevOps 올인원 플랫폼” 성격
  • 이슈, 보드, CI/CD, 배포까지 통합
  • SaaS → 설치형(Self-Hosted) 전환 가능

4.2 무료 플랜 기준

  • 리포지토리 무제한
  • CI/CD 월 400분 제공
  • 기본 DevOps 기능 사용 가능

4.3 장점

  • CI/CD 통합도가 매우 높음
  • 프로젝트 관리 + 코드 관리 일체화
  • 자체 Runner 구성 가능 (비용 제어)

4.4 단점 / 한계

  • UI/UX는 GitHub보다 무거운 편
  • 유료 플랜 비용이 높음
  • 러닝 커브 존재

4.5 이런 팀에 적합

  • CI/CD와 프로젝트 관리를 강하게 묶고 싶은 팀
  • 향후 온프레미스 전환 가능성 있는 조직
  • DevOps 성숙도가 어느 정도 있는 팀

5. Bitbucket (SaaS) 정리

5.1 특징

  • Atlassian 생태계(Jira, Confluence)와 강력한 통합
  • 소규모 팀에 초점
  • Bitbucket Pipelines 제공

5.2 무료 플랜 기준

  • 최대 5명 사용자
  • 프라이빗 리포지토리 무제한
  • CI/CD 50분/월

5.3 장점

  • Jira 연동 시 이슈 트래킹 매우 편리
  • 팀 단위 작업 흐름 명확
  • 권한 관리 비교적 직관적

5.4 단점 / 한계

  • CI/CD 무료 제공 시간이 매우 적음
  • 대규모 팀에는 비용 부담 증가
  • 레포지토리 크기 제한이 비교적 명확

5.5 이런 팀에 적합

  • Jira 기반 협업이 중심인 팀
  • 소규모 조직
  • 복잡한 CI/CD가 필요 없는 경우

6. 소스 관리 시스템 실무 제약 정리

6.1 리포지토리 크기

  • GitHub:
    • 단일 파일 100MB 초과 푸시 차단
    • 권장 레포 크기 ~5GB
  • GitLab:
    • 무료 플랜 기준 총 10GB
    • 초과 시 비용 발생
  • Bitbucket:
    • 개별 레포 2GB 권장
    • 4GB 초과 시 푸시 제한

👉 대용량 바이너리는 반드시 LFS 사용


6.2 사용자 수 제한

  • GitHub: 명시적 제한 없음
  • GitLab: 무료 플랜 최대 5명
  • Bitbucket: 무료 플랜 최대 5명 (초과 시 읽기 전용)

6.3 실무적 결론

소스 관리 도구 선택은
“기능”보다 팀 규모 + 협업 방식 + CI 전략이 핵심이다.


7. Jenkins + GitHub 연동 정리

클라우드 CI가 아닌,
자체 CI 서버(Jenkins)를 운영하는 경우 가장 흔한 연동 방식이다.


7.1 연동 개요

  1. GitHub에서 Personal Access Token 발급
  2. Jenkins에 Credential 등록
  3. GitHub Repository에 Webhook 설정
  4. Jenkins Job/Pipeline 구성
  5. Push / PR 이벤트로 자동 빌드

7.2 핵심 설정 포인트

GitHub Token 권한

  • repository 접근
  • webhook 관리 권한

Webhook 설정

  • Payload URL:
    Jenkins URL + /github-webhook/
  • Content-Type: application/json
  • Trigger:
    • Push
    • Pull Request

Jenkins 설정

  • GitHub Integration Plugin
  • Webhook Trigger Plugin
  • Pipeline Script from SCM

7.3 운영 시 주의사항

  • Jenkins 포트 방화벽 오픈
  • HTTPS 적용
  • Reverse Proxy(Nginx) 권장
  • 인증 정보 노출 주의

8. 실무에서의 선택 기준 정리

상황추천
빠른 협업, 단순 CI GitHub
DevOps 통합, 확장 GitLab
Jira 중심 협업 Bitbucket
내부 CI 서버 필요 Jenkins 연동

9. 마무리

형상 관리 시스템은
“유행”이나 “회사 이름”으로 선택할 문제가 아니다.

  • 팀 규모는?
  • CI/CD를 얼마나 자동화할 것인가?
  • 클라우드 의존도를 어느 정도로 가져갈 것인가?
  • 보안·권한 통제가 얼마나 필요한가?

이 질문에 답이 나오면
도구 선택은 자연스럽게 따라온다.

이 글은
그 판단을 돕기 위한 실무 기준 정리 기록이다.


 
※ 본 글은 일반적인 개발 조직의 형상·소스 관리 경험을 정리한 기술 기록이며, 특정 회사·프로젝트의 내부 정보를 포함하지 않습니다.