지오패실성 테스트

Tier: 프리미엄, 얼티메이트 Offering: Self-managed

Geo 팀은 일반 GitLab 버전 및 주요 PostgreSQL 데이터베이스 버전 간 업그레이드 시 Geo가 작동하는지 확인하기 위해 일반 배치 구성에 대한 수동 테스트 및 유효성 검사를 수행합니다.

이 섹션에는 유효성 검사 테스트 목록과 관련된 이슈 링크가 포함되어 있습니다.

GitLab 업그레이드

다음은 우리가 수행한 GitLab 업그레이드 유효성 검사 테스트입니다.

2020년 7월

Geo 다중 노드 설치 업그레이드:

Geo 주 서버에서 repmgr에서 Patroni로 전환:

  • 설명: 다중 노드 Geo 주 서버에서 repmgr에서 Patroni로 전환을 테스트했습니다. 오케스트레이터 도구를 사용하여 repmgr으로 관리되는 3개 데이터베이스 노드가 있는 Geo 설치를 배포했습니다. 이 방식으로 우리는 또한 Patroni와 PostgreSQL 11로 Geo 설치를 확인하는 관련 이슈를 해결할 수 있었습니다.
  • 결과: 부분적인 성공. 우리는 본래 원본 사이트에서 Patroni를 활성화하고 보조 사이트에 데이터베이스 복제를 설정했습니다. 그러나, Patroni가 보조 사이트의 복제 슬롯을 Patroni를 재시작할 때마다 삭제하는 것을 발견했습니다. 또 다른 문제는 Patroni가 클러스터에서 새 리더를 선출할 때 보조 사이트가 새 리더를 자동으로 따르지 못하는 것입니다. 이러한 문제가 해결되지 않는 한, 우리는 Geo 설치에 대해 Patroni를 공식적으로 지원하고 추천할 수 없습니다.
  • 후속 이슈/조치:

2020년 6월

Geo 다중 노드 설치 업그레이드:

Geo 다중 노드 설치 업그레이드:

2020년 2월

Geo 다중 노드 설치 업그레이드:

  • 설명: GitLab 12.7.5에서 최신 GitLab 12.8 패키지로 다중 노드 구성에서 업그레이드 테스트를 수행했습니다.
  • 결과: 부분적인 성공. 데모 중에 루핑 파이프라인을 실행하지 않아 다운타임을 모니터링하지 않았기 때문에 부분적인 성공입니다.

2020년 1월

Geo 멀티 노드 설치 업그레이드:

Geo 멀티 노드 설치 업그레이드:

Geo 멀티 노드 설치 업그레이드:

2019년 10월

Geo 멀티 노드 설치 업그레이드:

  • 설명: GitLab 12.3.5에서 GitLab 12.4.1으로의 멀티 노드 구성에서의 업그레이드 테스트를 수행했습니다.
  • 결과: 업그레이드 테스트가 성공적으로 완료되었습니다.

Geo 멀티 노드 설치 업그레이드:

  • 설명: GitLab 12.2.8에서 GitLab 12.3.5로의 업그레이드 테스트를 수행했습니다.
  • 결과: 업그레이드 테스트가 성공적으로 완료되었습니다.

Geo 멀티 노드 설치 업그레이드:

  • 설명: GitLab 12.1.9에서 GitLab 12.2.8로의 업그레이드 테스트를 수행했습니다.
  • 결과: 가능한 잘못된 구성 문제로 부분 성공.

PostgreSQL 업그레이드

다음은 우리가 수행한 PostgreSQL 업그레이드 유효성 검사 테스트입니다.

2021년 9월

PostgreSQL 13로 Geo 설치 검증:

  • 설명: PostgreSQL 13이 GitLab 14.1에서 opt-in 버전으로 제공되면서, PostgreSQL 13이 활성화된 상태에서 GitLab에 Geo를 포함한 신규 설치를 테스트했습니다.
  • 결과: PostgreSQL 13을 활성화하고 Geo를 사용하는 환경을 GitLab Environment Toolkit을 사용하여 성공적으로 구축했고, 환경에 대한 Geo QA 테스트를 실패 없이 수행했습니다.

2020년 9월

Geo 설치용 PostgreSQL 12 업그레이드 확인:

  • 설명: PostgreSQL 12가 GitLab 13.3에서 opt-in 버전으로 제공되면서, 기존의 Geo 설치를 PostgreSQL 11에서 12로 업그레이드하는 테스트를 수행했습니다. 또한 PostgreSQL 12를 지원하기 위해 수정 사항이 이루어진 후에 GitLab 13.4의 nightly build를 사용하여 Geo를 포함한 신규 설치를 재테스트했습니다.
  • 결과: Geo 배포에서 단일 데이터베이스 노드에서의 PostgreSQL 12 지원이 성공적으로 수행되었으며, Geo 기본 노드의 repmgr과 Patroni 관리형 PostgreSQL 클러스터에서 알려진 문제가 발생했습니다. 이슈가 해결될 때까지 기본 대기 중인 PostgreSQL 12를 사용하는 것을 권장하지 않습니다.
  • PostgreSQL 클러스터의 알려진 문제:

2020년 8월

Geo 설치용 PostgreSQL 12 확인:

2020년 4월

Geo 설치용 PostgreSQL 11 업그레이드 절차:

