[GCP] Cloud Scheduler를 이용한 주기적 작업 실행 공부/CLOUD
Date 2022. 1. 6. 14:06클라우드를 포함한 여러 시스템들은 주기적으로 작업을 실행하게 해주는 기능들을 제공해준다.
리눅스에는 crontab을 이용해서 수행할 수 있고, AWS에서는 Cloudwatch Events를 이용해서 비슷한 기능을 수행할 수 있다.
마찬가지로 kubernetes는 CronJob이라는 리소스를 이용해서 주기적 작업을 수행할 수 있다.
비슷하게 구글 클라우드에서는 Cloud Scheduler라는 서비스를 통해 주기적 작업을 수행할 수 있다.
Cloud Scheduler 특징
구글 클라우드에서 제공하는 Cloud Scheduler는 다음과 같은 특징을 갖고 있다.(공식 홈페이지 참조)
1. 대부분의 클라우드 서비스가 그렇듯 구글 클라우드에서 제공하는 로깅 서비스와 자동으로 연동된다.
2. 작업 대상으로 HTTP 요청을 제공한다. 즉 HTTP 엔드포인트가 열려있는 곳이면 뭐든지 호출할 수 있다.
3. 작업 대상으로 구글 클라우드의 Pub/Sub을 대상으로 설정할 수 있다. 이를 통해서 해당 topic을 Subscribe하고 있는 다른 리소스들에 작업을 수행하게 할 수 있다.
4. retry 정책을 설정 가능하다. exponential backoff 등을 설정할 수 있다.
또한 최대 3개까지의 작업은 무료로 생성 가능하다고 한다.
Cloud Scheduler 생성
주기적으로 HTTP 요청을 날리는 작업을 생성할 것이다. API는 모두 활성화 되어 있고 필요한 IAM 또한 할당되어 있다고 가정한다.
또한 여기서는 클라우드 콘솔(GUI)를 이용하여 생성했다.
1. 작업 정의
작업의 이름과, 시간대를 설정할 수 있다.
또한 빈도는 unix-cron 형식을 이용해 설정 가능하다.
2. HTTP 요청 구성
작업을 할 때 전송할 HTTP 요청을 구성한다.
기본적인 헤더, 바디를 설정할 수 있고
추가적으로 헤더에 인증을 위해 해당 작업을 수행하는 서비스 계정 정보를 담아 보낼 수 있다.
여기서는 작업용으로 생성한 Cloud Run에 요청을 보내기 위해서 OIDC 토큰을 함께 보내 Cloud Run 인증을 수행하도록 하였다.
3. 기타 configuration
재시도 횟수, backoff 타임 등을 설정할 수 있다.
여기까지 완료되었으면 생성이 완료되었다. 주기에 상관없이 콘솔을 통해 직접 호출할 수 있다.
이후 작업 결과는 구글 클라우드의 Cloud Logging을 통해서 확인할 수 있다.
로그
HTTP의 경우 요청을 보내면서 AttempStarted 로그가 찍히고,
요청에 대한 응답이 2xx 이면 AttemptFinished 로그가 찍히는걸 볼 수 있다.
'공부 > CLOUD' 카테고리의 다른 글
Terraform 오버뷰 - GCP Cloud Run 배포하기 (0) | 2021.08.16 |
---|---|
[k8s] Service 리소스 Overview (2) : Ingress와 Health check (0) | 2021.08.15 |
[k8s] Service 리소스 Overview (1) (0) | 2021.08.14 |
[GCP] Cloud Run CI/CD (0) | 2021.05.24 |