GitLab 소개

GitLab은 Git 원격 저장소(Repository) 관리뿐만 아니라, 이슈 트래킹, 코드 리뷰, Wiki, CI/CD, 테스트, 모니터링 등 전체 소프트웨어 개발 라이프사이클에 필요한 기능을 제공합니다.

GitLab은 단일 애플리케이션으로 제공되는 완전한 DevOps 플랫폼입니다. 간소화된 소프트웨어 워크플로우를 생성하여 서로 짜맞추어진 툴체인의 제약에서 조직을 벗어나게 합니다.

현대적인 소프트웨어 개발 방법인 클라우드 네이티브(Cloud Native) 환경 구축에 필요한 DevOps, Container, Kubernetes, CI/CD를 위한 기능을 제공합니다.

주요 기능

GitLab은 초기에 Git 원격 저장소, 코드 탐색, 이슈 트래커 기능 등을 제공하는 소프트웨어의 형태로 시작되어, 이후 더 많은 기능들을 추가하여 전체 소프트웨어 개발 라이프사이클을 커버하는 플랫폼으로 성장했습니다.

  • 그룹 및 프로젝트 관리 : 그룹프로젝트를 통해 업무를 계획(Milestone)하고 세부화한 업무(Issue)를 구성원에게 배정하여 팀의 수행 프로젝트를 관리할 수 있습니다. 그룹은 동일한 네임스페이스에서 관련 프로젝트를 구성하고 최상위 그룹에 구성원을 추가하여 여러 프로젝트와 여러 팀 구성원에게 더 적은 단계로 액세스 권한을 부여할 수 있습니다. 프로젝트는 코드베이스 단위로 만듭니다. 이를 이슈 트래커로 사용하고, 코드에 대해 공동 작업하고, 내장된 GitLab CI/CD를 사용하여 앱을 지속적으로 빌드, 테스트 및 배포할 수 있습니다.
  • Repository : 프로젝트를 생성하면 자동으로 Git 원격 저장소가 생성됩니다. 코드베이스를 저장하고 버전 제어를 통해 코드를 변경하는데 사용되며, 파일을 탐색하고 상호 작용하는 다양한 방법을 Web UI로 제공합니다.
  • 이슈 트래커(Tracker) : 공동으로 아이디어를 개발하고 문제를 해결하며 작업을 계획하기 위한 고급 도구입니다. 새로운 아이디어의 구현 논의, 태스크(Task) 및 작업 상태 추적, 기능 제안, 질문, 지원 요청 또는 버그 보고서의 수락, 새로운 코드 구현에 대해 자세히 설명하는데 활용할 수 있습니다.
  • 이슈 보드(Board) : 기능 또는 제품 릴리스에 대한 워크플로우를 계획, 구성 및 시각화하는데 사용되는 소프트웨어 프로젝트 관리 도구입니다. 칸반(Kanban) 또는 스크럼(Scrum) 보드로 사용할 수 있습니다. 레이블(Label) 기반으로 이슈 추적과 프로젝트 관리를 결합하여 모든 것을 함께 유지하므로 워크플로우를 구성하기 위해 서로 다른 플랫폼 사이를 이동할 필요가 없습니다. 레이블을 추가하여 기존 이슈에 해당하는 목록을 만들고, 카드를 한 단계에서 다른 단계로 끌어다 놓을 수 있습니다.
  • 레이블(Labels) : 이슈, 병합 요청 및 에픽의 수가 증가함에 따라 이러한 항목을 추적하는 것이 점점 더 어려워집니다. 특히 조직이 소수에서 수백 또는 수천으로 성장함에 따라 더욱더 그렇습니다. 레이블은 작업을 구성하고 태그를 지정하여 관심 있는 작업 항목을 추적하고 찾을 수 있도록 도와줍니다. 버그, 기능 요청 또는 문서와 같은 설명 제목과 색상을 사용하여, 에픽, 이슈 및 병합 요청을 분류하여 동적으로 필터링하고 관리하며 이런 항목들을 검색할 수 있습니다.
  • 마일스톤(Milestone) : 특정 기간 동안 더 광범위한 목표를 달성하기 위해 생성된 이슈 및 병합 요청(Merge Request)을 추적하는 방법입니다. 마일스톤을 이용하면 선택적 시작일과 마감일을 사용하여 이슈와 병합 요청을 응집력 있는 그룹으로 구성할 수 있습니다.
  • 병합 요청(Merge request) : 한 브랜치를 다른 브랜치로 병합하기 위한 요청입니다. 병합 요청을 사용하여 소스 코드에 대해 제안된 변경사항을 시각화하고 협업할 수 있습니다.
  • 내장 CI/CD : 무료로 내장된 CI/CD를 가지고 있으며 별도로 설치할 필요가 없습니다. 이를 사용하여 애플리케이션을 빌드, 테스트 및 배포합니다. 작업 결과는 쉽게 액세스할 수 있도록 병합 요청(Merge request)에 표시됩니다.
  • WiKi : 문서화를 위한 별도 시스템이 각 GitLab 프로젝트에 내장되어 있습니다. Wiki는 문서를 저장소에 보관하고 싶지 않지만 코드가 있는 동일한 프로젝트에 보관하고 싶은 경우 매우 편리합니다. 모든 Wiki는 별도의 Git 저장소이므로 웹 인터페이스에서 또는 Git Clone하여 로컬에서 작업할 수 있습니다.
  • 스니펫(Snippets) : 자주 사용하는 코드 조각과 텍스트를 저장하고 다른 사용자와 공유할 수 있습니다.
  • Web IDE : Git CLI(명령 줄 인터페이스)에 익숙하지 않은 사용자도 쉽게 사용할 수 있는 기능으로, 코드를 변경하고 Web 브라우저에서 직접 커밋할 수 있는 커밋 스테이징(Commit Staging)을 제공하여 프로젝트에 변경사항을 빠르고 쉽게 적용할 수 있습니다.

