CodeDeploy 인스턴스 상태 - AWS CodeDeploy

CodeDeploy 인스턴스 상태

CodeDeploy는 배포 그룹에 있는 인스턴스의 상태를 모니터링합니다. 정상 인스턴스 수가 배포 중에 배포 그룹에 대해 지정된 최소 정상 인스턴스 수 미만으로 떨어지면 배포에 실패합니다. 예를 들어 배포 중에 85%의 인스턴스를 정상 상태로 유지해야 하고 배포 그룹에 10개의 인스턴스가 포함된 경우, 만약 단일 인스턴스의 배포에 실패하면 전체 배포도 실패합니다. 이는 최신 애플리케이션 버전을 설치할 수 있도록 인스턴스를 오프라인으로 전환하면 사용 가능한 정상 인스턴스 수가 이미 90%로 떨어지기 때문입니다. 각각 하나씩의 실패한 인스턴스와 오프라인 인스턴스 때문에 80%의 인스턴스만 정상 상태이면서 사용 가능한 상태입니다. CodeDeploy가 전체 배포에 실패합니다.

전체 배포에 성공하려면 다음 조건이 참이어야 합니다.

  • CodeDeploy가 배포 중에 각 인스턴스에 배포할 수 있어야 합니다.

  • 하나 이상의 인스턴스에 배포를 성공해야 합니다. 즉, 최소 정상 호스트 값이 0인 경우에도 전체 배포에 성공하려면 하나 이상의 인스턴스에 대한 배포를 성공해야 합니다(즉, 하나 이상의 인스턴스가 정상이어야 함).

필요한 최소 정상 인스턴스 수는 배포 구성의 일부로 정의됩니다.

중요

블루/그린 배포 시 배포 구성과 최소 정상 호스트 값은 원래 환경의 인스턴스가 아닌 대체 환경의 인스턴스에 적용됩니다. 그러나 원래 환경의 인스턴스가 로드 밸런서에서 등록 취소되는 경우 하나의 원본 인스턴스라도 성공적으로 등록 취소되지 않으면 전체 배포가 실패로 표시됩니다.

CodeDeploy는 일반적으로 최소 정상 호스트 값을 사용하는 세 가지 기본 배포 구성을 제공합니다.

기본 배포 구성 이름 미리 정의된 최소 정상 호스트 값
CodeDeployDefault.OneAtATime 99%
CodeDeployDefault.HalfAtATime 50%
CodeDeployDefault.AllAtOnce 0

CodeDeploy에서 배포 구성 작업에서 기본 배포 구성에 대한 자세한 내용을 확인할 수 있습니다.

CodeDeploy에서 사용자 지정 배포 구성을 만들어 고유의 최소 정상 호스트 값을 정의할 수 있습니다. 다음 작업을 사용할 때 이러한 값을 정수 또는 백분율로 정의할 수 있습니다.

상태 확인

CodeDeploy는 각 인스턴스에 두 개의 상태 값(수정 버전 상태인스턴스 상태)을 할당합니다.

수정 버전 상태

수정 버전 상태는 인스턴스에 현재 설치되어 있는 애플리케이션 수정 버전을 기반으로 합니다. 다음과 같은 값이 표시될 수 있습니다.

  • 현재: 배포 그룹이 마지막으로 배포에 성공한 수정 버전과 인스턴스에 설치된 수정 버전이 일치합니다.

  • 이전: 인스턴스에 설치된 수정 버전이 애플리케이션의 이전 버전과 일치합니다.

  • 알 수 없음: 애플리케이션의 수정 버전이 인스턴스에 성공적으로 설치되지 않았습니다.

인스턴스 상태

인스턴스 상태는 인스턴스에 대한 배포를 성공했는지 여부에 따라 결정됩니다. 다음과 같은 값을 가질 수 있습니다.

  • 정상: 인스턴스에 대한 마지막 배포에 성공했습니다.

  • 비정상: 인스턴스에 수정 버전을 배포하려는 시도가 실패했거나 수정 버전이 아직 인스턴스에 배포되지 않았습니다.

