[GCP] Cloud Scheduler 설정

He SEO·2022년 3월 10일
0

시작하기 전에

Cloud Scheduler는 예약된 작업 단위가 지정한 시간에 또는 일정한 간격으로 실행되도록 합니다. 리눅스로 치면 crontab 기능과 동일합니다.

트리거 타입

  • Http/s endpoint
  • Pub/sub topic
  • App engine http/s application

구현 사항

  • GCP CloudFunction 사용
  • 1분마다 돌면서 데이터 저장해야 함
  • region은 서울(asia-northeast3)

개발 환경

  • CloudFunction : 실제 scheduler(crontab)이 구동되는 함수
  • Cloud Scheduler : crontab run/stop
  • Pub/Sub : 1분마다 특정 토픽으로 message publish하여 scheduler가 구동되게 함
  • 기본적인 cloud function 개발 환경이 갖추어 짐 (admin sdk 사용 및 관련 role 부여 완료)
  • typescript 사용

과정 🚀

CloudFuntions 문서를 참고하여 코드상에서 구현 후 배포할 예정입니다.
GUI에서 별도의 설정 과정을 거치지 않습니다.

Cloud Function 프로젝트 생성

firebase init functions

Cloud Scheduler 작성

functions.pubsub.schedule().onRun() 메서드를 사용하면 자동으로 Pub/Sub 설정 및 Cloud Scheduler를 트리거할 수 있게 합니다.

import * as functions from "firebase-functions"
import * as admin from "firebase-admin"

export const testCron = functions.region("asia-northeast")
				 .pubsub.schedule(("every 1 minutes")
                 .timeZone("Asia/Seoul")
                 .onRun((content) => {
                   console.log("Start cron")
                   //Do Something
}

배포

관련 스케줄러 작업과 Pub/Sub topic이 자동으로 만들어집니다.

firebase deploy --only functions:testCron
  1. Pub/Sub 정보
  • 주제 ID : firebase-schedule-{function명}-{region}
  • 주제 이름 : projects/{project name}/topics/firebase-schedule-{function명}-{region}
  1. Scheduler 정보
    상단의 메뉴에서 일시중지, 재개, 삭제 등의 관리를 할 수 있습니다.
  • 이름 : firebase-schedule-{function명}-{region}
  • 빈도 : scheduler trigger 주기
  1. Functions 정보
    Function으로 자동 등록됩니다.

참고 사이트

profile
BACKEND 개발 기록 중. 감사합니다 😘

0개의 댓글