Amazon API Gateway
개발자 안내서

API Gateway canary 릴리스 배포 설정

canary 릴리스란 (다른 소프트웨어뿐 아니라) API의 새 버전을 테스트 목적으로 canary 릴리스로 배포하고 같은 단계에서의 정상 작동을 위해 기본 버전은 프로덕션 릴리스로 배포하는 소프트웨어 개발 전략입니다. 논의를 위해 이 설명서에서는 기본 버전을 프로덕션 릴리스라고 합니다. 이 방법이 합리적이기는 하지만 테스트를 위해 프로덕션 버전이 아닌 어떤 버전에서도 자유롭게 canary 릴리스를 적용할 수 있습니다.

canary 릴리스 배포에서 전체 API 트래픽은 사전 구성된 비율로 프로덕션 릴리스와 canary 릴리스로 임의로 분할됩니다. 일반적으로 canary 릴리스에는 API 트래픽 중 작은 백분율이 주어지며, 프로덕션 릴리스가 나머지를 차지합니다. 업데이트된 API 기능은 canary를 통하는 API 트래픽에만 보입니다. 테스트 범위 또는 성능을 최적화하기 위해 canary 트래픽 백분율을 조정할 수 있습니다.

canary 트래픽을 적은 수준으로 유지하고 선택이 임의로 이루어지면 대부분의 사용자는 새 버전의 잠재적 버그로 인한 부정적 영향을 받지 않으며, 단일 사용자가 부정적 영향을 계속 받는 경우는 없습니다.

테스트 지표가 요구 사항을 통과한 후에는 canary 릴리스를 프로덕션 릴리스로 승격하고 배포에서 canary를 비활성화할 수 있습니다. 이렇게 하면 새 기능을 프로덕션 단계에서 사용할 수 있습니다.

API Gateway에서 canary 릴리스 배포

API Gateway에서 canary 릴리스 배포는 API 기본 버전의 프로덕션 릴리스를 위한 배포 단계를 사용하고, API의 기본 버전과 비교되는 새 버전을 위한 canary 릴리스를 해당 단계에 연결합니다. 이 단계는 초기 배포에 연결되고, canary는 후속 배포에 연결됩니다. 처음에는 단계와 canary 모두 동일한 API 버전을 가리킵니다. 이 단원에서는 단계와 프로덕션 릴리스를 구분하지 않고 사용하며, canary와 canary 릴리스를 구분하지 않고 사용합니다.

canary 릴리스가 포함된 API를 배포하려면 일반 배포단계canary 설정을 추가하여 canary 릴리스 배포를 생성합니다. canary 설정은 기본 canary 릴리스를 설명하고, 단계는 이 배포 내의 API 프로덕션 릴리스를 나타냅니다. canary 설정을 추가하려면 배포 단계에서 canarySettings를 설정하고 다음을 지정하십시오.

canary 릴리스가 활성화된 후에는 canary 릴리스가 비활성화되고 단계에서 canary 설정이 제거될 때까지 배포 단계를 다른 비canary 릴리스 배포에 연결할 수 없습니다.

API 실행 로깅을 활성화하면 canary 릴리스는 모든 canary 요청에 대해 자체 로그와 지표를 생성합니다. 이 로그와 지표는 canary별 CloudWatch Logs 로그 그룹뿐 아니라 프로덕션 단계 CloudWatch Logs 로그 그룹에도 보고됩니다. 액세스 로깅도 마찬가지입니다. 별도의 canary별 로그는 새 API 변경의 유효성을 검사하여 변경을 수락해 canary 릴리스를 프로덕션 단계로 승격하거나 변경을 취소하고 canary 릴리스를 프로덕션 단계에서 되돌릴지 여부를 결정하는 데 유용합니다.

프로덕션 단계 실행 로그 그룹은 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name}으로 명명되며, canary 릴리스 실행 로그 그룹은 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name}/Canary로 명명됩니다. 액세스 로깅의 경우, 새 로그 그룹을 만들거나 기존 로그 그룹을 선택해야 합니다. canary 릴리스 액세스 로그 그룹 이름은 선택한 로그 그룹 이름에 /Canary 접미사가 추가됩니다.

canary 릴리스는 단계 캐시(활성화한 경우)를 사용하여 응답을 저장하고, 사전 구성된 TTL(time-to-live) 기간 내에 캐시된 항목을 사용하여 다음 번 canary 요청에 결과를 반환합니다.

canary 릴리스 배포에서 API 트래픽의 프로덕션 릴리스와 canary 릴리스는 같은 버전이나 서로 다른 버전에 연결할 수 있습니다. 프로덕션 릴리스와 canary 릴리스가 서로 다른 버전에 연결된 경우, 프로덕션 요청의 응답과 canary 요청의 응답은 별도로 캐시되며, 단계 캐시는 프로덕션 요청과 canary 요청에 해당하는 결과를 반환합니다. 프로덕션 릴리스와 canary 릴리스가 같은 배포에 연결된 경우, 단계 캐시는 두 가지 요청 유형에 단일 캐시 키를 사용하여 프로덕션 릴리스와 canary 릴리스의 동일한 요청에 대해 동일한 응답을 반환합니다.