$ yh.log
[DOP-C02] Domain 1 - SDLC Automation (Part 3)

[DOP-C02] Domain 1 - SDLC Automation (Part 3)

AWSDOP-C02DevOpsCI/CDCodeArtifactCodeGuruImage BuilderAmplify

작성자 : 오예환 | 작성일 : 2026-02-16 | 수정일 : 2026-02-16 | 조회수 :

CI/CD: CodeArtifact, CodeGuru, Image Builder, Amplify


6. AWS CodeArtifact

🤔 CodeArtifact가 뭔가요?

비유로 이해하기: CodeArtifact는 프라이빗 npm/Maven 저장소입니다.

  • 패키지 의존성 저장/관리
  • 퍼블릭 저장소 프록시 (npm, PyPI, Maven)

CodeArtifact 구조

┌─────────────────────────────────────────────────────────────────┐
                    CodeArtifact 구조

  ┌─────────────────────────────────────────────────────────┐
                      Domain
  (조직 전체 공유, 중복 저장 제거, KMS 암호화)            │   │

  ┌─────────────────┐    ┌─────────────────┐
   Repository A   Repository B

  Package 1  Package 3
  Package 2  Package 4
  └────────┬────────┘    └─────────────────┘
 Upstream

  ┌─────────────────┐
   Repository C
 (External Conn) │                                    │   │
  └────────┬────────┘
 External Connection

  └───────────┼──────────────────────────────────────────────┘


       ┌──────────────┐
   npmjs.com
   PyPI.org
   Maven
       └──────────────┘

└─────────────────────────────────────────────────────────────────┘

주요 개념

개념설명
Domain저장소 그룹, 조직 단위, 단일 KMS 키
Repository패키지 저장소
Upstream다른 CodeArtifact 저장소 연결 (최대 10개)
External Connection외부 저장소 연결 (저장소당 1개)

패키지 보존 (Retention)

패키지를 Upstream에서 가져오면:
 
1. 가장 하위 Repository에 패키지 참조 유지
2. External Connection이 있는 Repository에 캐시
3. 중간 Repository에는 유지
 
 Upstream에서 삭제되어도 하위 Repository에서 계속 사용 가능!

EventBridge 연동

패키지 생성/수정/삭제 이벤트 발생:
 
CodeArtifact ──event──→ EventBridge ──→ Lambda (재빌드)
                                    ──→ CodePipeline (재배포)
                                    ──→ SNS (알림)
 
사용 사례:
 보안 패치 적용 애플리케이션 재빌드/재배포

7. Amazon CodeGuru

🤔 CodeGuru가 뭔가요?

비유로 이해하기: CodeGuru는 AI 코드 리뷰어입니다.

  • ML로 코드 분석
  • 버그, 보안 취약점, 성능 문제 찾기

CodeGuru 구성

┌─────────────────────────────────────────────────────────────────┐
                    Amazon CodeGuru

  1. CodeGuru Reviewer (정적 코드 분석)                         │
  ┌─────────────────────────────────────────────────────────┐

  PR 생성 CodeGuru 분석 코드 리뷰 코멘트

  찾는 것:
 코딩 베스트 프랙티스 위반
 리소스 누수 (Resource Leak)                          │   │
 보안 취약점
 입력 검증 부족
 하드코딩된 비밀 (Secrets Detector)                   │   │

  지원: Java, Python
  연동: GitHub, Bitbucket, CodeCommit
  └─────────────────────────────────────────────────────────┘

  2. CodeGuru Profiler (런타임 분석)                            │
  ┌─────────────────────────────────────────────────────────┐

  애플리케이션 실행 성능 분석

  찾는 것:
 CPU 과다 사용 코드
 메모리 누수
 코드 비효율성
 이상 탐지

  지원: AWS (EC2, Lambda, ECS), On-premises              │   │
  오버헤드: 최소
  └─────────────────────────────────────────────────────────┘

└─────────────────────────────────────────────────────────────────┘

Secrets Detector

CodeGuru Reviewer가 하드코딩된 비밀 탐지:
 
 비밀번호
 API
 AWS 자격 증명
 SSH
 등등
 
탐지 Secrets Manager로 이동 권장!

8. EC2 Image Builder

🤔 Image Builder가 뭔가요?

비유로 이해하기: AMI 자동 생성 도구입니다.

  • AMI 생성 → 테스트 → 배포 자동화
  • 주기적 실행 가능 (주간, 패키지 업데이트 시)

Image Builder 워크플로우

┌─────────────────────────────────────────────────────────────────┐
                    EC2 Image Builder

  ┌──────────────────┐
  EC2 Image
  Builder
  (Recipe 정의)   │                                          │
  └────────┬─────────┘

 1. Builder EC2 생성
  ┌──────────────────┐
  Builder EC2
  Instance
  (Build 컴포넌트
   적용)          │                                          │
  └────────┬─────────┘

 2. AMI 생성
  ┌──────────────────┐
     New AMI
  └────────┬─────────┘

 3. Test EC2 생성
  ┌──────────────────┐
  Test EC2
  Instance
  (테스트 실행)   │                                          │
  └────────┬─────────┘

 4. 테스트 통과
  ┌──────────────────┐
  AMI 배포
  (Multi-Region,  
   Multi-Account) │                                          │
  └──────────────────┘

  무료! (EC2, EBS 비용만 발생)                                  │

└─────────────────────────────────────────────────────────────────┘

CI/CD 아키텍처

CodeCommit CodeBuild EC2 Image Builder CloudFormation


                            AMI               Rolling Update
                                               (ASG)

최신 AMI 추적

Image Builder SNS Lambda SSM Parameter Store


                              CloudFormation
                              (AMI ID 참조)

9. AWS Amplify

🤔 Amplify가 뭔가요?

비유로 이해하기: Amplify는 풀스택 앱 개발/배포 플랫폼입니다.

  • Frontend + Backend 한 번에
  • Git 푸시 → 자동 배포

Amplify 구성

┌─────────────────────────────────────────────────────────────────┐
                    AWS Amplify

  Frontend:
  ┌─────────────────────────────────────────────────────────┐
  Amplify Console (CI/CD)                                 │   │
 Git 연결 (GitHub, CodeCommit, GitLab, Bitbucket)     │   │
 브랜치별 배포 (dev  dev.example.com)                │   │
 CloudFront + S3로 호스팅
 커스텀 도메인 (Route 53)                             │   │
  └─────────────────────────────────────────────────────────┘

  Backend:
  ┌─────────────────────────────────────────────────────────┐
  Amplify CLI로 백엔드 구성
 Authentication: Cognito
 API: AppSync (GraphQL), API Gateway (REST)          │   │
 Storage: S3, DynamoDB
 Functions: Lambda
 AI/ML: SageMaker, Lex
  └─────────────────────────────────────────────────────────┘

  브랜치별 배포:
  main example.com
  develop dev.example.com
  feature-x feature-x.example.com

└─────────────────────────────────────────────────────────────────┘