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