서버리스 네트워크 엔드포인트 그룹 개요

네트워크 엔드포인트 그룹(NEG)은 부하 분산기의 백엔드 엔드포인트 그룹을 지정합니다. 서버리스 NEGCloud Run, App Engine, Cloud Functions 또는 API 게이트웨이 서비스를 가리키는 백엔드입니다.

서버리스 NEG는 다음 중 하나를 나타낼 수 있습니다.

  • Cloud Run 서비스 또는 서비스 그룹
  • Cloud Functions 함수 또는 함수 그룹
  • App Engine 앱(스탠더드 또는 플렉스), 앱 내의 특정 서비스, 앱의 특정 버전, 서비스 그룹
  • 서비스 구현에 관계없이 모든 서비스에서 일관된 REST API를 통해 서비스에 액세스할 수 있는 API 게이트웨이. 이는 미리보기 버전에 있는 기능입니다.

사용 사례

서버리스 NEG는 다음 부하 분산기에서 지원됩니다.

서버리스 앱에 HTTP(S) 부하 분산기가 사용 설정된 경우 다음을 수행할 수 있습니다.

  • 다른 서비스와 공유되지 않는 전용 IPv4 IP 주소에서 제공되도록 서버리스 앱을 구성할 수 있습니다.
  • 단일 URL을 동일한 도메인에서 제공되는 여러 서버리스 함수 또는 서비스에 매핑할 수 있습니다. 이 문서에서는 URL 마스크를 참조하세요.
  • 다른 Google Cloud 컴퓨팅 플랫폼과 URL 공간을 공유 수 있습니다. 여러 백엔드 서비스를 사용하면 단일 부하 분산기가 여러 백엔드 유형에 트래픽을 전송 가능합니다 부하 분산기는 요청 URL의 호스트 및 경로를 기반으로 올바른 백엔드 서비스를 선택합니다.
  • Compute Engine, Google Kubernetes Engine, Cloud Storage에 사용하는 것과 동일한 SSL 인증서와 비공개 키를 재사용할 수 있습니다. 동일한 인증서를 재사용하면 서버리스 앱에 대해 개별 인증서를 관리할 필요가 없습니다.

전역 외부 HTTP(S) 부하 분산기

전역 외부 HTTP(S) 부하 분산기를 설정하면 서버리스 앱을 기존 클라우드 서비스와 통합할 수 있습니다. 다음을 수행하면 됩니다.

  • 외부 HTTP(S) 부하 분산기를 통해 액세스하는 모든 서비스에 제공되는 에지 DDoS 방어/WAF 보안 제품인 Google Cloud Armor로 서비스를 보호할 수 있습니다. 이 기능은 특히 Cloud Run 및 App Engine에서 몇 가지 연관된 제한사항이 있습니다.
  • Cloud CDN을 사용하여 서비스에서 전송을 최적화하도록 사용 설정할 수 있습니다. Cloud CDN은 콘텐츠를 사용자에게 가깝게 캐시합니다. Cloud CDN은 캐시 무효화와 Cloud CDN으로 서명된 URL 등의 기능을 제공합니다.
  • Google의 에지 인프라를 사용하여 사용자와 더욱 가까운 HTTP(S) 연결을 종료하여 지연 시간을 줄일 수 있습니다.

서버리스 컴퓨팅 백엔드로 전역 외부 HTTP(S) 부하 분산기를 구성하는 방법은 다음 문서를 참조하세요.

HTTP(S) 부하 분산과 API 게이트웨이를 통합하면 서버리스 백엔드에서 Cloud Load Balancing에서 제공하는 모든 기능을 활용할 수 있습니다. 자세한 내용은 API 게이트웨이용 HTTP(S) 부하 분산을 참조하세요. 트래픽을 API 게이트웨이로 라우팅하도록 HTTP(S) 부하 분산을 구성하려면 API 게이트웨이용 HTTP(S) 부하 분산 시작하기를 참조하세요. 이는 미리보기 버전에 있는 기능입니다.

리전 외부 HTTP(S) 부하 분산기

