GitLab을 사용하여 작업 동시 실행하기 (Part 1)

이야기해보죠 GitLab.

웹 기반 DevOps 플랫폼인 GitLab은 소프트웨어 개발, 버전 제어, 지속적 통합, 전달(CI/CD), 그리고 협업을 위한 전체 도구 세트를 제공합니다. 잘 알려진 분산 버전 제어 시스템인 Git을 기반으로 하여 중앙집중식 저장소 관리 솔루션을 제공합니다.

GitLab은 팀이 소프트웨어 개발 프로젝트를 효율적으로 관리하고, 변경 사항을 추적하며, 코드에 대한 협업을 수행할 수 있도록 해줍니다. 프로젝트 관리 도구뿐만 아니라 코드 저장소, 문제 추적, 코드 리뷰, 지속적 통합 및 배포 기능을 제공합니다.

GitLab의 주요 기능

  1. GitLab의 버전 제어 시스템은 Git을 기반으로 하여 개발자가 변경 사항을 효율적으로 추적하고, 브랜치를 만들고, 병합을 관리할 수 있게 해줍니다.
  2. GitLab은 프로그래머가 코드베이스를 효과적으로 저장, 구성 및 관리할 수 있는 중앙집중식 저장소 관리 시스템을 제공합니다.
  3. 이슈 추적: GitLab의 내장된 이슈 추적 시스템을 사용하여 팀은 이슈를 생성하고 추적하며, 팀원에게 할당하고, 진행 상황을 추적할 수 있습니다.
  4. GitLab은 빌드, 테스트 및 배포 절차를 자동화하는 강력한 CI/CD 파이프라인을 제공합니다. 팀이 코드 변경 사항을 즉시 병합하고, 자동화된 테스트를 실행하며, 애플리케이션을 배포할 수 있게 해줍니다.
  5. 코드 리뷰, 댓글 달기, 인라인 대화와 같은 협업 도구를 사용하면 팀원들이 협력하고 코드 변경에 대한 의견을 제공하기가 더 쉬워집니다.
  6. GitLab은 마일스톤, 보드, 칸반, 애자일 보드와 같은 프로젝트 관리 도구를 제공하여 팀이 프로젝트 진행 상황을 성공적으로 계획하고 추적할 수 있게 해줍니다.
  7. 보안 및 액세스 제어: 코드 무결성을 보장하고 잠재적인 보안 문제로부터 보호하기 위해 GitLab은 역할 기반 액세스 제어, 병합 요청 승인, 취약성 관리와 같은 다양한 보안 기능을 제공합니다.

그림 1 GitLab CICD- 파이프라인 아키텍처

GitLab은 무료 커뮤니티 에디션부터 더 많은 기능과 지원 옵션을 갖춘 프리미엄 버전까지 다양한 에디션으로 제공됩니다. 이를 GitLab.com을 통한 클라우드 기반 서비스로 사용하거나 온프레미스에서 직접 호스팅할 수 있습니다.

GitLab 지속적 통합 및 지속적 전달(CI/CD)

GitLab CI/CD는 웹 기반 Git 저장소 관리 도구인 GitLab에서 제공하는 강력한 지속적 통합 및 지속적 전달 플랫폼입니다. 팀은 파이프라인 세트를 사용하여 코드 커밋부터 배포까지 소프트웨어 개발 수명주기의 모든 단계를 자동화할 수 있습니다.

