Gitaly를 통해 Git 레파지토리 안정적인 운영하기

Dexter
Dexter | DevOps Consultant

GitLab 13.0에서는 Git 스토리지에 대한 설정에 HA와 복제(Redundancy: 시스템 장애 상황을 대비해서 중요한 시스템 구성요소를 복제)가 가능합니다. GitLab은 조직에 중요한 시스템이기 때문에, 다운타임으로 인해 소프트웨어 개발 및 CI/CD 파이프라인으로 피해가 발생 되지 않도록 해야합니다. GitLab HA는 피해를 줄 일 수 있는 방법입니다. 그렇다면 Git Repository 를 어떻게 안정적으로 운영 할 수 있는지 Gitaly 를 클러스터링 하는 방법으로 간단히 설명합니다.

Gitaly란?

Gitlab Gitaly 는 NFS(Network File System) 없이도 Git 레파지토리에 대한 RPC 기반의 빠른 읽기/쓰기를 가능하게 하는 오픈소스 서비스입니다. GitLab 13.0 이전 버전에서는 Git 레파지토리에 HA가 포함되지 않았습니다.

이게 어떤 의미가 있냐요?

Gitlab Gitaly 클러스터에 여러 Gitaly 노드를 포함하고 있으면, 모든 Git 레파지토리는 클러스터의 모든 노드에 저장됩니다. 따라서 노드 하나가 중단되면 다른 노드로 인계돼서 사용됩니다. 이로 Git 레파지토리에 대해서 Active-Active 이중화 솔루션이 된 것입니다. (짝짝짝)

이것으로 얻게 되는 것은 무엇인가요?

  • 사용자에게 GitLab 고가용성을 보장합니다. 즉, 클러스터 노드가 중단돼도 인지를 못 합니다. 하나의 Gitaly 노드에 문제가 생기면 사용자에게 투명하게 다른 노드로 리다이렉션 됩니다.
  • 그래서 Git 레파지토리의 오류가 적어지고, 복제된 저장소를 얻을 수 있게 됩니다.

다음은 Gitaly 클러스터에 대한 아키텍처입니다.

Gitaly Cluster 구성은 GitLab 안정성을 유지할 수 있는 좋은 솔루션이 될 수 있습니다. 몇백 명 이상의 개발자가 협업 중이시라면 Gitaly 클러스터는 반드시 필요합니다.

인포그랩이 GitLab 아키텍처를 안정적으로 유지할 수 있도록 돕겠습니다. 인포그랩은 Gitaly 클러스터뿐만 아니라 DR(재해 복구)를 위한 GEO 솔루션, 클라우드에서의 HA 구성 및 업그레이드, 쿠버네티스에서 운영에 대해서 지원 가능합니다. 오른쪽 상단에 문의하기를 통해 필요하신 사항을 알려주세요.