리전 외부 HTTP(S) 부하 분산기를 사용하면 (Cloud Run) 백엔드에 규제 또는 규정 준수 요구사항이 있는 워크로드를 실행할 수 있습니다. 예를 들어 애플리케이션의 네트워크 구성 및 트래픽 종료가 특정 리전에 있어야 하는 경우 필요한 관할권 제어를 준수하는 데 리전 외부 HTTP(S) 부하 분산기를 사용하는 것이 좋습니다.

서버리스 컴퓨팅 백엔드로 리전 외부 HTTP(S) 부하 분산기를 구성하는 방법은 Cloud Run으로 리전 외부 HTTP(S) 부하 분산기 설정을 참조하세요.

내부 HTTP(S) 부하 분산기

내부 HTTP(S) 부하 분산이 Cloud Run 백엔드로 구성된 경우,

  • Cloud Run 서비스에 대한 결함 주입, 헤더 재작성, 리디렉션, 트래픽 분할 등의 내부 HTTP(S) 부하 분산 고급 트래픽 관리 기능을 사용 설정할 수 있습니다.
  • 기존 서비스를 Compute Engine, GKE, 온프레미스에서 Cloud Run으로 원활하게 마이그레이션하고 가중치 기반 트래픽 분할을 활용하여 다운타임 없이 트래픽을 Cloud Run으로 점진적으로 전환할 수 있습니다.
  • VPC Service Controls로 Cloud Run 서비스를 보호할 수 있습니다.
  • Cloud Run, Compute Engine, GKE에서 실행되는 서비스에 대해 정책을 적용하는 단일 내부 인그레스 포인트를 설정할 수 있습니다.

서버리스 컴퓨팅 백엔드로 내부 HTTP(S) 부하 분산기를 구성하는 방법은 Cloud Run으로 내부 HTTP(S) 부하 분산기 설정을 참조하세요.

이 페이지의 나머지 부분에서는 HTTP(S) 부하 분산기와 함께 서버리스 NEG를 사용하는 방법을 설명합니다.

다른 유형의 NEG에 대한 자세한 내용은 네트워크 엔드포인트 그룹 개요를 참조하세요.

엔드포인트 유형

서버리스 NEG에는 포트 또는 IP 주소와 같은 네트워크 엔드포인트가 없습니다. NEG와 동일한 리전에 있는 기존 Cloud Run, App Engine 또는 API 게이트웨이, Cloud Functions 서비스만 가리킬 수 있습니다.

서버리스 NEG를 만들 때 Cloud Run, App Engine, API 게이트웨이 또는 Cloud Functions 서비스의 정규화된 도메인 이름(FQDN)을 지정합니다. 엔드포인트는 SERVERLESS 유형입니다. 다른 엔드포인트 유형은 서버리스 NEG에서 지원되지 않습니다.

서버리스 NEG는 두 개 이상의 엔드포인트를 가질 수 없습니다. 엔드포인트가 서버리스 애플리케이션 또는 URL 마스크를 가리킵니다. 부하 분산기는 서버리스 컴퓨팅 애플리케이션의 프런트엔드 역할을 하며 지정된 엔드포인트로 트래픽을 프록시합니다. 하지만 백엔드 서비스에 서로 다른 리전에 여러 서버리스 NEG가 포함된 경우 부하 분산기는 요청 지연 시간을 최소화하기 위해 가장 가까운 리전의 NEG로 트래픽을 전송합니다.

네트워크 계층

전역 외부 HTTP(S) 부하 분산기의 경우 표준 또는 프리미엄 네트워크 서비스 등급을 사용하는 부하 분산기에서 서버리스 NEG를 사용할 수 있습니다. 프리미엄 등급은 여러 리전에 서버리스 NEG를 설정하려는 경우에만 필요합니다.

리전 외부 HTTP(S) 부하 분산기는 항상 표준 등급입니다.

내부 HTTP(S) 부하 분산기는 항상 프리미엄 등급입니다.

부하 분산 구성요소

서버리스 NEG 백엔드를 사용하는 부하 분산기에는 백엔드 서비스만 위한 특수 구성이 필요합니다. 프런트엔드 구성은 다른 프록시 기반 Google Cloud 부하 분산기와 동일합니다. 또한 내부 HTTP(S) 부하 분산기에는 Envoy 프록시를 대신 실행하는 프록시 전용 서브넷이 필요합니다.

