본문
[Gitlab] 리뷰
프로그래밍/CICD 2025. 12. 18. 20:49
GitLab 소개
GitLab은 Git 기반의 통합 DevOps 플랫폼으로, 소프트웨어 개발 전체 생명주기를 하나의 플랫폼에서 관리할 수 있는 솔루션입니다.
✅ 주요 기능
- 코드 관리
- Git 저장소 호스팅 및 버전 관리
- 브랜치, 머지 리퀘스트, 코드 리뷰 기능
- 웹 UI와 Git CLI를 통한 다양한 접근 방식 지원
- 협업 도구
- 이슈 트래킹 및 프로젝트 관리
- 위키, 문서화 기능
- 팀 협업을 위한 코멘트 및 알림 시스템
- CI/CD 파이프라인
- 자동화된 빌드, 테스트, 배포
- 다양한 환경으로의 배포 자동화
- 파이프라인 시각화 및 모니터링
- 보안 및 컴플라이언스
- 코드 스캐닝 및 보안 검사
- 취약점 관리
- 액세스 제어 및 권한 관리
✅ GitLab Container 구성요소
GitLab Container 내부:
├── Puma (웹서버)
├── Sidekiq (백그라운드 작업)
├── PostgreSQL (데이터베이스)
├── Redis (캐시)
├── Gitaly (Git 저장소 서비스)
├── GitLab Shell (Git CLI 처리)
├── Nginx (리버스 프록시)
└── 기타 지원 서비스들
GitLab Push 프로세스
✅ 웹 UI를 통한 코드 커밋
- 브라우저 → Puma (웹 요청)
- Puma → PostgreSQL (메타데이터 저장)
- Puma → Gitaly (Git 저장소에 커밋)
- Puma → Redis (후속 작업 큐잉)
- Sidekiq ← Redis (웹훅, 이메일 등 처리)
✅ CLI를 통한 Git Push
git push origin develop
- Git CLI → GitLab Shell (SSH/HTTP Git 요청)
- GitLab Shell → Gitaly (직접 Git 저장소 처리)
- Gitaly → PostgreSQL (커밋 메타데이터 저장)
- Gitaly → Redis (후속 작업 큐잉)
- 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 작업 대기열 관리)
✅ 상호작용 예시
- 사용자가 코드 푸시
- Puma: 푸시 요청 받음
- PostgreSQL: 커밋 정보 저장
- Redis: 작업을 Sidekiq 큐에 추가
- Sidekiq: CI/CD 파이프라인 실행
요약:
- 웹은 Puma 경유, CLI는 GitLab Shell 직행하여 둘 다 Gitaly에서 합류
- Puma는 프론트엔드, Sidekiq은 백그라운드 작업
- PostgreSQL은 데이터 저장소, Redis는 임시 보관함 역할
댓글