본문으로 건너뛰기

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
  • Plan : 프로세스에 관계없이 GitLab은 강력한 계획 도구를 제공하여 모든 사람이 동기화되도록 합니다. GitLab은 에픽, 그룹(프로그램) 및 마일스톤을 통해 포트폴리오 계획과 관리를 지원하여 진행 상황을 구성하고 추적합니다. Waterfall에서 DevOps에 이르기까지 방법론에 관계없이 GitLab의 간단하고 유연한 계획 접근 방식은 소규모 팀에서 대기업에 이르는 요구사항을 충족시킵니다. GitLab은 팀이 프로젝트 작업을 조직, 계획, 조정 및 추적하여 팀이 적시에 적절한 작업을 수행하고 아이디어에서 프로덕션에 이르는 전달 라이프사이클 전반에 걸쳐 이슈에 대한 엔드 투 엔드의 가시성과 추적성을 유지할 수 있도록 지원합니다.
  • Create : 강력한 브랜칭(Branching) 도구를 통해 코드 및 프로젝트 데이터를 생성, 확인 및 관리합니다. GitLab은 팀이 단일 분산 버전 제어 시스템(DVCS, Distributed VCS)에서 코드 및 프로젝트 데이터를 설계, 개발 및 안전하게 관리하여 비즈니스 가치를 신속하게 반복하고 전달할 수 있도록 지원합니다. GitLab 리포지터리는 프로젝트 및 코드에 대한 협업을 위한 확장 가능한 단일 진실 공급원(SSOT, Single Source Of Truth)을 제공하여 팀이 워크플로를 중단하지 않고 생산성을 높일 수 있도록 합니다.
  • Verify : 자동 테스트 및 보고 기능을 통해 프로덕션 코드에 대한 엄격한 품질 표준을 유지합니다. GitLab은 전달(Delivery) 팀이 지속적 통합을 완전히 수용하여 코드의 빌드, 통합 및 검증을 자동화할 수 있도록 지원합니다. GitLab의 업계 최고의 CI 기능은 자동화된 테스트, 정적 분석 보안 테스트(SAST), 동적 분석 보안 테스트(DAST) 및 코드 품질 분석을 가능하게 하여 개발자와 테스터에게 코드 품질에 대한 빠른 피드백을 제공합니다. 동시 테스트 및 병렬 실행을 가능하게 하는 파이프라인을 통해 팀은 모든 커밋에 대한 인사이트를 빠르게 얻을 수 있으므로 고품질 코드를 더 빠르게 제공할 수 있습니다.
  • Package : 내장된 패키지 관리 기능으로 일관되고 신뢰할 수 있는 소프트웨어 공급망을 구축합니다. GitLab을 사용하면 팀이 애플리케이션 및 의존성을 패키징하고, 컨테이너를 관리하고, 아티팩트를 쉽게 빌드할 수 있습니다. 보안성이 있는 프라이빗 컨테이너 레지스트리와 패키지 레지스트리는 GitLab 소스 코드 관리 및 CI/CD 파이프라인과 원활하게 작동하도록 내장되어 있고 사전 구성되어 바로 사용할 수 있습니다. 중단 없이 자유롭게 흐르는 자동화된 소프트웨어 파이프라인을 통해 DevSecOps를 가속화하고 출시 시간을 단축할 수 있습니다.
  • Secure : 개발 라이프사이클에 통합된 보안 기능. GitLab은 라이선스 컴플라이언스와 함께 보안성 있는 애플리케이션을 제공하는 데 도움이 되는 정적 애플리케이션 보안 테스트(SAST), 동적 애플리케이션 보안 테스트(DAST), 컨테이너 스캔 및 의존성 스캔을 제공합니다.
  • Deploy : GitLab의 통합 CD 솔루션을 사용하면 한 대든 천 대든 상관없이 제로 터치로 코드를 출하할 수 있습니다. GitLab은 애플리케이션의 릴리스 및 전달을 자동화하여 전달 라이프사이클을 단축하고, 수동 프로세스를 간소화하며, 팀 속도를 가속화하는 데 도움이 됩니다. 파이프라인에 제로 터치 CD(Continuous Delivery)가 내장되어 있어 스테이징 및 프로덕션과 같은 여러 환경에 배포를 자동화할 수 있으며, 시스템은 카나리아 배포와 같은 고급 패턴에 대해서도 지시 없이 작업을 수행할 수 있습니다. 기능 플래그, 내장된 감사/추적성, 온디맨드 환경 및 정적 콘텐츠 전달을 위한 GitLab Pages를 통해 이전보다 더 빠르고 안정적으로 전달할 수 있습니다.
  • Configure : 애플리케이션 및 인프라를 구성합니다. GitLab은 팀이 애플리케이션 환경을 구성하고 관리할 수 있도록 지원합니다. Kubernetes와의 강력한 통합은 애플리케이션을 지원하는 데 필요한 인프라를 정의하고 구성하는 데 필요한 노력을 줄여줍니다. 'secret variables'를 사용하여 권한이 부여된 사용자 및 프로세스만 액세스하도록 제한함으로써 비밀번호 및 로그인 정보와 같은 주요 인프라 구성 상세 정보에 대한 액세스를 보호합니다.
  • Monitor : 사고(Incident)의 심각성과 빈도를 줄이는 데 도움이 됩니다. 사고의 심각도와 빈도를 줄이는 데 도움이 되는 피드백과 도구를 받아 안심하고 소프트웨어를 자주 출시할 수 있습니다.
  • Govern : 조직 전반의 보안 취약점, 정책, 규정 준수를 관리하십시오. GitLab은 사용자가 조직 전반의 보안 취약점, 정책, 규정 준수를 관리하도록 돕습니다.

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

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

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를 사용할 수 있습니다.