기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
실행의 대기열 동작 구성
CodeCatalystAmazon에서는 기본적으로 여러 워크플로가 동시에 실행되면 시작된 순서대로 워크플로를 CodeCatalyst 대기시키고 하나씩 처리합니다. 실행 모드를 지정하여 이 기본 동작을 변경할 수 있습니다. 몇 가지 실행 모드가 있습니다.
-
(기본값) 대기 실행 모드 - CodeCatalyst 프로세스가 하나씩 실행됩니다.
-
대체된 실행 모드 - CodeCatalyst 프로세스가 하나씩 실행되며 새 실행이 이전 실행보다 우선합니다.
-
병렬 실행 모드 — CodeCatalyst 프로세스가 병렬로 실행
워크플로 실행에 대한 자세한 내용은 을 참조하십시오워크플로 실행.
대기 실행 모드에 대한 정보
대기 실행 모드에서는 실행이 연속으로 진행되며 대기 중인 달리기가 대기열을 형성합니다.
대기열은 작업 및 작업 그룹으로 이어지는 진입점에 형성되므로 동일한 워크플로우 내에 여러 대기열을 둘 수 있습니다 (참조). Figure 1 대기열에 있는 실행이 작업에 들어가면 해당 작업이 잠기고 다른 실행은 들어갈 수 없습니다. 실행이 끝나고 액션을 종료하면 액션의 잠금이 해제되어 다음 실행을 위한 준비가 됩니다.
Figure 1대기 실행 모드로 구성된 워크플로를 보여 줍니다. 표시되는 정보는 다음과 같습니다.
-
Seven 실행은 워크플로를 통해 순조롭게 진행됩니다.
-
대기열 2개: 하나는 입력 소스 항목 외부 (repo:Main) 이고 다른 하나는 작업 항목 외부에 있습니다. BuildTestActionGroup
-
잠긴 블록 두 개: 입력 소스 (리포지:메인) 와 BuildTestActionGroup
워크플로가 실행되고 처리가 완료될 때 상황이 어떻게 진행되는지는 다음과 같습니다.
-
Run-4d444가 소스 리포지토리의 복제를 마치면 입력 소스를 종료하고 Run-3C333 뒤의 대기열에 합류합니다. 그러면 RUN-5E555가 입력 소스로 들어갑니다.
-
Run-1A111이 빌드 및 테스트를 마치면 작업을 종료하고 작업을 시작합니다. BuildTestActionGroupDeployAction 그러면 Run-2B222가 액션에 들어갑니다. BuildTestActionGroup
그림 1: '대기 실행 모드'로 구성된 워크플로
다음과 같은 경우 대기 실행 모드를 사용하십시오.
-
기능과 실행 간의 one-to-one 관계를 유지하려는 경우 대체 모드를 사용할 때 이러한 기능을 그룹화할 수 있습니다. 예를 들어 커밋 1에서 기능 1을 병합하면 1이 시작되고 커밋 2에서 기능 2를 병합하면 2가 시작되는 식입니다. 대기열 모드 대신 대체 모드를 사용하면 실행 시 기능 (및 커밋) 이 그룹화되어 다른 기능을 대체합니다.
-
병렬 모드를 사용할 때 발생할 수 있는 경쟁 상황과 예상치 못한 문제를 피하는 것이 좋습니다. 예를 들어 두 소프트웨어 개발자인 Wang과 Saanvi가 거의 동시에 워크플로를 실행하여 Amazon ECS 클러스터에 배포하는 경우 Wang의 실행은 클러스터에서 통합 테스트를 시작하고 Saanvi의 실행은 클러스터에 새 애플리케이션 코드를 배포하여 Wang의 테스트가 실패하거나 잘못된 코드를 테스트할 수 있습니다. 또 다른 예로, 잠금 메커니즘이 없는 대상이 있을 수 있는데, 이 경우 두 실행이 예상치 못한 방식으로 서로의 변경 내용을 덮어쓸 수 있습니다.
-
실행을 처리하는 데 CodeCatalyst 사용되는 컴퓨팅 리소스의 부하를 제한하려고 합니다. 예를 들어 워크플로에 세 개의 작업이 있는 경우 동시에 최대 세 개의 실행이 발생할 수 있습니다. 한 번에 발생할 수 있는 실행 수를 제한하면 실행 처리량을 더 예측할 수 있습니다.
-
워크플로를 통해 타사 서비스에 보내는 요청 수를 제한하고 싶습니다. 예를 들어 워크플로에 Docker Hub에서 이미지를 가져오는 지침이 포함된 빌드 작업이 있을 수 있습니다. Docker Hub는 계정당 시간당 특정 수로 만들 수 있는 풀 요청 수를 제한하며
, 한도를 초과할 경우 계정이 잠깁니다. 대기 실행 모드를 사용하여 실행 처리량을 줄이면 시간당 Docker Hub에 생성되는 요청 수가 줄어들어 잠김 및 그로 인한 빌드 및 실행 실패 가능성이 제한됩니다.
최대 대기열 크기: 50
최대 대기열 크기에 대한 참고 사항:
-
최대 대기열 크기는 워크플로의 모든 대기열에서 허용되는 최대 실행 수를 나타냅니다.
-
대기열이 50회 이상 실행되면 51번째 및 그 CodeCatalyst 이후의 실행이 삭제됩니다.
실패 동작:
액션으로 처리되는 동안 실행이 응답하지 않는 경우, 실행 시간이 초과될 때까지 실행 뒤에 있는 실행은 대기열에 보관됩니다. 한 시간이 지나면 액션이 타임아웃됩니다.
작업 내에서 실행이 실패하는 경우 해당 작업 뒤에 대기중인 첫 번째 실행이 계속 진행될 수 있습니다.
대체 실행 모드에 대한 정보
대체 달리기 모드는 다음 점을 제외하면 대기 실행 모드와 동일합니다.
-
대기 중인 실행이 대기열에 있는 다른 실행을 따라잡으면 이후 실행이 이전 실행을 대체 (대체) 하고 이전 실행이 취소되고 '대체됨'으로 표시됩니다.
-
첫 번째 bullet에서 설명한 동작의 결과로 대체된 실행 모드를 사용하는 경우 대기열에 하나의 실행만 포함할 수 있습니다.
의 워크플로를 Figure 1 지침으로 삼아 이 워크플로에 대체 실행 모드를 적용하면 다음과 같은 결과가 발생합니다.
-
Run-7g777은 해당 대기열의 다른 두 실행을 대체하며 대기열 #1 에 남아 있는 유일한 실행이 됩니다. Run-6F666 및 Run-5E555는 취소됩니다.
-
Run-3C333은 Run-2B222를 대체하며 대기열 #2 내에 남아 있는 유일한 실행입니다. Run-2B222는 취소될 것입니다.
원하는 경우 대체된 실행 모드를 사용하세요.
-
대기열 모드보다 처리량이 더 좋습니다.
-
대기 모드보다 타사 서비스에 대한 요청 수가 훨씬 적습니다. 이는 타사 서비스에 Docker Hub와 같은 속도 제한이 있는 경우에 유리합니다.
병렬 실행 모드에 대한 정보
병렬 실행 모드에서는 실행이 서로 독립적이므로 시작하기 전에 다른 실행이 완료될 때까지 기다리지 않아도 됩니다. 대기열이 없으며 워크플로우 내의 작업이 완료되는 데 걸리는 속도에 의해서만 실행 처리량이 제한됩니다.
각 사용자가 고유한 기능 브랜치를 갖고 다른 사용자와 공유하지 않는 대상에 배포하는 개발 환경에서 병렬 실행 모드를 사용하십시오.
중요
프로덕션 환경의 Lambda 함수와 같이 여러 사용자가 배포할 수 있는 공유 대상이 있는 경우 경쟁 조건이 발생할 수 있으므로 병렬 모드를 사용하지 마십시오. Parallel 워크플로우 실행에서 공유 리소스를 동시에 변경하려고 시도하면 경쟁 상태가 발생하여 예기치 않은 결과가 발생합니다.
최대 병렬 실행 수: CodeCatalyst 공간당 1000개
실행 모드 구성
실행 모드를 대기열, 대체 또는 병렬로 설정할 수 있습니다. 기본값은 대기열입니다.
실행 모드를 대기열에 추가됨 또는 대체됨에서 CodeCatalyst 병렬로 변경하면 대기열에 있는 실행은 취소되며, 작업에 의해 현재 처리 중인 실행은 취소하기 전에 완료되도록 합니다.
실행 모드를 병렬에서 대기 또는 대체됨으로 변경하면 현재 실행 중인 CodeCatalyst 모든 병렬 실행이 완료됩니다. 실행 모드를 대기 또는 대체 모드로 변경한 후 시작하는 모든 실행은 새 모드를 사용합니다.