고급 청구 알림 및 로직 설정

간단한 예산 알림 이메일을 사용하면 청구 관련 업데이트를 비교적 쉽게 받을 수 있지만 맞춤설정된 로직이 포함된 보다 정교한 알림을 만들어야 하는 경우도 있습니다. 이 경우 고려해 볼 만한 두 가지 방법을 소개합니다.

  • Cloud Monitoring을 사용하여 더 정교하고 시기적절한 알림 만들기

  • 청구 Pub/Sub 알림과 해당하는 Cloud 함수를 사용해 지출 변화에 따른 커스텀 동작 만들기

이 두 방법에는 사용자가 해야 할 작업이 많지만 수신되는 알림 유형과 응답하는 방식을 정확하게 제어할 수 있습니다.

이 페이지에서는 각 방식을 간략히 설명합니다.

Cloud Monitoring으로 더 정교한 알림 만들기

간단한 예산 알림 이메일을 사용하면 전체 청구 금액이 특정 기준에 도달했을 때 이를 알 수 있습니다. 하지만 예산에 큰 영향을 미치기 전에 개별 서비스가 예기치 않게 증가할지 여부를 파악해야 하는 경우도 있습니다. 이처럼 보다 정교한 사용 사례의 경우 Firebase 프로젝트에 사용할 수 있는 Google Cloud 도구인 Cloud Monitoring에 대해 알아보는 것이 좋습니다.

Cloud Monitoring은 다음과 같은 여러 가지 다양한 유형의 알림에 유용합니다.

  • Firebase 및 Google Cloud 서비스는 물론 AWS와 같은 외부 서비스에서 프로젝트에 필요한 리소스를 사용할 수 없는 경우

  • Cloud Functions와 같은 서비스의 응답 시간이 예상보다 오래 걸리는 경우

  • Cloud Storage 버킷, Realtime Database 인스턴스 또는 Cloud Firestore 인스턴스가 너무 많은 요청을 거부하는 경우(Firebase Security Rules이 잘못되었을 수 있음을 나타냄)

  • 일부 Firebase 제품에서 사용하는 리소스 양이 증가하여 특정 기준을 초과한 경우

Cloud Monitoring을 통해 만든 알림은 보통 하루에 한 번 전송되는 간단한 예산 알림 이메일보다 더 빠르게 전송됩니다. 알림은 SMS 메시지, Slack 채널 메시지, PagerDuty 알림, 웹훅 등의 형식일 수 있습니다. 이러한 옵션을 사용하면 더 우수하며 활용 가능한 가시성을 지닌 알림을 보낼 수 있습니다.

Cloud Monitoring 사용

Cloud Monitoring을 시작할 때는 Firebase/Google Cloud 프로젝트 내에서 커스텀 측정항목 그래프를 만들어 사용량을 시각화할 수 있는 측정항목 탐색기로 시작하는 것이 좋습니다.

특히 Cloud Firestore, Realtime Database 또는 Cloud 함수 인스턴스와 같은 리소스를 확인할 수 있습니다. 청구에 영향을 미칠 수 있는 이러한 제품의 사용량 정보(예: 문서 읽기 수, 전송한 바이트 또는 함수 호출 수)를 확인할 수 있습니다.

측정항목 탐색기에서 리소스 사용량을 시각화하는 데 익숙해졌다면 가장 관심이 있는 측정항목에 대한 알림 정책을 만드는 것이 좋습니다. 다음은 몇 가지 알림 정책의 예시입니다.

  • 30분 동안의 문서 읽기 수가 특정 값보다 큰 경우

  • 특정 리소스의 사용량(예: 함수 호출)이 특정 기간 동안 급증하는 것으로 보이는 경우

추가 청구 로직 만들기

예산이 특정 기준에 도달하면 예산 알림에서 자동으로 이메일을 보내지만 지출 증가에 대한 보다 정교한 알림이나 프로그래매틱 방식의 대응에서는 Google Cloud Pub/Sub 메시지를 기반으로 하는 추가 커스텀 로직을 설정하는 것이 좋습니다.

예를 들어 지출 수준에 따라 Slack 채널에 알림을 보내거나, 문자 메시지로 알림을 보내거나, 앱 또는 프로젝트에 프로그래매틱 변경사항을 적용할 수 있습니다.

Pub/Sub는 다른 서비스에서 Pub/Sub 주제라는 채널을 통해 비동기 방식으로 메시지(일반적으로 JSON 데이터 형식)를 전송할 수 있는 메시지 전달 서비스입니다. Cloud Functions와 같은 승인된 서비스를 설정하여 이러한 주제의 메시지를 리슨하고 데이터를 바탕으로 적절한 조치를 취할 수 있습니다.

Pub/Sub 청구 알림이 청구 사용량의 변경 여부와 상관없이 20분마다 한 번씩 전송되며 이는 스테이트리스(Stateless)(즉, 이전 상황에 관한 컨텍스트를 제공하지 않음) 알림입니다. 시간 경과에 따른 비정상적인 지출 증가 추이를 추적하거나 지출을 이전 주기와 비교하려면 Cloud Firestore 또는 Realtime Database와 같은 데이터베이스를 사용하여 이전 데이터를 직접 관리해야 합니다.

Cloud FunctionsPub/Sub 주제 사용

Google Cloud 콘솔에서 Firebase 프로젝트에 연결된 예산으로 이동(결제 > 예산 및 알림)한 후 Pub/Sub 주제를 이 예산에 연결 체크박스를 클릭하여 결제 데이터의 Pub/Sub 주제를 설정할 수 있습니다. 그러면 나중에 리슨할 수 있는 Pub/Sub 주제가 생성됩니다. 자세한 단계는 전체 문서를 참조하세요.

Pub/Sub 결제 주제를 만든 후 Cloud 함수를 작성하여 이 주제를 리슨하고 데이터를 바탕으로 적절한 조치를 취할 수 있습니다. 데이터는 JSON 데이터로 전송되며 지금까지 지출한 금액, 예산 금액, 현재 결제 주기의 시작 날짜와 같은 유용한 정보가 데이터에 포함됩니다.

Google Cloud 문서에 Cloud 함수를 사용하여 이 데이터를 수신하는 방법이 자세히 설명되어 있습니다. 하지만 Cloud Functions for Firebase를 사용하여 함수를 배포하는 경우의 일반적인 절차는 더 간단합니다(Firebase 문서 참조). 이 동영상에서 해당 절차의 샘플 둘러보기를 확인할 수 있습니다.

이 데이터를 수신한 후 다양한 방법으로 이에 응답할 수 있습니다. 몇 가지 옵션은 다음과 같습니다.

  • 지출이 특정 기준에 도달하면 Slack 채널 또는 Discord 채널에 알림을 보내거나 문자 메시지를 보냅니다.

  • 이전 데이터와 비교하여 지출을 분석하고 비정상적인 지출이 있을 경우 알림을 보냅니다.

  • 청구 금액이 과도하게 증가한 경우 Remote Config을 통해 앱에 변경사항을 적용합니다.

  • 계정에서 청구 서비스를 프로그래매틱 방식으로 삭제하여 Firebase 프로젝트를 완전히 사용 중지합니다.