다음은 샘플 서버리스 NEG 배포를 보여주는 다이어그램입니다.

외부 HTTP(S)

이 다이어그램은 서버리스 NEG가 글로벌 외부 HTTP(S) 부하 분산기 아키텍처에 어떻게 부합하는지 보여줍니다.

서버리스 앱의 전역 외부 HTTP(S) 부하 분산
서버리스 앱의 전역 외부 HTTP(S) 부하 분산

이 다이어그램은 서버리스 NEG가 리전 외부 HTTP(S) 부하 분산기 아키텍처에 어떻게 부합하는지 보여줍니다.

서버리스 앱의 리전 외부 HTTP(S) 부하 분산
서버리스 앱의 리전 외부 HTTP(S) 부하 분산

내부 HTTP(S)

이 다이어그램은 서버리스 NEG가 내부 HTTP(S) 부하 분산 모델에 어떻게 부합하는지 보여줍니다.

단순 HTTPS 부하 분산(확대하려면 클릭)
서버리스 앱의 내부 HTTP(S) 부하 분산

프런트엔드 구성요소

서버리스 NEG 백엔드를 사용한 부하 분산에는 특별한 프런트엔드 구성이 필요하지 않습니다. 전달 규칙은 IP 주소, 포트, 프로토콜별로 트래픽을 대상 프록시로 라우팅하는 데 사용됩니다. 그런 다음 대상 프록시는 클라이언트의 연결을 종료합니다.

URL 맵은 HTTP(S) 부하 분산기에서 적절한 백엔드 서비스로의 URL 기반 요청 라우팅을 설정하는 데 사용됩니다.

이러한 각 구성요소에 대한 자세한 내용은 특정 부하 분산기 개요의 아키텍처 섹션을 참조하세요.

백엔드 서비스

백엔드 서비스는 부하 분산기에 구성 정보를 제공합니다. 부하 분산기는 백엔드 서비스의 정보를 사용하여 수신 트래픽을 하나 이상의 연결된 백엔드로 보냅니다. 서버리스 NEG는 특정 부하 분산기의 백엔드로 사용할 수 있습니다.

전역 외부 HTTP(S) 부하 분산기에서 사용하는 전역 백엔드 서비스에는 여러 서버리스 NEG가 연결될 수 있지만 리전당 서버리스 NEG 하나만 있을 수 있습니다. 내부 HTTP(S) 부하 분산기와 리전 외부 HTTP(S) 부하 분산기에서 사용하는 리전 백엔드 서비스에는 서버리스 NEG 하나만 연결될 수 있습니다.

각 서버리스 NEG는 다음 중 하나에 연결될 수 있습니다.

  • 단일 함수 또는 서비스의 FQDN
  • 동일한 도메인에서 사용되는 여러 함수 또는 서비스에 연결되는 URL 마스크

URL 마스크는 사용자 요청을 올바른 서비스에 매핑하는 방법을 서버리스 NEG 백엔드에 알려주는 URL 스키마 템플릿입니다. URL 마스크는 서버리스 애플리케이션에 커스텀 도메인을 사용하고 있고 동일한 도메인에서 제공되는 여러 서비스가 있는 경우에 유용합니다. 각 함수 또는 서비스에 대해 개별 서버리스 NEG를 만드는 대신 커스텀 도메인에 대해 일반 URL 마스크를 사용하여 NEG를 만들 수 있습니다. 자세한 내용과 예시는 URL 마스크를 참조하세요.

서버리스 NEG를 백엔드로 추가할 때의 추가적인 제한사항은 제한사항을 참조하세요.

URL 마스크

서버리스 NEG 백엔드는 단일 Cloud Run(또는 App Engine이나 해당하는 경우 Cloud Functions) 서비스 또는 여러 서비스를 가리키는 URL 마스크를 가리킬 수 있습니다. URL 마스크는 URL 스키마의 템플릿입니다. 서버리스 NEG는 이 템플릿을 사용하여 요청을 적합한 서비스에 매핑합니다.

URL 마스크는 서버리스 애플리케이션이 여러 Cloud Run, Cloud Functions 또는 App Engine 서비스로 구성된 경우 서버리스 NEG를 더 쉽게 구성할 수 있는 선택적 기능입니다. 내부 HTTP(S) 부하 분산기와 함께 사용되는 서버리스 NEG는 Cloud Run 서비스를 가리키는 URL 마스크만 사용할 수 있습니다.

