인스턴스 관리 방법

인스턴스는 App Engine에서 애플리케이션을 자동으로 확장하는 데 사용하는 컴퓨팅 단위입니다. 애플리케이션은 특정 시점에 1개 또는 여러 인스턴스에서 실행될 수 있으며, 요청은 모든 인스턴스로 분산됩니다.

수동 및 기본 확장이 적용되는 인스턴스는 무기한으로 실행되긴 하지만 업타임이 보장되지는 않습니다. 조기 종료나 잦은 다시 시작을 초래하는 하드웨어 또는 소프트웨어 오류는 예고 없이 발생할 수 있으며 해결하는 데 상당한 시간이 걸릴 수 있습니다.

모든 가변형 인스턴스는 매주 다시 시작됩니다. 다시 시작하는 동안 이전 버전과 호환되는 중요한 업데이트가 기본 운영체제에 자동으로 적용됩니다. 다시 시작해도 애플리케이션의 이미지는 동일하게 유지됩니다.

상태 확인

App Engine은 인스턴스가 실행 중인지 확인하고, 인스턴스가 완전히 시작되었고 들어오는 요청을 수락할 준비가 되었는지 확인하기 위해 상태 확인 요청을 주기적으로 전송합니다. 기본적으로 이러한 상태 확인이 사용 설정되어 있으며, 이를 분할 상태 확인이라고 부릅니다. 상태 확인을 수신하는 인스턴스는 지정된 시간 간격 내에 상태 확인에 답해야 합니다.

분할 상태 확인의 기본 동작을 애플리케이션으로 확장해야 하는 경우 app.yaml 파일을 맞춤설정하여 두 가지 상태 확인 유형을 구성할 수 있습니다.

  • 활성 확인은 VM 인스턴스 및 해당 컨테이너가 실행 중인지 확인합니다. VM 인스턴스에서 활성 확인이 실패하면 인스턴스가 자동으로 다시 시작됩니다. 구성된 임계값 및 시간 간격으로 인해 또는 컨테이너 충돌로 인해 활성 확인이 실패할 수 있습니다.
  • 준비 확인은 VM 인스턴스가 들어오는 요청을 수락할 준비가 되었는지 확인합니다. VM 인스턴스에서 준비 확인이 실패하면 VM 인스턴스의 시작 작업이 완료되지 않았고 요청을 수신할 준비가 되지 않았음을 나타냅니다. VM 인스턴스가 준비 확인을 통과하고 시작 작업이 완료되었으면 사용 가능한 인스턴스 풀에 추가됩니다.

분할 상태 확인으로 마이그레이션 가이드에서 분할 상태 확인 동작에 대해 자세히 알아보세요.

인스턴스의 상태 확인이 진행될 때 App Engine 로그에는 인스턴스가 다음 상태 중 하나로 표시될 수 있습니다.

  • 정상. 인스턴스에 상태 확인 요청이 수신되었고 인스턴스가 요청을 처리하는 중입니다. 상태가 양호한 애플리케이션은 HTTP 상태 코드 200으로 상태 확인에 응답해야 합니다.
  • 비정상 인스턴스가 상태 확인 요청을 거부하고 지정된 수의 연속되는 상태 확인 요청에 응답하지 못했습니다. 비정상적 인스턴스가 사전에 지정된 수의 연속되는 상태 확인에 응답하지 못하면 App Engine은 계속해서 상태 확인 요청을 보내고 인스턴스를 다시 시작합니다.
  • 레임덕. 인스턴스가 종료하거나 다시 시작되도록 예약되었습니다. 종료되는 동안 인스턴스는 진행 중인 요청을 완료하고 새 요청을 거부합니다. 앱은 인스턴스가 요청을 처리할 수 없음을 나타내는 503 코드를 반환합니다. 인스턴스가 종료되거나 다시 시작되기 전에 종료 스크립트는 실행 기간이 제한되며, 이를 더 짧게 또는 더 길게 구성할 수 없습니다.
  • 앱 레임덕. 인스턴스가 트래픽 처리를 위해 준비하는 중입니다. 앱은 인스턴스가 요청을 처리할 수 없음을 나타내는 503 코드를 반환합니다. VM 인스턴스가 시작 작업을 완료하고 트래픽을 처리할 준비가 되었으면 인스턴스가 정상 상태가 되고 요청을 처리합니다. VM 인스턴스가 시간 내에 시작하지 않으면 인스턴스가 비정상으로 변경되고 삭제됩니다.

레임덕과 앱 레임덕 동작은 VM 인스턴스가 거치는 정상적인 프로세스의 일부입니다.

리소스 사용량 모니터링

Google Cloud Console의 인스턴스 페이지에서는 인스턴스의 성능을 가시적으로 파악할 수 있습니다. 각 인스턴스의 메모리 및 CPU 사용량, 업타임, 요청 수, 기타 통계를 확인할 수 있습니다. 특정 인스턴스의 종료 프로세스를 직접 시작할 수도 있습니다.

App Engine 가변형 환경의 NTP

App Engine 가변형 환경에는 Google NTP 서버를 사용하는 네트워크 시간 프로토콜(NTP) 서비스가 있습니다. 그러나 가변형 환경의 NTP 서비스는 수정할 수 없습니다.

인스턴스 위치

인스턴스는 프로젝트 설정에 따라 지역을 기준으로 자동 배치됩니다.

인스턴스 확장

애플리케이션 실행 중에 수신되는 요청은 해당 서비스나 버전의 기존 인스턴스 또는 새 인스턴스로 라우팅됩니다. 각 활성 버전에는 실행 중인 인스턴스가 하나 이상 있어야 하며 서비스나 버전의 확장 유형에 따라 추가 인스턴스 생성 방법이 결정됩니다. 앱의 app.yaml에서 확장 유형을 지정합니다. 기본적으로 앱은 자동 확장을 사용하므로 App Engine에서 유휴 인스턴스 수를 관리합니다.

자동 확장
자동 확장은 요청 속도, 응답 지연 시간, 기타 애플리케이션 측정항목을 기반으로 인스턴스를 생성합니다. automatic_scaling 요소를 구성하여 이러한 각 측정항목의 임곗값과 항상 실행되는 최소 인스턴스 수를 지정할 수 있습니다.
수동 확장
수동 확장은 로드 수준과 관계없이 지속적으로 실행되는 인스턴스 수를 지정합니다. 따라서 장기적으로 메모리 상태에 의존하는 복잡한 초기화 등의 작업과 애플리케이션을 지원합니다.