Programmers

[83일차]AWS 클라우드 기반 Jenkins CI/CD 파이프라인 구축 및 자동화

PARKpatchnotes 2026. 1. 16. 14:28

1. 클라우드 인프라 도입 배경 및 AWS 활용 계획

클라우드 도입은 초기 하드웨어 투자 비용을 절감하고 자원을 유연하게 확장할 수 있는 장점이 있다. 그러나 자원 관리 소홀 시 과도한 비용 발생 및 클라우드 사업자에 대한 의존이 단점으로 작용할 수 있다.

EC2 (Elastic Compute Cloud)

EC2는 Jenkins Master와 각 Agent를 구동하는 가상 서버로 사용된다. 워크로드에 따라 인스턴스 사양을 변경하여 성능과 비용의 최적화를 구현한다.

AMI (Amazon Machine Image)

AWS AMI를 통해 OS, 라이브러리 및 환경 설정 상태를 이미지로 보관한다. 이를 통해 서버 장애 시 즉각적인 복구가 가능하며 동일한 환경에서 모든 Agent가 동작하도록 보장한다.

ECR (Elastic Container Registry)

ECR은 빌드된 도커 이미지를 저장하는 중앙 저장소로 활용된다. 이는 Jenkins 파이프라인과 연동되어 검증된 이미지만을 안전하게 배포할 수 있는 신뢰 체인을 형성한다.

S3 (Simple Storage Service)

S3는 정적 웹 에셋, 빌드 로그, 파이프라인 결과물을 저장하는 데에 사용된다. 높은 내구성을 바탕으로 데이터를 안전하게 보존하며, 프론트엔드 배포를 위한 효율적인 스토리지 역할을 수행한다.


2. CI/CD 파이프라인 아키텍처 및 Agent 설계

본 파이프라인은 Jenkins Master-Agent 구조를 활용하여 환경 격리와 리소스 효율성을 극대화하도록 설계되었다.

Agent 용도별 분리

  • jnlp: Docker 및 Terraform 클라이언트를 포함하여 인프라 제어와 통신을 담당한다.
  • builder: 단위 테스트 및 빌드 전용 Agent로, 특정 런타임(Node.js 등)에 의존적인 작업을 격리한다.
  • dind (Docker-in-Docker): 컨테이너 이미지 빌드를 위한 독립적 Docker 데몬 환경을 제공한다.
  • tester: Selenium 등 무거운 테스트 도구를 실행하여 테스트 환경 독립성을 보장한다.

3. 단계별 상세 공정 및 설계 근거

📄 단계 1: 소스 코드 검증 및 단위 테스트 (CI)

  • 주요 작업: SCM Checkout, Unit Test, Coverage Report (c8 활용)
  • 목적 및 이유:
    • 조기 발견 (Fail Fast): 코드 오류를 빌드 전 단계에서 조기에 발견하여 수정 비용을 절감한다.
    • 정량적 품질 관리: c8을 활용한 코드 커버리지 측정으로 테스트 누락 구간을 수치화하고 품질 관리를 강화한다.

📄 단계 2: 빌드 및 컨테이너 패키징

  • 주요 작업: Production Build, Docker Image Build, AWS ECR Push
  • 목적 및 이유:
    • 환경 일관성 확보: Docker 컨테이너를 사용하여 환경 간의 의존성 문제를 근본적으로 제거한다.
    • Artifact 관리: ECR에 빌드된 이미지를 버전별로 저장하여 즉각적인 롤백이 가능하게 한다.

📄 단계 3: 스테이징 배포 (IaC)

  • 주요 작업: Terraform을 활용한 AWS EC2 스테이징 환경 프로비저닝 및 배포
  • 목적 및 이유:
    • 인프라의 코드화 (IaC): 서버 설정을 코드로 관리하여 재현성을 높이고 수동 설정 실수를 방지한다.
    • 검증 환경 분리: Production과 동일한 조건에서 사전 테스트를 수행하여 배포 리스크를 줄인다.

📄 단계 4: 인수 테스트 및 자원 회수

  • 주요 작업: Selenium 기반 E2E 테스트, 스테이징 리소스 삭제(destroy)
  • 목적 및 이유:
    • 사용자 관점 검증 (E2E): 실제 사용자 시나리오를 브라우저 수준에서 검증한다.
    • 비용 최적화: 테스트 이후 임시 AWS 리소스를 삭제하여 불필요한 비용 발생을 방지한다.

📄 단계 5: 프로덕션 릴리즈 및 스모크 테스트

  • 주요 작업: 최종 배포 및 서비스 정상 작동 확인
  • 목적 및 이유: 배포 직후 핵심 기능을 점검하여 서비스 가용성을 확정한다.

4. 기대 효과

  • 클라우드 네이티브 환경 최적화: AWS 서비스를 적재적소에 활용하여 인프라 관리 효율성을 증대할 수 있다.
  • 배포 속도 및 안정성: IaC 및 자동화된 테스트를 통해 배포 주기를 단축하고 오류를 줄인다.
  • 유연한 장애 대응: AMI와 ECR에 저장된 이미지를 활용해 재난 복구 및 롤백 능력을 강화할 수 있다.