URL 마스크는 서버리스 앱이 Google Cloud에서 제공하는 기본 주소가 아닌 커스텀 도메인에 매핑된 경우에 유용합니다. example.com과 같은 커스텀 도메인을 사용하면 동일한 도메인의 여러 하위 도메인 또는 경로에 여러 서비스를 배포할 수 있습니다. 이 경우 각 서비스에 대해 개별 서버리스 NEG 백엔드를 만드는 대신 커스텀 도메인의 일반 URL 마스크(예: example.com/<service>)를 사용하여 단일 서버리스 NEG를 만들 수 있습니다. 이 NEG는 요청의 URL에서 서비스 이름을 추출합니다.

다음 이미지는 URL 마스크를 사용하여 사용자 요청을 다른 서비스에 매핑하는 단일 백엔드 서비스와 서버리스 NEG가 있는 외부 HTTP(S) 부하 분산기를 보여줍니다.

서버리스 앱에 트래픽 분산(확대하려면 클릭)
URL 마스크를 사용하여 트래픽을 다른 서비스로 분산

URL 마스크는 애플리케이션의 서비스가 예측 가능한 URL 스키마를 사용할 때 가장 잘 작동합니다. URL 맵 대신 URL 마스크를 사용하면 loginsearch 서비스에 별도의 서버리스 NEG를 만들 필요가 없다는 장점이 있습니다. 또한 애플리케이션에 새 서비스를 추가할 때마다 부하 분산기 구성을 수정할 필요가 없습니다.

서버리스 NEG에 대한 URL 마스크를 만들고 구성하는 방법은 다음을 참조하세요.

제한사항

  • 서버리스 NEG는 IP 주소 또는 포트와 같은 네트워크 엔드포인트를 가질 수 없습니다.
  • 서버리스 NEG는 해당 NEG가 생성된 리전과 동일한 리전에 있는 서버리스 애플리케이션만을 가리킬 수 있습니다.
  • 서버리스 NEG 백엔드를 사용하는 부하 분산기는 NEG가 가리키는 Cloud Run, App Engine, API 게이트웨이 또는 Cloud Functions 서비스와 동일한 프로젝트에서 만들어야 합니다.
  • 서버리스 NEG로 구성된 부하 분산기는 기본 서버리스 앱 또는 서비스가 예상대로 작동하는지 감지할 수 없습니다. 즉, 서비스가 오류를 반환하더라도 부하 분산기는 트래픽을 계속 전달합니다. 외부 HTTP(S) 부하 분산기로 사용자 트래픽을 라우팅하기 전에 새로운 버전의 서비스를 철저히 테스트해야 합니다.

백엔드 서비스 제한사항

