기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
지속적 통합 및 지속적 전송(CI/CD)
기존 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 더 빠르게 애플리케이션과 서비스를 발전시키고 개선합니다.
지속적 통합
시작
소프트웨어 구성 요소 관리 채택
소프트웨어 구성 요소 관리는 라이브러리, 프레임워크, 소스 코드 리포지토리, 모듈, 아티팩트 및 서드 파티 종속성을 포함하여 소프트웨어를 빌드하는 데 사용되는 모든 개별 구성 요소를 관리하는 사례입니다. Git 또는 Apache Subversion과 같은 버전 제어 시스템을 사용하여 소스 코드를 관리하고, 협업을 활성화하며, 코드 변경 기록을 유지하는 것이 좋습니다. 리포지토리의 변경 사항 및 이벤트를 모니터링하여 프로세스를 자동화하고, 파이프라인을 생성하며, 코드를 관리하고, 필요에 따라 워크플로를 추가 서비스와 통합할 수 있습니다.
CI/CD 파이프라인 생성
CI/CD 파이프라인은 버전 제어 시스템에 커밋된 변경 사항에 의해 시작되는 일련의 자동화된 명령입니다. 여기에는 일반적으로 애플리케이션 빌드, 자동화된 테스트 실행, 특정 환경에 코드 배포에 대한 명령이 포함됩니다. AWS CodePipeline, Jenkins, GitLab 또는 CircleCI와 같은 도구를 사용하여 자동화된 CI/CD 파이프라인을 설정할 수 있습니다. 파이프라인 생성을 지원하는 버전 관리 시스템에서 직접 설정할 수도 있습니다.
지속적 통합을 위해 실행 가능한 최소 파이프라인으로 시작한 다음 더 많은 작업과 단계가 포함된 지속적 전송
코드를 배포하려는 날짜 및 시간인 배포 기간을 고려합니다. 시스템의 수요가 적은 시간을 고려합니다. 롤백해야 하는 경우 이때가 고객에게 미치는 영향이 가장 적습니다. 다른 모범 사례로, 금요일에는 배포를 피하고 성수기 또는 공휴일 이전에 코드 동결을 구현하는 것이 포함됩니다. 커밋 작성자를 사용할 수 없는 경우(예: 휴가 중) 코드 배포 규칙을 정의하는 것이 좋습니다. 배포에 실패하고 외부 도움이 필요할 수 있습니다. 인플레이스, 롤링, 변경 불가능, 블루/그린 배포와 같은 여러 배포 방법을 평가합니다. 가용성과 보안을 높이는 동시에 복잡성과 관리를 최소화하려면 지속적 전송 워크플로에 완전관리형 서비스를 사용하는 방법을 고려합니다.
자동화된 테스트 배포
최신 사례에서는 리포지토리에 커밋되고 파이프라인을 시작하기 전에 문제를 감지하고 해결하도록 시프트 레프트(테스트를 개발자 및 IDE
자동화된 테스트는 개발 프로세스 초기에 오류를 포착하며 유닛 테스트, 통합 테스트 및 기능 테스트를 포함합니다. 개발자에게 도구를 사용
설명서 생성
CI/CD 파이프라인을 구현하여 개발 워크플로를 간소화하는 것 외에도 파이프라인의 지속적인 효율성, 유지 관리 가능성 및 확장성을 보장하기 위해 명확하고 포괄적인 설명서를 유지 관리해야 합니다. 설명서는 이를 통해 개발 팀이 파이프라인의 설계, 구성 요소 및 프로세스를 명확하게 이해할 수 있기 때문에 CI/CD 파이프라인의 중요한 측면입니다. 설명서를 생성할 때 파이프라인 개요로 시작하고, 아키텍처 및 설계 장단점을 설명하며, 사용 중인 도구 및 기술을 설명하고, 초기 구성 및 설정을 지정하며, 보안 조치 및 액세스 제어를 간략하게 설명하고, 문제 해결 및 유지 관리 정보를 포함합니다.
코드형 인프라(IaC) 사용
Terraform, Ansible 또는 AWS CloudFormation와 같은 도구를 사용하여 인프라를 관리하고 일관되고 재현 가능한 환경을 보장합니다. 인프라를 코드로 처리하고, 인프라의 변경 사항을 추적하며, 콘솔에서 직접 변경하지 않도록 합니다. 데이터베이스 프로비저닝을 포함한 모든 인프라를 코드로 정의하고 파이프라인을 사용하여 이러한 변경 사항을 배포합니다. 제거된 프로덕션 데이터의 작은 하위 세트가 있는 파이프라인에서 데이터베이스 통합을 코드로 실행하는 방법을 고려합니다. 가능하면 변경을 수행하고 코드에서 해당 변경 사항을 추적합니다.
소프트웨어 코드와 마찬가지로 인프라 코드에 대한 다음 모범 사례를 따릅니다.
-
버전 제어를 사용합니다.
-
버그 추적 및 티켓팅 시스템을 사용합니다.
-
동료가 변경 사항을 적용하기 전에 검토하도록 합니다.
-
인프라 코드 패턴 및 설계를 설정합니다.
-
인프라 변경 사항을 테스트합니다.
표준 지표 유지 및 추적
높은 수준의 성능을 유지하려면 다음을 포함하여 파이프라인의 상태 및 비즈니스 영향을 이해하기 위해 주요 지표를 개발하고 이를 기준으로 추적합니다.
-
빌드 빈도. 빌드 수는 팀의 생산성과 변경 사항의 복잡성에 대한 인사이트를 제공합니다.
-
배포 빈도. 정기적인 배포는 정상적이고 민첩한 개발 프로세스를 나타냅니다.
-
변경 사항에 대한 리드 타임. 변경 사항이 프로덕션에 도달하는 평균 시간을 측정하면 배포 프로세스의 병목 현상을 식별하는 데 도움이 될 수 있습니다.
-
파이프라인까지 평균 시간. 초기 파이프라인 단계에서 각 후속 단계까지의 평균 시간은 워크플로를 최적화하는 데 도움이 될 수 있습니다.
-
프로덕션 변경 볼륨. 프로덕션에 도달한 변경 횟수를 추적하면 프로덕션 환경의 안정성에 대한 인사이트를 얻을 수 있습니다.
-
빌드 시간. 평균 빌드 시간은 코드베이스 또는 인프라의 잠재적 문제를 나타낼 수 있습니다.
고급
구성 관리 사용
구성 관리 도구는 소프트웨어 및 인프라의 배포, 구성, 관리를 자동화하는 데 중요한 역할을 합니다. 이러한 도구는 다양한 환경에서 인프라, 소프트웨어 및 구성의 원하는 상태를 유지하고 변경 사항을 처리하는 체계적인 접근 방식을 제공합니다. 이러한 도구를 통해 개발자는 선언적 또는 필수 언어를 사용하여 원하는 시스템 상태를 정의할 수 있습니다. 그런 다음 구성 관리 도구는 이러한 구성을 대상 시스템에 적용하는 프로세스를 자동화하여 일관성과 반복성을 보장합니다.
구성 관리 도구를 사용하여 소프트웨어 및 인프라의 배포, 구성, 관리를 자동화합니다. AWS Systems Manager State Manager는 안전하고 확장 가능한 구성 관리 서비스로, 관리형 노드 및 다른 AWS 리소스를 사용자가 정의한 상태로 유지하는 프로세스를 자동화합니다.
모니터링 및 로깅 통합
모니터링 및 로깅 솔루션을 CD 파이프라인에 통합하면 개발 팀과 전체 소프트웨어 개발 프로세스에 많은 이점이 있습니다. 이러한 솔루션은 애플리케이션 성능에 대한 실시간 인사이트를 제공하고, 문제를 더 빠르게 식별 및 해결하며, 지속적 개선을 촉진하여 애플리케이션이 수명 주기 전반에 걸쳐 신뢰성, 성능 및 확장성을 유지할 수 있도록 지원합니다. 모니터링 및 로깅 솔루션에 대한 투자는 강력하고 효율적인 CD 파이프라인을 유지 관리하는 핵심이며, 궁극적으로 고품질 소프트웨어를 성공적으로 전달하는 데 기여합니다.
병합을 위한 케이던스 생성
코드 변경 사항을 매일 한 번 이상 또는 각 태스크 이후 하루에 여러 번 기본 라인(트렁크 또는 기본) 브랜치에 커밋하거나 병합합니다. 이 케이던스로 인해 일일 파이프라인 간접 호출이 여러 번 발생합니다. 풀 기반 분기 워크플로 모델이 이 접근 방식에 부합합니다. 기능 플래그
배포 후 동작 캡처
배포 후 자동화된 가상 테스트를 사용하여 프로덕션 동작을 캡처하고 결과를 지속적 전송 파이프라인과 동기화하여 수정 조치가 즉시 수행되도록 합니다. 개발자의 최고 우선순위는 파이프라인에서 발견된 오류를 최대한 빨리 수정하고, 소스 코드 리포지토리에 코드 변경을 커밋하며, 파이프라인에서 오류 해결을 확인하는 것입니다.
배포 후 모범 사례에는 가장 중요한 핵심 성과 지표(KPI)를 관찰하고 프로덕션 환경에 오류가 없는지 확인하는 작업이 포함됩니다. 오류 처리 및 배포 후 KPI 평가를 자동화하여 릴리스의 영향을 정량화합니다. 개발자가 개선에 사용할 수 있는 속도, 보안 및 안정성 지표를 자동으로 생성합니다. 자세한 내용은 AWS의 DevOps Monitoring Dashboard
Excel
최적의 성능을 위해 최첨단 관행 및 기술을 채택합니다. CI/CD 프로세스를 지속적으로 개선하면 소프트웨어 품질을 개선하고, 출시 시간을 단축하며, 민첩성을 높일 수 있습니다. 새로운 기술과 도구가 지속적으로 출현하므로 조직은 최신 정보를 유지하고 경쟁 우위를 유지하기 위해 적응해야 합니다.
적응성을 유지하려면 다음을 고려하세요.
-
애플리케이션, 구성, 인프라, 데이터, AWS 계정 및 조직, 배포 파이프라인, 네트워킹, 보안 및 규정 준수 제어를 포함하여 모든 기능을 코드로 정의합니다.
-
컴퓨팅 이미지, 공유 서비스 및 애플리케이션에 해당하는 배포 파이프라인
을 생성합니다. -
코드에서 설명한 대로 기존 인프라 상태를 원하는 상태와 비교하여 풀 기반 요청이 변경 사항을 배포하는 워크플로를 시작하는 GitOps 모델을 고려합니다.
-
CD 파이프라인을 사용하여 기계 학습(ML), 데이터, 사물 인터넷(IoT) 및 기타 워크로드를 배포하는 방법을 고려합니다.
-
모든 빌드 아티팩트에 디지털 서명을 하고 안전한 리포지토리에 저장합니다.
-
고객에게 배포된 모든 버전 관리 및 디지털 서명 아티팩트의 레코드를 생성하는 소프트웨어 BOM을 자동으로 생성하여 소프트웨어 출처를 추적합니다.
-
소프트웨어 전달 프로세스에서 모든 수동 활동을 제거한 후에는 수동 검토 보드를 제거합니다.
전체 소프트웨어 전달 프로세스를 자동화한 애플리케이션 및 서비스의 경우 팀이 파이프라인의 모든 검사를 통과한 변경 사항을 프로덕션의 고객에게 전달하는 지속적 배포를 고려합니다. 시각화의 경우 AWS 웹 사이트의 What is Continuous Delivery?
AI/ML 기술 통합
인공 지능(AI) 및 기계 학습(ML) 기술을 CI/CD 파이프라인에 통합하면 다음을 비롯해 몇 가지 이점이 있습니다.
-
자동화된 테스트 생성
-
지능형 테스트 우선순위 지정
-
문제 감지를 위한 예측 분석
-
이상 감지 및 근본 원인 분석
-
코드 검토 및 품질 보증
-
배포 최적화
자세한 내용은 AWS 웹 사이트의 개발자 작업에 인텔리전스 추가
카오스 엔지니어링 사례 채택
카오스 엔지니어링에는 예기치 않은 이벤트를 견디고 복구하는 역량을 테스트하기 위해 의도적으로 시스템에 장애를 주입하는 작업이 포함됩니다. 조직은 약점을 식별하고 선제적으로 해결함으로써 전반적인 시스템 신뢰성을 개선하고 잠재적 문제의 영향을 최소화할 수 있습니다.
카오스 엔지니어링 사례를 채택하여 Gremlin, Chaos Monkey 또는 Litmus와 같은 도구를 통해 시스템의 복원력을 테스트합니다. 제어된 실험을 정기적으로 실행하여 취약성을 식별하고, 내결함성을 검증하며, 애플리케이션이 예상치 못한 장애를 원활하게 처리하도록 합니다. 이 선제적 접근 방식은 시스템 신뢰성을 개선하고 보다 강력한 CI/CD 파이프라인에 기여하는 데 도움이 됩니다.
성능 최적화
프로파일링 도구, 실시간 모니터링 및 피드백 루프를 사용하여 애플리케이션 성능을 지속적으로 최적화합니다. 애플리케이션이 늘어난 트래픽과 수요를 처리할 수 있도록 다음과 같은 기술을 적용합니다.
-
비용 최적화
-
프로파일링
-
실시간 모니터링
-
피드백 루프
-
캐싱
-
로드 밸런싱
-
확장성 및 성능 테스트
고급 관찰성 구현
클라우드 인프라의 관찰성을 높이는 작업은 지표, 로그 및 추적을 수집, 집계, 분석하는 기본적인 수준을 넘어섭니다. Amazon CloudWatch 및 AWS X-Ray와 같은 도구를 사용하여 관찰성이 향상되면 지속적 전송과 혁신을 촉진하는 전략적 사례로 발전합니다.
강력한 CI/CD 파이프라인에서 고급 관찰성을 활용하면 애플리케이션 및 인프라뿐만 아니라 파이프라인 자체를 포함한 전체 시스템의 성능 및 상태에 대한 인사이트를 발견할 수 있습니다. 이러한 인사이트로 다음과 같은 이점을 얻을 수 있습니다.
-
잠재적 문제를 신속하게 식별, 파악 및 해결하여 애플리케이션 안정성을 개선하고 가동 중지 시간을 줄입니다.
-
CI/CD 프로세스를 간소화하여 더 빠르고 신뢰할 수 있는 전달 지원
-
코드 변경 및 배포의 영향에 대한 심층적인 인사이트를 확보하여 정보에 입각해 의사 결정을 촉진합니다.
-
운영 효율성 향상 및 비용 효율성을 개선하도록 리소스 사용률을 최적화합니다.
관찰성을 높이려면 다음을 수행합니다.
-
애플리케이션 및 인프라의 모든 계층에 관찰성을 포함시켜 시스템의 성능, 동작 및 상태에 대한 포괄적인 보기를 생성합니다.
-
Amazon CloudWatch와 같은 도구를 사용하여 데이터 수집, 스토리지 및 분석을 중앙 집중화함으로서 쉽게 액세스하고 해석할 수 있도록 관찰성 데이터를 통합합니다.
-
분산 추적에 AWS X-Ray를 사용하여 애플리케이션과 기본 서비스의 성능을 파악합니다.
-
지속적 개선을 위해 피드백 루프를 설정하고 관찰성 데이터를 사용하여 시스템을 반복적으로 개선합니다.
고급 관찰성을 채택하는 것은 단순히 시스템을 유지 관리하는 것이 아니라 운영 우수성을 달성하고 조직에서 지속적 혁신을 추진하기 위한 전략적 움직임입니다.
GitOps 사례 구현
Git 리포지토리를 단일 정보 소스로 사용하여 인프라 및 애플리케이션 구성을 관리하는 GitOps 사례를 구현합니다. 이 접근 방식은 변경 관리를 간소화하고 추적성을 개선하며 환경 간 일관성을 보장합니다.