2024년 7월 25일, AWS는 CodeCommit 서비스와 관련해 중요한 내용을 발표했습니다. 공식 블로그 게시물에 자세히 설명한 대로, AWS는 CodeCommit에 신규 고객 액세스를 종료하기로 했습니다. 기존 고객은 서비스를 계속 사용할 수 있지만 AWS는 보안, 가용성, 성능 개선에만 집중하고, 새로운 기능을 도입하지 않을 예정입니다.
이번 발표로 개발팀은 리포지터리를 다른 Git 제공업체로 마이그레이션하는 걸 고려하고 있습니다. 이러한 변화에 따라 GitLab으로 마이그레이션하고 다른 AWS 서비스와 통합하는 팀을 지원하고자 종합 가이드를 준비했습니다.
참고: AWS의 공식 마이그레이션 권장 사항의 자세한 내용은 해당 블로그 게시물을 참조하세요.
가이드 소개
이 가이드는 AWS 서비스와 통합을 고려하거나, AWS 호스팅 Git 리포지터리에서 GitLab.com으로 마이그레이션을 계획하며 GitLab을 사용하는 개발팀에 종합적인 정보를 제공합니다. 가이드는 네 가지 주요 섹션으로 구성됐습니다.
- GitLab으로 병렬 마이그레이션: 위험을 최소화하며, 기존 AWS 호스팅 리포지터리에서 GitLab.com으로 점진적으로 마이그레이션하는 방법을 설명합니다.
- AWS CodeBuild와 통합: GitLab 리포지터리를 AWS CodeBuild와 통합해 강력한 지속적 통합(CI) 환경을 설정하는 단계를 알려줍니다.
- AWS CodePipeline과 통합: 효율적인 지속적 배포(CD) 파이프라인을 구축하기 위해 GitLab 리포지터리를 AWS CodePipeline과 연결하는 방법을 자세히 설명합니다.
- CodePipeline과 CodeStar Connections를 위한 다운스트림 통합: 광범위한 서비스 액세스를 위해 GitLab-AWS 연결을 활용해 AWS 생태계 전반에 일련의 통합 가능성을 여는 방법을 소개합니다.
이 가이드에서는 GitLab과 AWS의 강력한 기능을 결합해 효율적이고 유연한 개발 워크플로를 만드는 방법을 배울 수 있습니다.
섹션 1: GitLab에 병렬 마이그레이션
AWS에서 호스팅되는 Git 리포지터리를 GitLab.com으로 마이그레이션하려는 사람들에게, 단계적 접근 방식인 이 섹션은 위험을 최소화하며 마이그레이션을 수행하는 방법을 소개합니다. GitLab의 Mirroring 기능을 활용하면, 기존 개발 흐름을 유지하며 새 환경을 테스트할 수 있습니다.
병렬 마이그레이션이 중요한 이유
대규모 시스템 마이그레이션에는 항상 위험이 있고, 이는 진행 중인 개발 작업, 기존 통합, 자동화된 프로세스에 잠재적 영향을 미칠 수 있습니다. 병렬 마이그레이션 접근 방식을 채택하면, 다음 이점이 있습니다.
- 위험 최소화: 기존 시스템을 계속 운영하며, 새로운 환경을 테스트할 수 있습니다.
- 원활한 전환: 개발팀은 새로운 시스템에 점진적으로 적응할 수 있습니다.
- 통합 테스트: 새로운 환경에서 모든 통합과 자동화를 철저히 테스트합니다.
- 미래 대비: 팀이 기존 CI와 병행해 GitLab CI/CD에 점진적으로 마이그레이션할 수 있습니다.
GitLab으로 바로 전환하려는 게 이미 알려졌다면, 병렬 마이그레이션이 필요하지 않습니다.
GitLab.com 마이그레이션 단계
1단계: GitLab.com에서 설정하기
- 여러분 회사가 GitLab.com에 이미 사용하는 그룹이 있는지, SSO(Single Sign-On)가 설정됐는지 확인하세요. 설정됐다면 모두 사용하는 게 좋습니다.
- 여러분 회사가 GitLab.com에 그룹이 없다면, GitLab.com을 방문해 새 계정을 만들거나, 기존 계정에 로그인하세요.
- 새 회사 네임스페이스(GitLab.com의 root 레벨 그룹)를 만듭니다.
- 회사 전체를 반영하는 이름을 선택합니다(아직 사용하지 않은 이름).
2단계: 리포지터리 가져오기
병렬 마이그레이션에서는, GitLab의 pull mirroring 기능을 사용해 AWS 호스팅 리포지터리의 변경 사항을 GitLab.com에 자동으로 동기화합니다.
- 대상 그룹 GitLab.com으로 이동합니다.
- 오른쪽 상단에 “New Project”를 클릭합니다.
- “Create new project” 페이지에서 “Import project”를 클릭합니다.
- “Import project” 페이지에서 “Repository by URL”을 클릭합니다.
- “Git repository URL” 필드에 AWS 호스팅 리포지터리의 URL을 입력합니다.
- Git 리포지터리 URL 필드 아래에 “Mirror repository”를 체크합니다.
- 인증 설정: AWS CodeCommit Console에서 마이그레이션할 리포지터리의 Clone URL을 선택합니다. CodeCommit 리포지터리를 GitLab에 가져올 때, HTTPS CodeCommit URL을 사용해 GitLab Repository Mirroring으로 리포지터리를 복제할 수 있습니다. 또한 GitLab 내에서 ID와 액세스 관리(IAM) 사용자를 위해 AWS의 Git 자격 증명을 제공해야 합니다. 이 AWS 가이드에 따라 AWS CodeCommit용 Git 자격 증명을 만들 수 있습니다.
AWS CodeCommit Console의 Clone URL. 출처=GitLab
이 설정은 기본적으로 5분마다 AWS 호스팅 리포지터리에서 GitLab.com으로 변경 사항을 자동으로 가져옵니다.
자세한 내용은 GitLab Repository Mirroring 문서를 참조하세요.
3단계: 통합 테스트, 검증하기
- CI/CD 파이프라인: 기존 파이프라인을 복제하기 위해 GitLab CI에서
.gitlab-ci.yml
파일을 설정합니다. 다른 CI 도구에서 GitLab CI/CD로 마이그레이션 계획의 자세한 내용을 확인하세요. - 이슈 추적: 프로젝트 이슈를 가져오고 워크플로를 테스트하세요.
- 코드 리뷰: Merge request 프로세스와 테스트 리뷰 워크플로를 설정합니다.
4단계: 점진적 마이그레이션하기
- 소규모 또는 중요하지 않은 프로젝트부터 시작해 GitLab.com에서 작업하는 데 익숙해지세요.
- 팀원에게 교육을 제공하고, 새로운 워크플로에 적응할 시간을 주세요.
- 통합과 워크플로에 문제가 없는지 확인하며, 점진적으로 더 많은 프로젝트를 마이그레이션하세요.
자세한 내용은 CodeCommit, GitLab 마이그레이션 자동화를 참조하세요.
5단계: 마이그레이션 완료하기
모든 테스트와 검증이 완료되고 팀이 새 환경에 익숙해지면, 전체 마이그레이션을 계획하세요. 프로젝트마다
- 마이그레이션 날짜를 정하고, 모든 이해관계자에게 알립니다.
- 최종 데이터 동기화를 수행합니다.
- GitLab 프로젝트에서 Mirroring 설정을 제거합니다.
- AWS 호스팅 리포지터리를 읽기 전용으로 설정하고, 모든 개발 작업을 GitLab.com으로 전환합니다.
6단계: 새로운 기능 채택 평가하기
개발자를 위한 GitLab의 협업, 워크플로 자동화 기능은 CodeCommit보다 훨씬 더 많습니다. ‘이러한 기능이 무엇인지’ 파악하세요. 특히 Merge request 프로세스는 CodeCommit보다 더 풍부합니다.
GitLab에서 리포지터리가 안정화되면, 기존 솔루션과 병행해 GitLab CI/CD를 매우 쉽게 실험할 수 있습니다. 팀은 프로덕션 워크플로에 영향을 주지 않으면서, GitLab CI/CD 자동화를 완성하는 데 시간을 할애할 수 있습니다.
또한 GitLab 아티팩트 관리는 릴리즈 기능과 다양한 패키지 레지스트리로 매우 강력합니다.