서버리스 NEG 백엔드가 있는 백엔드 서비스에는 다음과 같은 제한사항이 적용됩니다.

  • 전역 백엔드 서비스에는 리전당 서버리스 NEG 하나가 포함될 수 있습니다. 단일 백엔드 서비스에서 여러 서버리스 NEG를 결합하려면 모든 NEG가 서로 다른 리전에서 기능적으로 동일한 배포를 나타내야 합니다. 예를 들어 NEG는 서로 다른 리전에 배포된 동일한 Cloud Run, App Engine 또는 Cloud Functions 서비스를 가리킬 수 있습니다.
  • 리전 백엔드 서비스에는 서버리스 NEG 하나만 연결될 수 있습니다.
  • 백엔드 서비스 제한 시간 설정은 서버리스 NEG 백엔드가 있는 백엔드 서비스에는 적용되지 않습니다. 백엔드 서비스의 resource.timeoutSec 속성을 수정하려고 하면 Timeout sec is not supported for a backend service with Serverless network endpoint groups 오류가 발생합니다.
    서버리스 NEG 백엔드가 있는 백엔드 서비스의 경우 기본 제한 시간은 60분입니다. 이 제한 시간은 구성할 수 없습니다. 애플리케이션에 장기 실행 연결이 필요한 경우 실패 시 요청을 재시도하도록 클라이언트를 구성합니다.
  • 백엔드 서비스에 결합된 모든 서버리스 NEG도 동일한 유형의 백엔드를 사용해야 합니다. 즉, Cloud Run 서버리스 NEG는 다른 Cloud Run 서버리스 NEG와만 결합될 수 있으며 App Engine 서버리스 NEG는 App Engine 서버리스 NEG와만 결합될 수 있습니다.
  • 동일한 백엔드 서비스에서 서버리스 NEG를 다른 유형의 NEG(영역별 또는 인터넷 NEG)와 혼합할 수 없습니다. 예를 들어 동일한 백엔드 서비스에서 GKE 클러스터와 Cloud Run 서비스로 라우팅할 수 없습니다.
  • 서버리스 NEG로 라우팅되는 백엔드 서비스를 설정할 때 특정 필드가 제한됩니다.
    • 분산 모드를 지정할 수 없습니다. 즉, RATE, UTILIZATION, CONNECTION 값은 부하 분산기의 트래픽 분산에 영향을 주지 않습니다.
    • 서버리스 백엔드에는 상태 확인이 지원되지 않습니다. 따라서 서버리스 NEG 백엔드가 포함된 백엔드 서비스는 상태 확인으로 구성할 수 없습니다.
  • gcloud compute backend-services edit 명령어를 사용하여 서버리스 NEG 백엔드가 포함된 백엔드 서비스를 수정할 수 없습니다. 이 문제를 해결하려면 gcloud compute backend-services update 명령어를 대신 사용하세요.

부하 분산기 유형과 서버리스 백엔드에 따라 추가 제한사항이 적용됩니다.

내부 HTTP(S) 부하 분산의 제한사항

  • 내부 HTTP(S) 부하 분산기와 함께 사용되는 서버리스 NEG는 Cloud Run 서비스만 가리킬 수 있습니다.
  • Cloud 콘솔을 사용하여 서버리스 NEG 백엔드가 있는 내부 HTTP(S) 부하 분산기를 설정할 수는 없습니다.
  • 서버리스 백엔드로 내부 HTTP(S) 부하 분산기를 설정하려면 VPC 네트워크에 하나 이상의 VM이 있어야 합니다.

리전 외부 HTTP(S) 부하 분산기 제한사항

  • 리전 외부 HTTP(S) 부하 분산기와 함께 사용되는 서버리스 NEG는 Cloud Run 서비스만 가리킬 수 있습니다.
  • Cloud 콘솔을 사용하여 서버리스 NEG 백엔드가 있는 리전 외부 HTTP(S) 부하 분산기를 설정할 수는 없습니다.
  • 서버리스 백엔드로 리전 외부 HTTP(S) 부하 분산기를 설정하려면 VPC 네트워크에 하나 이상의 VM이 있어야 합니다.

Cloud Run의 제한사항

  • 서버리스 NEG를 사용하는 외부 HTTP(S) 부하 분산은 Cloud Run for Anthos에서 지원되지 않습니다.

Cloud Functions의 제한사항

  • IAP는 Cloud Functions에서 작동하지 않습니다.

App Engine의 제한사항

  • App Engine에서는 멀티 리전 부하 분산이 지원되지 않습니다. 이는 App Engine에 프로젝트당 1개의 리전이 필요하기 때문입니다.
  • 요청 경로에는 하나의 IAP 정책만 허용됩니다. 예를 들어 백엔드 서비스에서 IAP 정책을 이미 설정한 경우 App Engine 앱에서 다른 IAP 정책을 설정하면 안 됩니다.
  • 앱이 부하 분산기(및 사용하는 경우 VPC)에서 전송되는 요청만 수신하도록 인그레스 제어를 사용하는 것이 좋습니다. 그렇지 않으면 사용자가 앱의 App Engine URL을 사용하여 부하 분산기를 통해 전달되는 부하 분산기, Google Cloud Armor 보안 정책, SSL 인증서, 비공개 키를 우회할 수 있습니다.

API 게이트웨이의 제한사항

자세한 내용은 서버리스 NEG 및 API 게이트웨이 제한사항을 참조하세요.

가격 책정

서버리스 NEG가 있는 부하 분산기의 가격 책정 정보를 보려면 네트워크 가격 책정을 참조하세요.

다음 단계