Cloud Functions 위치

Cloud Functions리전을 기반으로 합니다. 즉 Cloud 함수를 실행하는 인프라가 특정 리전에 있으며 해당 리전 내의 모든 영역에서 중복으로 사용할 수 있도록 Google이 관리합니다.

함수를 실행할 지역을 선택할 때 가장 우선적으로 고려해야 할 사항은 지연 시간과 가용성입니다. 일반적으로 사용자와 가장 가까운 지역을 선택하게 되지만 앱에서 사용하는 기타 제품 및 서비스의 위치도 고려해야 합니다. 여러 리전에서 서비스를 사용하면 앱의 지연 시간과 가격이 영향을 받을 수 있습니다.

기본적으로 함수는 us-central1 리전에서 실행됩니다. Cloud Storage 버킷과 같은 이벤트 소스의 리전과 다를 수 있습니다. 이 페이지 뒷부분에서 함수가 실행되는 리전을 지정하는 방법을 알아보세요.

지원되는 리전

이 섹션의 목록에서 energy_savings_leaf 아이콘은 이 리전의 전기가 저탄소 배출로 생성되었음을 나타냅니다. 자세한 내용은 Google Cloud 리전의 무탄소 에너지를 참조하세요.

Tier 1 가격

Cloud Functions는 다음 리전에서 Tier 1 가격 책정으로 사용할 수 있습니다.

지역 위치 지원되는 제품 버전 CO2(이산화탄소) 배출
asia-east1 타이완 1세대, 2세대
asia-east2 홍콩 1세대만
asia-northeast1 도쿄 1세대, 2세대
asia-northeast2 오사카 1세대, 2세대
europe-north1 핀란드 2세대만 energy_savings_leaf
europe-southwest1 마드리드 2세대만
europe-west1 벨기에 1세대, 2세대 energy_savings_leaf
europe-west4 네덜란드 2세대만
europe-west8 밀라노 2세대만
europe-west9 파리 2세대만 energy_savings_leaf
me-west1 텔아비브 2세대만
europe-west2 런던 1세대만
us-central1 아이오와 1세대, 2세대 energy_savings_leaf
us-east1 사우스캐롤라이나 1세대, 2세대
us-east4 북 버지니아 1세대, 2세대
us-east5 콜럼버스 2세대만
us-south1 댈러스 2세대만
us-west1 오리건 1세대, 2세대 energy_savings_leaf

Tier 2 가격

Cloud Functions는 다음 리전에서 Tier 2 가격 책정으로 사용할 수 있습니다.

지역 위치 지원되는 제품 버전 CO2(이산화탄소) 배출
asia-east2 홍콩 2세대만
asia-northeast3 서울 1세대, 2세대
asia-southeast1 싱가포르 1세대, 2세대
asia-southeast2 자카르타 1세대, 2세대
asia-south1 뭄바이 2세대만
asia-south2 인도 델리 2세대만
australia-southeast1 시드니 1세대, 2세대
australia-southeast2 멜버른 2세대만
europe-central2 바르샤바 1세대, 2세대
europe-west2 런던 2세대만
europe-west3 프랑크푸르트 1세대, 2세대 energy_savings_leaf
europe-west6 취리히 1세대, 2세대 energy_savings_leaf
europe-west10 베를린 2세대만
europe-west12 토리노 2세대만
me-central1 도하 2세대만
me-central2 Dammam 2세대만
northamerica-northeast1 몬트리올 1세대, 2세대 energy_savings_leaf
northamerica-northeast2 토론토 2세대만 energy_savings_leaf
southamerica-east1 상파울로 1세대, 2세대 energy_savings_leaf
southamerica-west1 칠레 산티아고 2세대만
us-west2 로스앤젤레스 1세대, 2세대
us-west3 솔트레이크시티 1세대, 2세대
us-west4 라스베이거스 1세대, 2세대

특정 프로젝트의 특정 리전에서 사용하는 함수의 이름은 고유(대소문자를 구분하지 않음)해야 하지만, 다른 리전 또는 프로젝트에서 사용하는 함수의 경우 이름이 동일해도 됩니다.

리전 지정 권장사항

기본적으로 함수는 us-central1 리전에서 실행됩니다. Cloud Storage 버킷과 같은 이벤트 소스의 리전과 다를 수 있습니다. 함수가 실행되는 리전을 지정해야 할 경우 이 섹션에서 각 함수의 트리거 유형별 권장사항을 따르세요.

함수가 실행되는 리전을 설정하려면 다음과 같이 함수 정의에서 region 매개변수를 설정합니다.

Node.js

exports.firestoreAsia = onDocumentCreated(
  {
    document: "my-collection/{docId}",
    region: "asia-northeast1",
  },
  (event) => {},
);

Python

# Before
@firestore_fn.on_document_created("my-collection/{docId}")
def firestore_trigger(event):
    pass

# After
@firestore_fn.on_document_created("my-collection/{docId}",
                                  region="asia-northeast1")
def firestore_trigger_asia(event):
    pass

