CodeDeploy 인스턴스 상태 - AWS CodeDeploy

CodeDeploy 인스턴스 상태

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

전체 배포가 성공하려면 다음 조건을 충족해야 합니다.

  • CodeDeploy가 배포의 각 인스턴스를 배포할 수 있습니다.

  • 최소 한 개 이상 인스턴스에 대한 배포가 성공해야 합니다. 즉, 최소 정상 호스트 값이 0이더라도, 전체 배포가 성공하려면 최소 한 개 이상 인스턴스에 대한 배포가 성공해야 합니다. 즉, 최소 한 개 이상의 인스턴스가 정상 상태여야 합니다.

필요한 최소 정상 인스턴스 개수는 배포 구성의 일부로 정의되어 있습니다.

중요

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

CodeDeploy는 정상 호스트 값의 최소 개수를 공통적으로 사용하는 3가지 기본 배포 구성을 제공합니다.

기본 배포 구성 이름 사전 정의된 최소 정상 호스트 값
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는 지정된 최소 정상 인스턴스 개수와 실제 정산 인스턴스 개수를 사용하여 여러 인스턴스에 애플리케이션 개정을 배포할지 여부 및 배포 방법을 결정합니다. 기본적으로 는 정상 인스턴스 개수가 지정된 최소 정상 인스턴스 개수 미만으로 줄어들 가능성이 전혀 없이 가능한 한 많은 인스턴스에 애플리케이션 개정을 배포합니다. 예:

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

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

예시

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

최소 정상 인스턴스: 95%

CodeDeploy는 최소 정상 인스턴스를 10개로 반올림합니다. 이 값은 정상 인스턴스 개수와 동일합니다. 개정을 어떠한 인스턴스에도 배포하지 않고 바로 배포에 실패합니다.

최소 정상 인스턴스: 9개

CodeDeploy는 한 번에 1개 인스턴스에 개정을 배포합니다. 인스턴스에 대한 배포가 하나라도 실패할 경우 정상 인스턴스 수가 최소 정상 인스턴스 개수와 동일해지기 때문에 의 전체 배포가 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스에 실패했는데 배포에 성공하는 경우입니다.

CodeDeploy는 한 번이라도 배포 실패가 발생할 때까지 또는 전체 배포가 완료될 때까지 한 번에 1개 인스턴스에 배포를 계속 진행합니다. 10개의 모든 배포가 성공하면 배포 그룹에 정상 인스턴스가 10개가 됩니다.

최소 정상 인스턴스: 8개

CodeDeploy는 한 번에 2개 인스턴스에 개정을 배포합니다. 이러한 배포 중 두 개에 실패하면 는 즉시 모든 배포에 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 두 번째 실패인데 배포에 성공하는 경우입니다.

최소 정상 인스턴스: 0개

CodeDeploy는 전체 배포 그룹에 한번에 개정을 배포합니다. 전체 배포가 성공하려면 인스턴스에 대한 배포가 최소 한 개 이상 성공해야 합니다. 정상 인스턴스 수가 0개이면 배포가 실패합니다. 전체 배포가 성공으로 표시되기 위해서는 전체 배포가 완료되었을 때 정상 인스턴스 최솟값이 0이더라도 정상 인스턴스가 최소 한 개 이상 있어야 하기 때문입니다.