CodeDeploy는 수정 버전 상태 및 인스턴스 상태를 사용하여 배포 그룹의 인스턴스에 대한 배포를 다음 순서로 예약합니다.

  1. 비정상 인스턴스 상태.

  2. 알 수 없음 수정 버전 상태.

  3. 이전 수정 버전 상태.

  4. 현재 수정 버전 상태.

전체 배포에 성공하면 수정 버전이 업데이트되고 배포 그룹의 상태 값이 최신 배포를 반영하도록 업데이트됩니다.

  • 배포에 성공한 모든 현재 인스턴스는 현재 상태로 유지됩니다. 그렇지 않으면 알 수 없음 상태가 됩니다.

  • 배포에 성공한 모든 이전 인스턴스 또는 알 수 없음 상태의 모든 인스턴스는 현재 상태가 됩니다. 그렇지 않으면 이전 상태 또는 알 수 없음 상태로 유지됩니다.

  • 배포에 성공한 모든 정상 인스턴스는 정상 상태로 유지됩니다. 그렇지 않으면 비정상 상태가 됩니다.

  • 배포에 성공한 모든 비정상 인스턴스는 정상 상태가 됩니다. 그렇지 않으면 비정상 상태로 유지됩니다.

전체 배포에 실패하거나 중지된 경우:

  • CodeDeploy가 애플리케이션 수정 버전을 배포하려고 시도한 각 인스턴스는 해당 인스턴스에 대한 배포 시도의 성공 또는 실패 여부에 따라 해당 인스턴스 상태가 정상 또는 비정상으로 설정됩니다.

  • CodeDeploy가 애플리케이션 수정 버전을 배포하려고 시도하지 않은 각 인스턴스는 현재 인스턴스 상태 값을 유지합니다.

  • 배포 그룹의 수정 버전은 동일하게 유지됩니다.

최소 정상 인스턴스 및 배포

CodeDeploy를 사용하면 두 가지 주요 목적을 위해 배포에 관한 정상 인스턴스의 최소 개수를 지정할 수 있습니다.

  • 전체 배포의 성공 또는 실패 여부를 확인하기 위해. 애플리케이션 수정 버전이 최소 정상 인스턴스 수에 성공적으로 배포된 경우 배포에 성공합니다.

  • 배포가 진행되도록 배포 중에 정상 상태를 유지해야 하는 인스턴스 수를 확인하기 위해.

배포 그룹의 최소 정상 인스턴스 수를 인스턴스 수 또는 전체 인스턴스 수의 백분율로 지정할 수 있습니다. 백분율을 지정할 경우 배포 시작 시 CodeDeploy는 이 백분율을 해당 인스턴스 수로 변환하고 소수점 값은 반올림합니다.

CodeDeploy는 배포 프로세스 중에 배포 그룹 인스턴스의 상태를 추적하고 배포를 위해 지정된 최소 수의 정상 인스턴스를 사용하여 배포를 계속할지 여부를 결정합니다. 기본 원칙은 배포 시에 정상 인스턴스 수가 지정한 최소 개수보다 낮아서는 안 된다는 것입니다. 이 규칙의 한 가지 예외는 처음부터 배포 그룹의 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작은 경우입니다. 이 경우 배포 프로세스는 정상 인스턴스의 수를 더 이상 줄이지 않습니다.

참고

CodeDeploy는 배포 그룹의 모든 인스턴스(현재 중지 상태인 인스턴스 포함)에 배포를 시도합니다. 최소 정상 호스트 계산에서 중지된 인스턴스는 실패한 인스턴스와 동일한 영향을 미칩니다. 중지된 인스턴스가 너무 많아 배포에 실패한 경우 이를 해결하려면 인스턴스를 다시 시작하거나 태그를 변경하여 배포 그룹에서 제외합니다.

