GitLab은 재해 복구(Disaster Recovery) 전략을 지원하고, GitLab 오리지널 인스턴스에서 멀리 떨어진 개발팀의 지연을 줄이는 기능을 제공합니다. 바로 ‘GitLab Geo’(이하 Geo)인데요. Geo는 조직에 재해 복구 전략이 필요하거나, 여러 지역에 흩어진 개발팀이 GitLab에 접속해 작업을 수행할 때 도움이 됩니다.
Geo를 사용하면 재해 복구 환경을 조성하는 시간과 노력을 크게 절감할 수 있고요. 분산된 개발팀은 거리에 구애받지 않은 채 GitLab의 리포지터리, 프로젝트를 신속히 복제하고 가져올 수 있습니다. 이 글에서는 Geo 기능과 이점, 아키텍처를 소개하고요. GitLab의 Geo 로드맵을 알아보며, 향후 기능 개선 방향을 살펴보겠습니다!
GitLab Geo란?

개념
Geo는 지리적으로 분산된 개발팀을 위한 솔루션입니다. 이는 재해 복구 전략의 일환으로 ‘웜 스탠바이(warm standby)’*도 제공하죠. GitLab Premium, Ultimate 사용자라면, 자체 관리형 환경에서 Geo를 이용할 수 있습니다.
주요 기능
Geo는 ‘원격팀과 지리적으로 가까운 곳에 위치해 읽기 요청을 처리하는’ 로컬 캐시를 제공합니다. 이는 대용량 리포지터리를 복제하고 가져오는 시간을 줄여주죠. 그 결과, 개발 속도가 높아지고, 원격팀의 생산성도 향상될 수 있습니다.
Geo는 주요 GitLab 데이터 유형을 복제하고 검증하는 구조로, 장애 발생 시 프로세스에 따라 연속성 있게 GitLab을 사용·운영하는 재해 복구 기능도 지원합니다. 참고로 Geo는 GitLab의 재해 복구 솔루션 기반 기술을 사용합니다.
동작 원리
Geo 보조 사이트는 기본 사이트에 쓰기 요청을 투명하게 프록시 처리합니다. 모든 Geo 사이트는 단일 GitLab URL에 응답하도록 구성할 수 있는데요. 이로써 사용자는 ‘자신이 접속하는 Geo 사이트와 관계없이’ GitLab에 원활히 들어갈 수 있습니다.
아울러 Geo는 다양한 GitLab 데이터세트를 ‘조정되고, 검증할 수 있으며, 일관된 방식으로’ 새로운 사이트에 복제하는데요. 이로써 여러 곳에 있는 GitLab 서버 구성을 확장할 수 있죠. 사용자 요청은 위치 인식 URL을 사용해 사용자와 가장 가까운 Geo 사이트로 전달되고요. 지능형 프록시 기술은 사용자가 최신 데이터에 접근하도록 보장합니다.
*웜 스탠바이: 재해 복구 전략 중 하나로, 데이터를 백업하고, 실행할 때 더 능동적임. 이는 백그라운드에서 지속적으로 실행됨. 따라서 기술 재해가 발생하면 백업 시스템이 기본 시스템을 미러링해 모든 걸 정상화할 수 있음. 단, 보조 시스템은 핫 시스템(hot system)만큼 빠르게 백업하지 않음. 이에 기술 재해가 발생하기 전 백업이 아주 신속하게 이뤄지지 않으면 데이터는 다를 수 있음. 웜 스탠바이는 만일의 상황을 대비해 항상 대기하는 게 특징임.
GitLab Geo 이점
Geo를 사용하면 다음 장점을 누릴 수 있습니다.
- GitLab 인스턴스를 여러 위치에 구성할 수 있습니다.
- 재해 복구 시나리오에서 보조 사이트로 신속하게 장애 조치를 취할 수 있습니다.
- 보조 사이트로 '계획한 장애 조치'도 취할 수 있습니다.
- 기본 사이트와 보조 사이트 간에 읽기 전용 부하를 분산할 수 있습니다.
- GitLab의 다양한 데이터를 복제할 수 있습니다(제한 사항 및 지원 데이터 유형 참조).
- GitLab 서버와 멀리 떨어진 사용자의 연결 속도를 높여 ‘분산된 개발팀’의 작업 속도를 향상하고, 시간을 절약할 수 있습니다.
- 자동화된 작업, 맞춤형 통합, 내부 워크플로의 로딩 시간을 단축할 수 있습니다.
- 분산된 개발자가 대용량 리포지터리, 프로젝트를 복제하고 가져오는 소요 시간을 분 단위에서 초 단위로 줄일 수 있습니다.
- 개발팀은 지역에 상관없이 아이디어와 코드를 기여하고 리뷰하며, 동시에 작업할 수 있습니다.