1. CodeArtifact
개요 및 배경
- 소프트웨어 빌드 시 요구되는 코드 종속성(Dependencies)을 관리하는 안전하고 확장 가능하며 비용 효율적인 완전 관리형 아티팩트 관리 시스템(Artifact Management System)임
- 기존의 복잡한 자체 아티팩트 관리 시스템을 대체하고, AWS VPC 내부에서 중앙 집중식으로 패키지를 저장하고 공유하도록 지원함
주요 리소스 및 기능
- 퍼블릭 리포지토리 프록시 및 캐싱 (Proxy & Caching)
- JavaScript(npm, yarn), Python(pip, twine), .NET(NuGet), Java(Maven, Gradle) 등의 패키지 매니저와 원활하게 통합됨
- 외부 퍼블릭 리포지토리에 대한 직접 통신을 차단하고, CodeArtifact가 중간 프록시(Proxy) 역할을 수행하여 네트워크 보안을 강화함
- 다운로드된 모든 종속성은 CodeArtifact에 자동으로 캐시(Cache)됨. 원본 퍼블릭 저장소에서 패키지가 삭제되더라도 내부 사본이 유지되므로 향후 빌드 실패를 방지함
- 이벤트 기반 자동화 파이프라인 (Event-Driven Automation)
- 패키지 버전이 생성, 수정, 삭제될 때마다 Amazon EventBridge로 이벤트를 발행(Emit)함
- 종속성 패키지가 업데이트되면 해당 이벤트를 통해 CodePipeline을 트리거할 수 있음. 이를 통해 CodeBuild로 즉시 새 종속성을 적용해 리빌드하고, CodeDeploy로 자동 배포하는 보안/패치 파이프라인 구성이 가능함
- 리소스 접근 제어 구조
- 도메인(Domains) 내에 여러 리포지토리(Repositories)를 생성하여 아티팩트를 관리함
- 단일 계정 내의 접근은 일반적인 IAM 정책(Policies)을 사용하여 제어함
헷갈리는 포인트 (Tips)
- 교차 계정(Cross-Account) 접근 제어: 다른 AWS 계정(예: Account B의 사용자)에게 CodeArtifact 리포지토리 접근 권한을 부여하려면, 반드시 해당 리포지토리에 리소스 기반 정책(Resource Policy)을 적용해야 함
- 접근 권한 부여의 단위는 개별 패키지가 아닌 리포지토리 단위(Repository-level)임. 따라서 특정 사용자에게 리포지토리 접근을 허용하면, 내부의 일부 패키지가 아닌 "모든 패키지"에 대한 권한이 일괄 부여됨 (세부 패키지 단위 제어 불가)
2. Upstream Repositories & Domains
개요 및 배경
- 다수의 내부 리포지토리와 외부 퍼블릭 저장소 간의 종속성 트리를 효율적으로 관리하기 위한 아키텍처 구성이 필요함
- 단일 엔드포인트를 제공하여 개발자의 패키지 다운로드 및 검색 과정을 간소화함
- 도메인(Domains)을 구성하여 스토리지 최적화 및 교차 계정 접근 제어를 중앙화함
주요 리소스 및 기능
- 업스트림 리포지토리 (Upstream Repositories)
- 단일 리포지토리당 최대 10개의 업스트림(상위) 리포지토리를 연결할 수 있음
- 개발자는 가장 하위(Downstream) 리포지토리 하나만 바라보며, 패키지 매니저가 업스트림 트리를 따라 종속성을 자동 탐색함
- 외부 연결 (External Connections)
- 퍼블릭 저장소(npm, PyPI, Maven 등)와 직접 연결되며, 리포지토리당 최대 1개만 설정 가능함
- 중앙 리포지토리 하나에만 외부 연결을 설정하고, 나머지 리포지토리들은 이를 업스트림으로 참조하도록 구성하여 캐시 효율을 극대화함
- 패키지 보존 및 캐싱 매커니즘 (Retention & Caching)
- 여러 리포지토리를 거쳐 패키지를 다운로드할 때, 외부 연결을 가진 최상위 리포지토리와 클라이언트가 직접 연결된 최하위 리포지토리에만 패키지가 보존(Cache)됨
- 네트워크 효율성을 위해 중간 경로(Intermediate)에 위치한 리포지토리에는 패키지 사본이 저장되지 않음
- 도메인 (Domains)
- 여러 계정과 리포지토리를 포괄하는 논리적 그룹으로, 내부적으로 단일 공유 스토리지를 사용하여 패키지 중복 저장을 방지(De-duplicate)함
- 리포지토리 간 패키지 복사 시 실제 데이터를 복제하지 않고 참조(Reference)만 생성하므로 처리 속도가 매우 빠름
- 도메인 레벨에서 단일 KMS 키로 암호화를 수행하며, 도메인 리소스 기반 정책(Domain Resource-based Policy)으로 권한(외부 연결 설정 권한 등)을 일괄 제어함
헷갈리는 포인트 (Tips)
- 다단계 업스트림 구조에서 중간에 위치한 리포지토리는 패키지를 캐시하지 않는다는 점을 아키텍처 설계 시 반드시 인지해야 함
- 외부 퍼블릭 리포지토리 연동 시 각 리포지토리마다 개별적으로 외부 연결(External Connection)을 맺는 것은 안티 패턴임. 단 하나의 전용 리포지토리에만 퍼블릭 연결을 설정하고, 다른 모든 리포지토리가 이를 업스트림(Upstream)으로 참조하게 구성해야 함
- 교차 계정 제어 시 개별 리포지토리마다 정책을 부여하는 대신, 도메인 리소스 기반 정책을 활용하면 연결된 모든 계정과 리포지토리의 접근 제어를 한 번에 관리할 수 있어 효율적임
'Cloud Native > AWS: Automation' 카테고리의 다른 글
| 8. Serverless Application Model (SAM) & CDK (0) | 2026.03.04 |
|---|---|
| 7. CloudFormation (0) | 2026.03.03 |
| 5. CodeDeploy (0) | 2026.03.03 |
| 4. CodeBuild (0) | 2026.03.03 |
| 3. CodePipeline (0) | 2026.03.03 |