기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
실행의 대기열 동작 구성
Amazon CodeCatalyst에서 기본적으로 여러 워크플로가 동시에 실행되면 CodeCatalyst는 워크플로를 대기열에 넣고 시작 순서대로 하나씩 처리합니다. 실행 모드를 지정하여 이 기본 동작을 변경할 수 있습니다. 몇 가지 실행 모드가 있습니다.
-
(기본값) 대기 중 실행 모드 - CodeCatalyst 프로세스가 하나씩 실행됩니다.
-
대체된 실행 모드 - CodeCatalyst 프로세스는 하나씩 실행되며, 최신 실행은 이전 실행보다 우선합니다.
-
병렬 실행 모드 - CodeCatalyst 프로세스는 병렬로 실행됩니다.
워크플로 실행에 대한 자세한 내용은 워크플로 실행 섹션을 참조하세요.
대기 중 실행 모드 정보
대기 중 실행 모드 에서 실행은 직렬로 수행되며 대기열을 구성하는 대기 실행이 있습니다.
대기열은 작업 및 작업 그룹에 대한 진입점에 형성되므로 동일한 워크플로 내에 여러 대기열을 가질 수 있습니다(Figure 1 참조). 대기 중인 실행이 작업에 들어가면 작업이 잠기고 다른 실행은 입력할 수 없습니다. 실행이 완료되고 작업을 종료하면 작업이 잠금 해제되고 다음 실행을 위한 준비가 됩니다.
Figure 1 는 대기 중 실행 모드로 구성된 워크플로를 보여줍니다. 표시되는 정보는 다음과 같습니다.
-
워크플로를 통해 7번의 실행이 수행됩니다.
-
두 개의 대기열: 입력 소스에 대한 항목 외부의 대기열(Repo:main)과 BuildTestActionGroup 작업에 대한 항목 외부의 대기열.
-
두 개의 잠긴 블록: 입력 소스(Repo:main) 및 BuildTestActionGroup.
워크플로가 처리 완료를 실행함에 따라 상황이 어떻게 트랜스피어링되는지는 다음과 같습니다.
-
Run-4d444가 소스 리포지토리 복제를 완료하면 입력 소스를 종료하고 Run-3c333 뒤에 있는 대기열에 조인합니다. 그런 다음 Run-5e555가 입력 소스를 입력합니다.
-
Run-1a111이 빌드 및 테스트를 완료하면 BuildTestActionGroup 작업을 종료하고 DeployAction 작업에 들어갑니다. 그런 다음 Run-2b222는 BuildTestActionGroup 작업에 들어갑니다.
그림 1: '대기 중 실행 모드'로 구성된 워크플로