PostgreSQL 11를 사용한 Geo 설치 검증:

  • 설명: PostgreSQL 11을 GitLab 12.10에서 기본 버전으로 만들기 전에, Geo가 설치된 GitLab 12.9를 신규 설치하여 테스트했습니다.
  • 결과: 설치 테스트가 성공적이었습니다.

2019년 9월

Geo를 위한 PostgreSQL 10.0 업그레이드 테스트 및 유효성 검사:

객체 저장소 복제 테스트

다음은 우리가 수행한 추가 유효성 검사 테스트입니다.

2022년 4월

AWS 기반 객체 저장소 복제 유효성 검사:

  • 설명: AWS 기반 객체 저장소 복제 및 GitLab 기반 객체 저장소 복제 사용 시, 주 객체 저장소 위치에서 보조 객체 저장소로 단일 이미지가 복제되는 평균 시간을 테스트했습니다. 이를 위해 주 사이트의 프로젝트에 1MB 이미지를 60초 동안 매 초 업로드하여 시간을 측정했습니다. 이를 위해 루비 스크립트를 사용하였습니다.
  • 결과: AWS 관리 복제를 사용할 때, 사이트 간 이미지 복제에 걸리는 평균 시간은 약 49초로, 지역이 같은 경우와 멀리 떨어져 있는 경우(유럽에서 미국까지) 동일합니다. 동일 지역에서 Geo 관리 복제를 사용할 때, 복제에 소요된 평균 시간은 단 5초이지만, 크로스 지역 복제시 평균 시간은 33초로 늘어났습니다.

GCP 기반 객체 저장소 복제 유효성 검사:

  • 설명: GCP 기반 객체 저장소 복제 및 GitLab 기반 객체 저장소 복제 사용 시, 주 객체 저장소 위치에서 보조 객체 저장소로 단일 이미지가 복제되는 평균 시간을 테스트했습니다. 이를 위해 주 사이트의 프로젝트에 1MB 이미지를 60초 동안 매 초 업로드하여 시간을 측정했습니다. 이를 위해 루비 스크립트를 사용하였습니다.
  • 결과: GCP는 다른 클라우드 제공 업체와 다르게 복제를 처리합니다. GCP에서는 단일 버킷을 생성하여 멀티, 듀얼 또는 싱글 리전 기반으로 설정합니다. 이는 버킷이 선택한 옵션에 따라 자동으로 해당 지역에 복제본을 저장하는 것을 의미합니다. 멀티 리전을 사용해도 이는 대륙 내에서만 복제되며, 옵션은 미국, 유럽 또는 아시아입니다. 현재로서는 GCP 기반 복제를 사용하여 대륙간에 객체를 복제하는 방법은 없는 것으로 보입니다. Geo 관리 복제를 사용할 때, 동일 지역에서 복제할 때의 평균 시간은 6초이며, 크로스 지역 복제시 이 시간은 9초로 늘어났습니다.

2022년 1월

Azure 기반 객체 저장소를 사용하여 객체 저장소 복제 유효성 검사:

  • 설명: 주요 객체 저장소 위치에서 보조 객체 저장소로 단일 이미지가 복제되는 데 걸리는 평균 시간을 테스트했습니다. 이는 Azure 기반 객체 저장소 복제 및 GitLab 기반 객체 저장소 복제를 사용할 때 확인되었습니다. 이를 위해 60초 동안 매 초 프로젝트에 1MB 이미지를 업로드하여 테스트했습니다. 그런 다음 보조 사이트에서 이미지를 사용할 수 있을 때까지 걸린 시간을 측정했습니다. 이는 루비 스크립트를 사용하여 달성되었습니다.
  • 결과: Azure 기반 복제를 사용할 때 주요 객체 저장소에서 보조 객체 저장소로 이미지를 복제하는 데 평균 40초가 걸렸으며, 가장 오래 걸리는 복제 시간은 70초, 가장 짧은 시간은 11초로 기록되었습니다. GitLab 기반 복제를 사용할 때 복제가 완료된 평균 시간은 5초였으며, 가장 오래 걸리는 복제 시간은 10초, 가장 짧은 시간은 3초였습니다.
  • 후속 이슈:

2021년 5월

객체 저장소 복제를 활성화하여 장애 조치 테스트:

  • 설명: 테스트 당시 Geo의 객체 저장소 복제 기능이 베타 상태였습니다. 객체 저장소 복제가 의도한 대로 작동하고 장애 조치 후에 데이터가 새 주요 위치에 있는지 테스트했습니다.
  • 결과: 테스트는 성공적이었습니다. 객체 저장소의 데이터가 장애 조치 후에도 복제되어 있고 존재했습니다.
  • 후속 이슈:

기타 테스트

2020년 8월

Geo 배포에서 Gitaly Cluster 테스트:

  • 설명: 기본 Geo 사이트와 보조 Geo 사이트 모두에 Gitaly 클러스터가 구성된 Geo 배포를 테스트했습니다. 주요 Geo 사이트에서 Gitaly 클러스터 자동 장애 조치를 트리거하고 엔드투엔드 Geo 테스트를 실행했습니다. 그런 다음 보조 Geo 사이트에서 Gitaly 클러스터 장애 조치를 트리거하고 엔드투엔드 Geo 테스트를 다시 실행했습니다.
  • 결과: 기본 사이트에서 Gitaly 클러스터 장애 조치 전후 및 보조 사이트에서 Gitaly 클러스터 장애 조치 전후에 성공적인 엔드투엔드 테스트를 수행했습니다.