본문

[Gitlab] 리뷰

GitLab 소개

GitLab은 Git 기반의 통합 DevOps 플랫폼으로, 소프트웨어 개발 전체 생명주기를 하나의 플랫폼에서 관리할 수 있는 솔루션입니다.

 

✅ 주요 기능

  1. 코드 관리
    • Git 저장소 호스팅 및 버전 관리
    • 브랜치, 머지 리퀘스트, 코드 리뷰 기능
    • 웹 UI와 Git CLI를 통한 다양한 접근 방식 지원
  2. 협업 도구
    • 이슈 트래킹 및 프로젝트 관리
    • 위키, 문서화 기능
    • 팀 협업을 위한 코멘트 및 알림 시스템
  3. CI/CD 파이프라인
    • 자동화된 빌드, 테스트, 배포
    • 다양한 환경으로의 배포 자동화
    • 파이프라인 시각화 및 모니터링
  4. 보안 및 컴플라이언스
    • 코드 스캐닝 및 보안 검사
    • 취약점 관리
    • 액세스 제어 및 권한 관리

 

✅ GitLab Container 구성요소

GitLab Container 내부:
├── Puma (웹서버)
├── Sidekiq (백그라운드 작업)
├── PostgreSQL (데이터베이스)
├── Redis (캐시)
├── Gitaly (Git 저장소 서비스)
├── GitLab Shell (Git CLI 처리)
├── Nginx (리버스 프록시)
└── 기타 지원 서비스들

 

GitLab Push 프로세스

 

✅ 웹 UI를 통한 코드 커밋

  1. 브라우저 → Puma (웹 요청)
  2. Puma → PostgreSQL (메타데이터 저장)
  3. Puma → Gitaly (Git 저장소에 커밋)
  4. Puma → Redis (후속 작업 큐잉)
  5. Sidekiq ← Redis (웹훅, 이메일 등 처리)

 

✅ CLI를 통한 Git Push

git push origin develop
  1. Git CLI → GitLab Shell (SSH/HTTP Git 요청)
  2. GitLab Shell → Gitaly (직접 Git 저장소 처리)
  3. Gitaly → PostgreSQL (커밋 메타데이터 저장)
  4. Gitaly → Redis (후속 작업 큐잉)
  5. Sidekiq ← Redis (CI/CD, 웹훅, 이메일 처리)

 

✅ 핵심 차이점

구분 웹 UI CLI Push

진입점 Puma (웹서버) GitLab Shell (Git 프로토콜)
Git 처리 Puma → Gitaly GitLab Shell → Gitaly
포트 80 (HTTP) 22 (SSH)
프로토콜 HTTP/HTTPS Git over SSH/HTTPS

 

GitLab 구성요소별 역할

  • Puma (웹 애플리케이션 서버)
    • 역할: 사용자의 웹 요청 처리
    • 담당: 로그인, 프로젝트 보기, 코드 브라우징, 웹 UI 모든 기능
  • Sidekiq (백그라운드 작업 처리)
    • 역할: 시간이 오래 걸리는 작업을 뒤에서 처리
    • 담당: 이메일 발송, CI/CD 파이프라인 실행, 저장소 백업, 통계 계산
  • PostgreSQL (데이터베이스)
    • 역할: 모든 데이터 저장 및 관리
    • 담당: 사용자 정보, 프로젝트 메타데이터, 이슈, 코멘트, 설정값
  • Redis (캐시 및 세션 저장소)
    • 역할: 빠른 임시 데이터 저장
    • 담당: 캐시(자주 사용하는 데이터 임시 보관), 세션(로그인 상태 유지), 큐(Sidekiq 작업 대기열 관리)

 

✅ 상호작용 예시

  1. 사용자가 코드 푸시
  2. Puma: 푸시 요청 받음
  3. PostgreSQL: 커밋 정보 저장
  4. Redis: 작업을 Sidekiq 큐에 추가
  5. Sidekiq: CI/CD 파이프라인 실행

요약:

  • 웹은 Puma 경유, CLI는 GitLab Shell 직행하여 둘 다 Gitaly에서 합류
  • Puma는 프론트엔드, Sidekiq은 백그라운드 작업
  • PostgreSQL은 데이터 저장소, Redis는 임시 보관함 역할

공유

댓글