전체 DevOps 라이프사이클

GitLab은 동시(Concurrent) DevOps를 가능하게 하는 소프트웨어 개발, 보안 및 운영을 위한 최초의 단일 애플리케이션으로, 소프트웨어 라이프사이클을 더 빠르게 만들고 비즈니스 속도를 획기적으로 향상시킵니다.

이슈 추적 및 소스 코드 관리에서 CI/CD 및 모니터링에 이르기까지 모든 것을 한 곳에 모아두면 툴체인 복잡성이 단순화되고 사이클 타임(Cycle Time)이 단축됩니다.

GitLab은 DevOps 라이프사이클의 각 단계에 대한 솔루션을 제공합니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab
  • Manage : 비즈니스 성과에 대한 가시성과 인사이트 확보를 위한 통계 및 분석 기능을 제공합니다.
  • Plan : 에픽, 이슈, 보드, 레이블, 마일스톤을 통해 포트폴리오 계획 및 관리를 지원하여 진행 상황을 구성하고 추적합니다.
  • Create : 강력한 브랜칭(Branching) 도구를 통해 소스 코드 및 프로젝트 데이터를 만들고, 조회하고, 관리합니다.
  • Verify : 내장된 정적 코드 분석, 코드 테스트, 코드 품질, 종속성 확인 및 리뷰 앱을 통해 오류를 더 빨리 발견하고 보안을 향상시키며 피드백 주기를 단축할 수 있습니다.
  • Package : 애플리케이션 및 종속성을 패키징하고 컨테이너를 관리하고, 아티팩트를 쉽게 빌드할 수 있습니다.
  • Secure : 정적 애플리케이션 보안 테스트 (SAST), 동적 애플리케이션 보안 테스트 (DAST), 컨테이너 스캔 및 종속성 스캔을 제공하여 라이선스 준수와 함께 안전한 애플리케이션을 제공할 수 있도록 지원합니다.
  • Release : 애플리케이션 출시 및 제공을 자동화하여, 제공 라이프사이클을 단축하며, 수동 프로세스를 간소화하며, 팀 속도를 가속화합니다.
  • Configure : 애플리케이션 환경 및 인프라를 구성하고 관리할 수 있도록 지원합니다.
  • Monitor : 배포된 애플리케이션에 대한 성능 메트릭을 수집하고 표시하므로 코드 변경이 프로덕션 환경에 미치는 영향을 즉시 알 수 있습니다.
  • Defend : 런타임 애플리케이션 보안, 위협 감지 및 관리, 데이터 보안, 애플리케이션 인프라 보안을 제공합니다.

강력한 클라우드 네이티브 지원

기업은 속도, 안정성 및 확장성을 확보하기 위해 기존 배포 모델에서 클라우드 네이티브 애플리케이션으로 전환하고 있습니다.

GitLab은 클라우드 네이티브 애플리케이션을 구축하는 가장 쉬운 방법입니다. 클라우드 네이티브 애플리케이션은 컨테이너, 마이크로 서비스 아키텍처 및 Kubernetes와 같은 컨테이너 오케스트레이션을 사용합니다. GitLab은 긴밀한 Kubernetes 통합을 통해 클라우드 네이티브 애플리케이션을 위해 설계되었습니다.

  • Docker 컨테이너 이미지를 저장, 공유, 사용하기 위한 Container Registry가 내장되어 있습니다.
  • GitLab UI를 이용하여 Amazon EKS, Google GKE에 그룹, 프로젝트 또는 인스턴스 수준의 새 클러스터(Cluster)를 생성하거나 기존 클러스터에 연결할 수 있습니다. 또한 온프레미스(On-premise) 또는 호스팅된 모든 표준 Kubernetes 프로바이더와 통합할 수 있습니다.
  • GitLab 내에서 직접 앱의 주요 지표를 모니터링하기 위해 Prometheus와의 강력한 통합을 제공합니다. 각 환경에 대한 메트릭은 Prometheus에서 검색된 다음, GitLab 인터페이스에 표시됩니다.
  • Grafana는 GitLab에 임베디드된 Prometheus 모니터링 시스템에서 성능 메트릭을 시각화하는데 사용할 수 있는 강력한 대시 보드 구축 시스템입니다. GitLab 12.0부터 Grafana가 기본적으로 활성화되고 GitLab과의 SSO가 자동으로 구성됩니다. https://gitlab.example.com/-/grafana에서 Grafana를 사용할 수 있습니다.