AWS/PROJECT

[ 배포 자동화 ]

zhuxiclover 2024. 10. 23. 16:29
  • CI/CD 파이프라인: CodePipeline, CodeBuild, CodeDeploy 또는 Jenkins를 통한 배포 자동화 설정
  • CloudFormation/Terraform: 인프라를 코드로 배포하는 템플릿 설명
  • 배포 과정: 배포 시나리오 및 단계별 설명

 

1. CI/CD 파이프라인 (CodePipeline, CodeBuild, CodeDeploy)

(1) CI/CD 툴 선택

  • AWS CodePipeline : CI/CD 파이프라인을 관리하는 도구로, 소스 코드가 커밋되면 자동으로 빌드, 테스트, 배포까지 진행
  • AWS CodeBuild : 애플리케이션을 빌드하고, 테스트를 자동으로 실행
  • AWS CodeDeploy : EC2 또는 Lambda로 애플리케이션을 자동 배포
  • Jenkins : 자체 CI/CD 서버를 운영하려는 경우 Jenkins를 사용하여 파이프라인 구축

 

(2) CI/CD 파이프라인 구성

  1. 소스 코드 저장소
    • GitHub, Bitbucket 또는 AWS CodeCommit과 연동하여 소스 코드 관리
  2. CodePipeline 흐름
    • 단계 1 : 소스 단계
      • 개발자가 코드 커밋 → 소스 저장소에서 변경 사항 감지 후 파이프라인 트리거
    • 단계 2 : 빌드 단계 (CodeBuild)
      • CodeBuild가 소스 코드를 빌드하고, 테스트 실행 (빌드 도구로는 Maven, Gradle, npm 등 선택 가능)
      • 빌드가 성공하면 아티팩트를 S3에 저장
    • 단계 3 : 배포 단계 (CodeDeploy)
      • CodeDeploy를 통해 빌드된 애플리케이션을 EC2 인스턴스 또는 Lambda 함수로 배포
      • Blue/Green 또는 Rolling 업데이트 방식 사용
    •  단계 4 : 배포 완료 후 테스트 단계
      • 배포 후 테스트 실행 (예: Selenium 테스트, AWS Lambda 기반 자동화 테스트)

 

(3) 배포 전략

  • Blue/Green Deployment
    • 새로운 애플리케이션 버전을 배포할 때 Blue(현재 버전)와 Green(새로운 버전)을 두 개의 환경으로 구분하여, 새로운 버전을 먼저 테스트한 후 최종적으로 전환
    • CodeDeploy에서 쉽게 설정 가능
  • Rolling Deployment
    • 인스턴스 그룹의 일부를 동시에 업데이트하여 점진적으로 새로운 버전을 배포
    • ELB와 연동하여 트래픽을 분산시켜 무중단 배포 가능

 

2. 인프라 자동화 (Infrastructure as Code)

(1) CloudFormation

  • AWS CloudFormation을 사용하여 모든 인프라를 코드로 정의하고 배포
  • 예시: VPC, 서브넷, EC2, RDS, S3 등의 리소스를 템플릿으로 관리

(2) Terraform

  • 멀티 클라우드 환경을 고려하거나 인프라 설정을 좀 더 유연하게 관리하기 위해 Terraform을 사용할 수 있음
  • 모듈화 : Terraform 모듈을 사용하여 VPC, EC2, RDS 등 각각의 구성 요소를 재사용 가능하게 설계

 

3. 배포 과정 (Deployment Workflow)

(1) 배포 시나리오

  1. 개발자가 코드 커밋
    • GitHub 또는 CodeCommit에 소스 코드 푸시
    • CodePipeline에서 변경 사항을 감지하고 파이프라인 실행
  2. 빌드 및 테스트
    • CodeBuild가 빌드 및 테스트 진행. 테스트 성공 시 아티팩트 생성 후 S3에 업로드
  3. 자동 배포
    • CodeDeploy가 배포를 자동화하여 Blue/Green 방식 또는 Rolling 방식으로 애플리케이션을 EC2 인스턴스에 배포
  4. 모니터링
    • 배포가 완료되면 CloudWatch 및 CloudTrail을 통해 로그와 메트릭을 확인하여 애플리케이션 상태를 모니터링
    • 실패 시 롤백

 

(2) 배포 단계별 설명

  • 1단계 : 초기 설정
    • CI/CD 툴 (CodePipeline, Jenkins) 설정
    • 배포 대상 환경에 맞춰 CloudFormation/Terraform 스크립트를 준비
  • 2단계 : 자동 빌드 및 테스트
    • 개발자가 코드를 커밋하면 자동으로 빌드가 시작되고, 기본적인 유닛 테스트가 실행
    • 테스트가 성공하면 빌드 결과물이 배포 준비 상태가 됨
  • 3단계 : 프로덕션 배포
    • CodeDeploy를 사용하여 새로운 애플리케이션 버전을 프로덕션 환경에 배포
    • 배포 전후로 헬스 체크를 통해 무중단 배포 보장
  • 4단계 : 모니터링 및 피드백
    • CloudWatch 알람을 통해 배포 후 서비스 상태를 지속적으로 모니터링
    • 문제가 발생할 경우 롤백 또는 긴급 대응 방안 실행

'AWS > PROJECT' 카테고리의 다른 글

[ 네트워킹 및 로깅 ]  (0) 2024.10.23
[ 요구사항 분석, 아키텍처 설계 ]  (0) 2024.10.23
[ 개요 ]  (0) 2024.10.23