복원력이 우수한 컨트롤 플레인 읽기에 리전 뷰 사용

컨트롤 플레인 종속 항목 은 애플리케이션에서 리소스 정의를 관리하는 API 및 메타데이터 서비스입니다. 가용성이 높고 복원력이 우수한 애플리케이션을 빌드하고 Compute Engine에서 배포 워크플로를 자동화하려면 이러한 종속 항목을 격리하는 것이 중요합니다. 전역 API 엔드포인트는 모든 리전에서 strong consistency를 제공하지만 전역 컨트롤 플레인 또는 원격 리전의 일시적인 지연 시간 급증 또는 중단으로 인해 로컬 서비스가 지연되거나 차단될 수 있습니다.

전역 API 중단을 견디고 각 리전 내에서 독립적으로 작동할 수 있는 안정적인 애플리케이션을 빌드하려면 전역 리소스의 리전 뷰를 쿼리하도록 서비스를 구성하면 됩니다. 리전화된 읽기 전용 API 엔드포인트를 사용하여 리소스 정의를 읽으면 애플리케이션이 특정 리전의 컨트롤 플레인과 엄격하게 통신합니다. 이러한 리전 장애 격리를 통해 전역 중단이 발생하더라도 서비스의 가용성과 응답성을 높게 유지할 수 있습니다.

지원되는 리소스 유형

리전 뷰 엔드포인트는 다음 전역 리소스에 사용할 수 있습니다.

  • 프로젝트: projectViews 엔드포인트는 전역 프로젝트 리소스에 대한 리전 읽기 전용 액세스를 제공합니다.
  • OS 이미지: imageViews 엔드포인트는 전역 OS 이미지 리소스에 대한 리전 읽기 전용 액세스 를 제공합니다.

제한사항

모든 전역 리소스의 메타데이터는 중앙 전역 데이터베이스에 저장됩니다. 표준 전역 API 엔드포인트를 사용하여 리소스를 만들거나, 읽거나, 업데이트하거나, 삭제하면 Compute Engine은 중앙 전역 데이터베이스에서 읽기를 요청하고 여기에 직접 쓰므로 strong consistency가 제공됩니다.

리전 뷰 엔드포인트는 중앙 전역 데이터베이스의 리전 읽기 전용 복제본에서 리소스 메타데이터를 읽습니다. 변경사항은 이러한 리전 복제본에 비동기식으로 복사되므로 리전 뷰를 쿼리할 때 다음과 같은 동작이 발생할 수 있습니다.

  • 약간의 지연: 리소스를 전역적으로 만들거나, 업데이트하거나, 삭제하면 변경사항이 모든 리전 뷰 엔드포인트에 복사되는 데 최대 60초가 걸릴 수 있습니다. 이 짧은 기간 동안 리전 뷰에서 읽으면 약간 오래된 데이터가 반환될 수 있습니다.
  • 자동 대체: 리전 뷰에서 리소스를 요청하기 전에 해당 리전에 복사가 완료되지 않으면 Compute Engine은 요청이 계속 성공하도록 중앙 전역 데이터베이스에서 직접 읽습니다.

리전 뷰와 전역 API의 차이점

다음 탭에는 각 리소스 유형의 리전 뷰 엔드포인트와 표준 전역 API 엔드포인트의 차이점이 요약되어 있습니다.

프로젝트

다음 표에는 프로젝트 리소스의 리전 뷰 엔드포인트와 표준 전역 API 엔드포인트의 차이점이 요약되어 있습니다.

기능 전역 API 리전 뷰 API
엔드포인트 전역 리전
리소스 URL /projects/PROJECT_ID /projects/PROJECT_ID/regions/REGION/projectViews
장애 도메인 전역 지정된 리전으로 격리됨
지원되는 메서드 읽기 및 쓰기 읽기 전용 (Get)
API 할당량 전역 API 읽기 및 쓰기 할당량 버킷을 사용합니다. 리전 API 읽기 할당량 버킷을 사용합니다.
쓰기 직후 읽기 일관성 strong consistency (중앙 전역 데이터베이스에서 읽음) eventual consistency (리전 복제본에서 읽음)
할당량 필드 동작 리전 간 팬아웃을 사용하여 모든 리전과 영역에서 실시간 할당량 사용량 데이터를 제공하는 quota 배열을 반환합니다. quota 배열은 반환된 Project 객체에서 제외됩니다. projectViews 엔드포인트는 리전 복제본에서만 읽고 할당량 측정항목을 수집하기 위해 리전 간 팬아웃을 실행하지 않으므로 quota 배열이 전혀 반환되지 않습니다. 할당량 구성 한도 및 정확한 실시간 사용량 측정항목은 전역 projects.get 엔드포인트를 쿼리합니다.

OS 이미지

다음 표에는 OS 이미지 리소스의 리전 뷰 엔드포인트와 표준 전역 API 엔드포인트의 차이점이 요약되어 있습니다.

기능 전역 API 리전 뷰 API
엔드포인트 전역 리전
리소스 URL /projects/PROJECT_ID/global/images /projects/PROJECT_ID/regions/REGION/imageViews
장애 도메인 전역 지정된 리전으로 격리됨
지원되는 메서드 읽기 및 쓰기 읽기 전용 (Get 및 List)
API 할당량 전역 API 읽기 및 쓰기 할당량 버킷을 사용합니다. 리전 API 읽기 할당량 버킷을 사용합니다.
쓰기 직후 읽기 일관성 strong consistency (중앙 전역 데이터베이스에서 읽음) eventual consistency (리전 복제본에서 읽음)

가격 책정

리전 읽기 전용 API 엔드포인트를 통해 리전 뷰에 액세스하는 데는 추가 요금이 발생하지 않습니다. 표준 전역 Compute Engine API 요청과 마찬가지로 리전 뷰 엔드포인트에 대한 요청 은 프로젝트의 표준 API 할당량(특히 리전 API 읽기 할당량)을 사용하지만 추가 요금이 발생하지는 않습니다.

고가용성을 위한 권장사항

애플리케이션 복원력을 극대화하고, 불균형한 제어 영역 부하를 방지하고, 단일 리전 핫스팟을 만들지 않으려면 자동화된 시스템과 클라이언트 워크로드를 구성할 때 다음 안정성 관행을 따르세요.

  • 영향을 받는 영역을 줄이기 위해 로컬 리전 쿼리: 클라이언트 워크로드 또는 배포 클러스터가 실행되는 정확한 리전에 projectViews 및 imageViews API 요청을 보냅니다. 영역 워크로드의 경우 상위 리전을 사용합니다. 읽기를 현지화하면 다른 리전의 네트워크 중단 또는 서비스 중단이 로컬 서비스에 영향을 미치지 않습니다.
  • 리전 문자열 동적으로 감지: 공유 클라이언트 라이브러리 또는 배포 템플릿에서 특정 기본 리전 문자열을 하드 코딩하지 마세요. 대신 멀티 리전 장애 조치가 투명하게 작동하도록 로컬 런타임 환경에서 워크로드의 현재 실행 리전을 동적으로 감지합니다.
  • 경쟁 워크로드에 대해 리전 할당량 격리 사용: Compute Engine은 리전별로 API 비율 제한을 적용합니다. 한 리전의 트래픽 급증 또는 제어되지 않는 스크립트는 다른 중요 리전의 API 가용성에 영향을 미치거나 비율 제한 (429 Too Many Requests)을 트리거하지 않고 해당 특정 리전의 버킷에서 읽기 할당량을 사용합니다.

다음 단계