Cloud Functions 위치

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

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

Cloud 함수는 다음 지역에서 사용 가능합니다.

  • us-central1(아이오와)
  • us-east1(사우스캐롤라이나)
  • europe-west1(벨기에)
  • asia-northeast1(도쿄)

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

지역 변경 권장사항

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

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

exports.myStorageFunction = functions
    .region('europe-west1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

functions.region()에서 지역을 쉼표로 구분한 여러 문자열을 전달하여 여러 지역을 지정할 수 있습니다. 권장 절차에 대한 자세한 내용은 함수 지역 변경을 참조하세요.

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

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

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

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

클라이언트에서 지역을 설정하려면 다음과 같이 초기화할 때 원하는 지역을 지정하세요.

Swift

lazy var functions = Functions.functions(region:"us-central1")

Objective-C

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


var functions = firebase.app().functions('us-central1');

Android

private FirebaseFunctions mFunctions;
// ...
mFunctions = FirebaseFunctions.getInstance("us-central1");

C++

firebase::functions::Functions* functions;
// ...
functions = firebase::functions::Functions::GetInstance("us-central1");

Unity

firebase.Functions.FirebaseFunctions functions;

functions = Firebase.Functions.FirebaseFunctions.GetInstance("us-central1");

백그라운드 함수

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

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

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

트리거 유형 권장 지역
Cloud Firestore Cloud Firestore 인스턴스 위치와 가장 가까운 지역(다음 섹션 참조)
실시간 데이터베이스 항상 us-central1
저장소 저장소 버킷 위치와 가장 가까운 지역(다음 섹션 참조)
기타 실시간 데이터베이스 인스턴스, Cloud Firestore 인스턴스 또는 함수 내의 저장소 버킷과 상호작용하는 경우 권장 지역은 해당 리소스로 함수를 트리거했을 때와 동일합니다. 그 외의 경우에는 기본 지역(us-central1)을 사용합니다. Firebase 호스팅에 연결된 함수도 us-central1에 있어야 합니다.

Cloud Firestore 및 저장소 지역 선택

함수 지역은 Firebase 프로젝트 사용이 가능한 지역과 정확히 일치하지는 않습니다. Firebase 프로젝트를 만들 때 지역을 지정한 경우 이 지역은 Firebase에서 Cloud Firestore 인스턴스를 만든 지역과 동일하며 저장소 버킷의 기본 지역이기도 합니다. Cloud Firestore 및 저장소를 트리거하는 함수에 대해 가장 가까운 함수 지역의 매핑은 다음과 같습니다.

Cloud Firestore/저장소 지역/다중 지역 가장 가까운 함수 지역
nam5/us-central 다중 지역 us-central1
us-east1(사우스캐롤라이나) us-east1
us-east4(북 버지니아) us-east1
northamerica-northeast1(몬트리올) us-central1
eur3/europe-west 다중 지역 europe-west1
europe-west2(런던) europe-west1
europe-west3(프랑크푸르트) europe-west1
asia-northeast1(도쿄) asia-northeast1
asia-south1(뭄바이) asia-northeast1
australia-southeast1(시드니) asia-northeast1
southamerica-east1(상파울루) us-east1

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.