region에서 쉼표로 구분된 여러 리전 문자열을 전달하여 리전을 여러 개 지정할 수 있습니다. 또한 여러 백그라운드 트리거 유형의 리전을 지정할 때는 리전과 함께 올바른 이벤트 필터를 지정해야 합니다. 위의 예시에서 이는 이벤트를 내보내는 Cloud Firestore document입니다. Cloud Storage 트리거의 경우 이벤트 필터는 bucket이 될 수 있고 Pub/Sub 트리거의 경우 topic이 될 수 있습니다.

프로덕션 트래픽을 처리하는 함수의 리전을 변경하는 방법에 관한 자세한 내용은 함수 리전 변경을 참조하세요.

HTTP 및 클라이언트 호출 가능 함수

HTTP 및 호출 가능 함수의 경우, 함수를 일단 대상 지역 또는 고객이 가장 많이 위치할 것으로 예상되는 지역으로 설정한 다음 HTTP 요청을 새로운 함수로 리디렉션하도록 원래 함수를 변경하는 것이 좋습니다(두 함수의 이름이 동일해도 상관없음). HTTP 함수의 클라이언트가 리디렉션을 지원하는 경우 원래 함수가 새로운 함수의 URL에 따라 HTTP 리디렉션 상태(301)를 반환하도록 변경하기만 하면 됩니다. 클라이언트에서 리디렉션을 제대로 처리하지 않는 경우, 원래 함수에서 새로운 함수로 새 요청을 시작하여 원래 함수의 요청을 새로운 함수로 프록시하면 됩니다. 최종 단계로 모든 클라이언트가 새로운 함수를 호출하는지 확인합니다.

호출 가능한 함수의 클라이언트 측 위치 선정

호출 가능한 함수와 관련된 경우 클라이언트 호출 가능한 설정이 HTTP 함수와 동일한 가이드라인을 따라야 합니다. 또한 클라이언트는 리전을 지정할 수 있으며 함수가 us-central1 이외의 다른 리전에서 실행되는 경우에는 반드시 지정해야 합니다.

클라이언트에서 리전을 설정하려면 초기화할 때 원하는 리전을 지정합니다.

Swift

lazy var functions = Functions.functions(region:"europe-west1")

Objective-C

@property(strong, nonatomic) FIRFunctions *functions;
// ...
self.functions = [FIRFunctions functionsWithRegion:@"europe-west1"];


var functions = firebase.app().functions('europe-west1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("europe-west1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("europe-west1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("europe-west1");

백그라운드 함수

백그라운드 함수는 최소 1회 이벤트 전송 의미 체계를 사용합니다. 즉, 일부 상황에서는 중복 이벤트를 수신할 수 있으므로 멱등성을 갖도록 구현해야 합니다. 함수에 이미 멱등성이 있는 경우에는 동일한 이벤트 트리거로 새로운 지역에 함수를 재배포할 수 있으며, 새로운 함수가 트래픽을 제대로 수신하는지 확인한 후 기존 함수를 제거해도 됩니다. 이 전환 중에는 두 함수 모두 이벤트를 수신합니다. 함수 리전을 변경하는 권장 명령어 시퀀스는 함수 리전 변경을 참조하세요.

현재 함수에 멱등성이 없거나 함수의 멱등성이 리전 외부로 확장되지 않은 경우에는 함수를 옮기기 전에 먼저 멱등성을 구현하는 것이 좋습니다.

최적의 권장 지역은 이벤트 트리거 유형에 따라 다릅니다.

트리거 유형 권장 지역
Cloud Firestore Cloud Firestore 인스턴스 위치와 가장 가까운 리전(다음 섹션 참고)
Realtime Database 항상 us-central1
Cloud Storage Cloud Storage 버킷 위치와 가장 가까운 리전(다음 섹션 참조)
기타 Realtime Database 인스턴스, Cloud Firestore 인스턴스 또는 함수 내 Cloud Storage 버킷과 상호작용하는 경우 권장 리전은 해당 리소스 중 하나로 함수를 트리거했을 때와 동일합니다. 그렇지 않으면 기본 리전인 us-central1을 사용합니다. Firebase Hosting에 연결된 함수는 모든 리전에 있을 수 있지만 권장사항은 호스팅 서버리스 개요를 참조하세요.

Cloud FirestoreCloud Storage 위치에 따른 리전 선택

함수에 사용 가능한 리전은 Cloud Firestore 데이터베이스 및 Cloud Storage 버킷에 사용 가능한 리전과 항상 정확히 일치하지는 않습니다.

함수와 리소스(데이터베이스 인스턴스 또는 Cloud Storage 버킷)가 다른 위치에 있으면 지연 시간 및 청구 비용이 늘어날 수 있습니다.

동일한 리전이 지원되지 않는 경우 Cloud FirestoreCloud Storage의 가장 가까운 함수 지원 리전은 다음과 같습니다.

Cloud FirestoreCloud Storage의 리전/멀티 리전 가장 가까운 함수 리전
nam5 또는 us-central(멀티 리전) us-central1
eur3 또는 europe-west(멀티 리전) europe-west1
europe-west4(네덜란드) europe-west1
asia-south1(뭄바이) asia-east2
asia-south2(델리) asia-east2
australia-southeast2(멜버른) australia-southeast1