다음과 같은 경우 대기 중 실행 모드를 사용합니다.
-
기능과 실행 간에 일대일 관계를 유지하려는 경우 대체된 모드 를 사용할 때 이러한 기능을 그룹화할 수 있습니다. 예를 들어 커밋 1에서 기능 1을 병합하면 1이 시작되고 커밋 2에서 기능 2를 병합하면 2가 시작되는 등의 작업이 수행됩니다. 대기중 모드 대신 대체된 모드를 사용하는 경우 다른 기능(및 커밋)을 대체하는 기능(및 커밋)이 실행에서 함께 그룹화됩니다.
-
병렬 모드 를 사용할 때 발생할 수 있는 레이스 조건과 예상치 못한 문제를 피하려고 합니다. 예를 들어 Wang과 Saanvi라는 두 소프트웨어 개발자가 Amazon ECS 클러스터에 배포하기 위해 워크플로를 거의 동시에 실행하는 경우 Wang의 실행은 클러스터에서 통합 테스트를 시작할 수 있지만 Saanvi의 실행은 클러스터에 새 애플리케이션 코드를 배포하여 Wang의 테스트가 실패하거나 잘못된 코드를 테스트합니다. 또 다른 예로 잠금 메커니즘이 없는 대상이 있을 수 있습니다. 이 경우 두 실행이 예상치 못한 방식으로 서로의 변경 사항을 덮어쓸 수 있습니다.
-
CodeCatalyst가 실행을 처리하는 데 사용하는 컴퓨팅 리소스에 대한 부하를 제한하려고 합니다. 예를 들어 워크플로에 작업이 3개 있는 경우 동시에 최대 3회 실행할 수 있습니다. 한 번에 발생할 수 있는 실행 수에 제한을 가하면 실행 처리량을 더 예측할 수 있습니다.
-
워크플로를 통해 타사 서비스에 대한 요청 수를 제한하려고 합니다. 예를 들어 워크플로에 Docker Hub에서 이미지를 가져오는 지침이 포함된 빌드 작업이 있을 수 있습니다. Docker Hub는 계정별로 시간당 특정 수로 수행할 수 있는 풀 요청 수를 제한
하며, 한도를 초과하면 잠깁니다. 대기 중 실행 모드를 사용하여 실행 처리량을 줄이면 시간당 Docker Hub에 대한 요청을 더 적게 생성할 수 있으므로 잠금 및 그에 따른 빌드 및 실행 실패의 가능성이 제한됩니다.
최대 대기열 크기: 50
최대 대기열 크기에 대한 참고 사항:
-
최대 대기열 크기는 워크플로의 모든 대기열에 허용되는 최대 실행 수를 나타냅니다.
-
대기열이 50회 이상 실행되면 CodeCatalyst는 51번째 및 후속 실행을 삭제합니다.
실패 동작:
작업으로 처리되는 동안 실행이 응답하지 않으면 작업 시간이 초과될 때까지 대기열에 실행이 보류됩니다. 1시간 후 작업 제한 시간입니다.
작업 내에서 실행이 실패하면 작업 뒤에 있는 첫 번째 대기 중 실행을 계속 진행할 수 있습니다.
대체된 실행 모드 정보
대체된 실행 모드는 다음을 제외하고 대기 중 실행 모드와 동일합니다.
-
대기열에서 대기 중인 실행이 대기열의 다른 실행을 따라잡으면 이후 실행이 이전 실행을 대체(인계)하고 이전 실행이 취소되고 '대체됨'으로 표시됩니다.
-
첫 번째 글머리 기호에 설명된 동작의 결과로 대체된 실행 모드를 사용하는 경우 대기열에 하나의 실행만 포함될 수 있습니다.
Figure 1의 워크플로를 가이드로 사용하면 대체된 실행 모드를 이 워크플로에 적용하면 다음과 같은 결과가 발생합니다.
-
Run-7g777은 대기열의 다른 두 실행을 대체하며 Queue #1에 남아 있는 유일한 실행입니다. Run-6f666 및 Run-5e555가 취소됩니다.
-
Run-3c333은 Run-2b222를 대체하며 Queue #2에 남아 있는 유일한 실행입니다. Run-2b222가 취소됩니다.
원하는 경우 대체된 실행 모드를 사용합니다.
-
대기 중 모드보다 처리량 향상
-
대기 중 모드보다 타사 서비스에 대한 요청이 훨씬 적음. 이는 타사 서비스에 Docker Hub와 같은 속도 제한이 있는 경우 유용합니다.
병렬 실행 모드 정보
병렬 실행 모드에서 실행은 서로 독립적이며 시작하기 전에 다른 실행이 완료될 때까지 기다리지 않습니다. 대기열이 없으며 실행 처리량은 워크플로 내 작업이 완료되는 데 걸리는 속도에 따라 제한됩니다.
각 사용자에게 자체 기능 브랜치가 있고 다른 사용자가 공유하지 않는 대상에 배포하는 개발 환경에서 병렬 실행 모드를 사용합니다.
중요
프로덕션 환경의 Lambda 함수와 같이 여러 사용자가 배포할 수 있는 공유 대상이 있는 경우 레이스 조건이 발생할 수 있으므로 병렬 모드를 사용하지 마세요. 레이스 조건은 병렬 워크플로 실행이 공유 리소스를 동시에 변경하려고 시도할 때 발생하며, 이로 인해 예측할 수 없는 결과가 발생합니다.
최대 병렬 실행 수: CodeCatalyst 스페이스당 1,000개
실행 모드 구성
실행 모드를 대기 중, 대체된 또는 병렬로 설정할 수 있습니다. 기본값은 대기 중입니다.
실행 모드를 대기 중이나 대체된에서 병렬로 변경하면 CodeCatalyst는 대기열에서 대기 중인 실행을 취소하고 현재 작업으로 처리 중인 실행을 취소하기 전에 완료할 수 있도록 허용합니다.
실행 모드를 병렬에서 대기 중 또는 대체된으로 변경하면 CodeCatalyst는 현재 실행 중인 모든 병렬 실행을 완료하도록 허용합니다. 실행 모드를 대기 중 또는 대체된으로 변경한 후 시작하는 모든 실행은 새 모드를 사용합니다.