CodeDeploy는 배포 그룹의 비정상 인스턴스에 애플리케이션 수정 버전을 배포하려고 시도하여 배포 프로세스를 시작합니다. 배포에 성공할 때마다 CodeDeploy는 인스턴스의 상태를 정상으로 변경하고 배포 그룹의 정상 인스턴스에 추가합니다. 그런 다음 CodeDeploy는 현재 정상 인스턴스 수를 지정된 최소 정상 인스턴스 수와 비교합니다.

  • 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작거나 같으면 CodeDeploy는 배포를 취소하여 더 많은 배포에 따라 정상 인스턴스 수가 줄어들지 않도록 합니다.

  • 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 하나 이상 많으면 CodeDeploy는 애플리케이션 수정 버전을 원래 정상 인스턴스 집합에 배포합니다.

정상 인스턴스에 대한 배포에 실패하면 CodeDeploy는 해당 인스턴스의 상태를 비정상으로 변경합니다. 배포가 진행됨에 따라 CodeDeploy는 현재 정상 인스턴스 수를 업데이트하고 지정된 최소 정상 인스턴스 수와 비교합니다. 배포 프로세스상의 어느 지점에서든 정상 인스턴스 수가 지정된 최소 수보다 적아지면 CodeDeploy는 배포를 중지합니다. 이렇게 하면 다음 배포에 실패하여 정상 인스턴스 수가 지정된 최소 수 미만으로 떨어질 가능성을 방지할 수 있습니다.

참고

지정한 최소 인스턴스 수가 배포 그룹에 있는 전체 인스턴스 수보다 작아야 합니다. 백분율 값을 지정하면 반올림됩니다. 그렇지 않으면 배포가 시작될 때 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작거나 같으며 CodeDeploy는 전체 배포에 즉시 실패합니다.

또한 CodeDeploy는 지정된 최소 정상 인스턴스 수와 실제 정상 인스턴스 수를 사용하여 애플리케이션 수정 버전을 여러 인스턴스에 배포할지 여부와 방법을 결정합니다. 기본적으로 CodeDeploy는 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수 미만으로 떨어질 위험 없이 가능한 한 많은 인스턴스에 애플리케이션 수정 버전을 배포합니다. 예:

  • 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 9로 설정한 경우 CodeDeploy는 한 번에 하나의 인스턴스에 배포합니다.

  • 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 0으로 설정한 경우 CodeDeploy는 동시에 모든 인스턴스에 배포됩니다.

다음 예에서는 인스턴스가 10개인 배포 그룹을 가정합니다.

최소 정상 인스턴스: 95%

CodeDeploy는 최소 정상 인스턴스 수를 10개의 인스턴스로 반올림합니다. 이는 정상 인스턴스의 수와 같습니다. 어느 인스턴스에도 수정 버전을 배포하지 않고 전체 배포는 즉시 실패합니다.

최소 정상 인스턴스: 9

CodeDeploy는 한 번에 하나의 인스턴스에 수정 버전을 배포합니다. 어느 하나의 인스턴스에 대한 배포에 실패하면 정상 인스턴스 수가 최소 정상 인스턴스 수와 같아지므로 CodeDeploy의 전체 배포는 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 실패했는데 전체 배포에 성공하는 경우입니다.

CodeDeploy는 배포에 실패하거나 전체 배포가 완료될 때까지 한 번에 한 인스턴스씩 배포를 계속합니다. 10개의 배포를 모두 성공하면 배포 그룹에는 10개의 정상 인스턴스가 있게 됩니다.

최소 정상 인스턴스: 8

CodeDeploy는 한 번에 두 개의 인스턴스에 수정 버전을 배포합니다. 이러한 배포 중 두 개가 실패하면 CodeDeploy의 전체 배포는 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 두 번째로 실패한 경우 배포가 계속 성공하는 경우입니다.

최소 정상 인스턴스: 0

CodeDeploy는 수정 버전을 전체 배포 그룹에 한 번에 배포합니다. 전체 배포에 성공하려면 하나 이상의 인스턴스에 대해 배포를 성공해야 합니다. 정상 인스턴스의 수가 0이면 배포에 실패합니다. 이는 전체 배포를 성공으로 표시하려면 최소 정상 인스턴스 값이 0인 경우에도 전체 배포가 완료될 때 적어도 하나의 인스턴스가 정상이어야 한다는 요구 사항 때문입니다.