GitLab CI/CD 프로세스의 개요는 다음과 같습니다:

  • GitLab 구성: 시작하기 전에 GitLab 저장소를 설정해야 합니다. 직접 호스팅되는 GitLab 인스턴스를 설정하거나 클라우드 호스팅 버전을 사용할 수 있습니다.
  • .gitlab-ci.yml: 깃랩 CI/CD의 핵심이 담긴 파일은 .gitlab-ci.yml입니다. 이 파일은 CI/CD 파이프라인을 설명하며, 프로젝트 저장소의 루트에서 찾을 수 있습니다. 코드를 어떻게 빌드, 검토, 배포할지 정의하는 여러 단계, 작업, 명령어로 구성되어 있으며, 작성 언어는 YAML입니다.
  • Pipelines: 깃랩 CI/CD에서 파이프라인은 저장소의 특정 브랜치나 태그에 대해 수행할 작업을 지정하는 단계와 작업의 모음입니다. 새로운 커밋이나 머지 리퀘스트가 발생할 때마다 각 파이프라인이 시작되어 테스팅과 배포 프로세스를 자동화할 수 있습니다.
  • Jobs and Stages: 단계는 빌드, 테스트, 배포를 포함한 파이프라인 단계를 나타냅니다. 각 단계 내에서 독립적인 작업 단위인 하나 이상의 작업을 지정할 수 있습니다. 작업은 가상 머신, 컨테이너, Kubernetes 포드 등 별도의 러너에서 동시에 또는 순차적으로 실행될 수 있습니다.
  • Runners: 깃랩 CI/CD는 파이프라인에 나열된 작업을 수행하기 위해 러너를 사용합니다. 깃랩은 공유 러너와 자신의 인프라에서 설정할 수 있는 맞춤형 러너를 제공합니다. 깃랩 러너는 새 작업을 감시하고 보안이 강화된 고립된 환경에서 항상 빌드와 테스트를 실행합니다.
  • Job Artifacts and Reports: 깃랩 CI/CD를 사용하면 코드 커버리지 결과, 테스트 보고서 또는 빌드된 바이너리와 같은 파이프라인 내에서 생성된 아티팩트를 저장할 수 있습니다. 이러한 아티팩트를 다운로드하여 배포 또는 추가 조사에 사용할 수 있습니다.
  • 통합 및 배포: GitLab CI/CD는 코드를 다양한 환경으로 배포하기 위한 다양한 통합 기능을 제공합니다. 이는 쿠버네티스 클러스터, Azure나 AWS, Google Cloud와 같은 클라우드 인프라, 심지어 커스텀 서버에도 적용됩니다. 사용자 정의 배포 스크립트를 작성하거나 GitLab의 미리 정의된 배포 템플릿을 사용할 수 있습니다.
  • 모니터링 및 피드백: GitLab CI/CD는 GitLab 사용자 인터페이스를 통해 파이프라인의 상태와 개발 상황에 대한 정보에 접근할 수 있게 해줍니다. 로그를 확인하고, 각 작업의 실행 상태를 추적하며, 파이프라인 실행이 성공하거나 실패할 때 알림을 받을 수 있습니다.

GitLab CI/CD는 캐싱, 환경 변수, 비밀 관리 등 다양한 기능을 포함하고 있어, 사용자의 요구에 맞게 CI/CD 워크플로를 맞춤 설정 및 개선할 수 있습니다.

전반적으로, GitLab CI/CD는 소프트웨어의 개발, 테스트 및 배포 과정을 간소화하여 팀이 더 빠르고 효율적으로 고품질의 애플리케이션을 개발할 수 있게 합니다.

GitLab CI: 병렬 처리

개발자에게 더 짜증나는 일이 없을 것이다, 새 코드를 푸시한 후 모든 것이 완료될 때까지 오래 기다려야 한다. 이 매뉴얼은 병렬 처리가 배포 시간을 크게 단축시킬 수 있는 방법을 단계별로 보여줍니다.

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


그림 2 GitLab 작업의 동시 실행

지속적인 통합/지속적인 배포(CI/CD)를 통한 병렬 배포 자동화는 GitLab을 사용하면 매우 간단하지만, 몇 가지 설정 매개변수에 유의해야 합니다. 이 튜토리얼에서는 병렬 실행을 설정하여 배포를 가속화하는 모든 단계와 SRE 팀에 결과를 전달하는 방법에 대해 살펴볼 것입니다. 그럼 시작하겠습니다!

그림 3 GitLab – 지역별 병렬 배포

GitLab 병렬 배포 워크플로

실행 시간을 개선하기 위해 여러 배포 작업을 동시에 실행해야 합니다. 각 배포 작업 인스턴스에서 사이트의 여러 부분을 생성하고, 웹 서버를 통합하고, 구성 업데이트를 수행하는 등의 특정 명령을 실행해야 합니다.

GitLab 애플리케이션을 빌드하고 배포하기 위해 사용하는 파이프라인에는 XX개가 넘는 작업이 있습니다. 이 작업들이 모두 동일한 것은 아닙니다. 몇 초 정도 소요되는 간단한 작업부터 신중하게 최적화해야 하는 오래 걸리는 프로세스까지 다양합니다. 각 파이프라인은 팀원과 더 큰 커뮤니티의 기여자들이 만든 변경 사항을 나타냅니다. 업데이트가 예상대로 작동하고 제품의 나머지 부분과 통합되는지 확인하기 위해 모든 애플리케이션/프로젝트 기여자들은 파이프라인이 완료될 때까지 기다려야 합니다. 팀의 생산성을 높이기 위해 파이프라인을 가능한 빨리 완료하고자 합니다.

따라서 파이프라인의 길이를 지속적으로 모니터링합니다. 예를 들어, 이전 릴리스에서 성공한 파이프라인 시리즈는 대략 53.8분이 소요되었습니다.

매일 약 100에서 200개의 파이프라인을 실행하고 있다고 가정할 때, 우리는 장기간 실행되는 작업들의 실행 방식을 변경하여 과정을 최적화할 수 있는지 조사하고자 합니다.

그림 4 GitLab – 작업의 순차적 실행

이 부분에서는 작업의 순차적 실행을 탐색하였습니다. 이 시리즈의 두 번째 부분에서는 병목 현상을 해결하기 위해 작업들을 병렬로 실행하는 방법을 배웁니다.

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo