기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CI/CD 파이프라인 모범 사례
다음은 완전한 CI/CD 파이프라인의 모범 사례입니다.
-
프로덕션 환경 보호 - IaC를 사용하여 계정 및 환경 유지 관리에 필요한 거의 모든 기능을 수행할 수 있으므로 콘솔 및 프로그래밍 방식 액세스를 제한하여 프로덕션 환경을 보호하기 위해 모든 노력을 기울이는 것이 중요합니다. 액세스를 소수의 사용자 또는 0명의 사용자로만 제한하는 것이 좋습니다. AWS CloudFormation을 통해 IaC를 배포하는 경우 사용자에게 제한된 권한이 필요합니다. 대부분의 권한은 서비스 역할을 통해 CloudFormation 서비스에 할당됩니다. 자세한 내용은 CloudFormation 설명서의 서비스 역할 및 Implementing policies for least-privilege permissions for AWS CloudFormation을 참조하세요.
-
각 환경에 대해 별도의 계정 생성 - 각 환경에 별도의 계정을 전용으로 사용하여 배포 프로세스를 단순화하고 계정 수준에서 세분화된 액세스 제어를 생성할 수 있습니다. 여러 환경이 리소스를 공유하면 격리된 단위로 환경의 무결성이 감소합니다. 지속적으로 환경을 동기화하고 구분하는 것이 가장 좋습니다. 이는 프로덕션 환경에서 훨씬 더 중요합니다. 해당 계정의 모든 요소를 프로덕션 리소스로 처리해야 하기 때문입니다.
-
개인 식별 정보(PII)를 프로덕션 환경으로 제한 - 보안 및 법적 책임 위험으로부터 보호하기 위해 PII를 최대한 보호합니다. 하위 환경에서 가능한 경우 프로덕션 환경에서 잠재적으로 민감한 데이터를 복사하는 대신 익명화된 데이터 또는 샘플 데이터를 사용합니다.
-
리포지토리의 코드 검토 - 완전한 CI/CD 프로세스는 파이프라인의 진입점을 단일 지점으로 줄이고 해당 단일 지점을 보호해야 합니다. 따라서 기능 브랜치를 기본 브랜치에 병합하기 전에 여러 코드 검토를 요구하는 것이 좋습니다. 이러한 코드 검토는 자격을 갖춘 팀원이 수행할 수 있지만 한 명 이상의 시니어 멤버가 검토해야 합니다. 코드는 검토자가 엄격하게 테스트해야 합니다. 무엇보다 파이프라인에서 문제를 해결하는 가장 좋은 방법은 문제가 파이프라인에 유입되지 않도록 하는 것입니다. 또한 병합하기 전에 검토자의 모든 의견을 해결하는 것이 중요합니다. 이때 해결은 변경이 필요하지 않은 이유에 대한 설명 정도로 그칠 수 있지만 모든 의견을 해결하는 것은 파이프라인에 문제가 유입되는 것을 방지하는 데 도움이 되는 중요한 추가적인 검사입니다.
-
작고 빈번한 병합 수행 - 지속적인 통합을 최대한 활용하려면 로컬 변경 사항을 파이프라인으로 지속적으로 푸시하는 것이 좋습니다. 결국 로컬 환경에서도 개발 환경을 따라잡은 경우 개발 환경을 동기화하는 편이 훨씬 더 유용합니다.
CI/CD 파이프라인에 대한 추가 모범 사례는 AWS에서 지속적인 통합 및 지속적인 전송 적용의 모범 사례 요약을 참조하세요. .