웹 애플리케이션을 운영하다 보면, 정기적으로 처리해야 하는 작업(로그 정리, 데이터 백업, 외부 API 호출 등)이 필요할 때가 많습니다. 일반적으로는 Cron, Jenkins, 혹은 서버 쪽에서 직접 스케줄러를 구성하여 처리하지만, 서버리스 환경에서 작업을 자동화하고 싶을 때 Cloudflare Worker를 활용할 수 있습니다.
Cloudflare Workers는 서버리스 환경이기 때문에, 별도의 서버 인프라나 OS 스케줄 설정 없이도 Cloudflare의 네트워크에서 빠르게 동작합니다. 또한 Cron Trigger 기능을 통해, 날짜와 시간을 지정해서 정기적으로 Worker 함수를 실행할 수 있습니다.
이번 글에서는 Cloudflare Worker Cron 기능을 생성하고, 간단한 예시 코드를 통해 매일 일정 시간에 작업이 동작하도록 설정하는 과정을 알아보겠습니다.
[준비 사항]
1. Node.js
- 공식 웹사이트에서 다운로드하여 설치합니다.
2. npm(Node Package Manager)
- Node.js 설치 시 자동으로 포함되어 있습니다.
3. PowerShell
- Windows 10 이상이면 기본 내장되어 있습니다. (버전 7.x 이상을 별도로 설치해도 무방)
4. Cloudflare 계정
- Cloudflare에 회원가입 후 로그인할 수 있는 계정이 필요합니다.
5. Wrangler
- Cloudflare Workers 관련 CLI 도구입니다.
npm install -g wrangler
---
[1. Cloudflare 로그인]
아래 명령어로 Cloudflare 계정에 로그인합니다.
wrangler login
명령어 입력 후 브라우저가 열리며 Cloudflare 인증 페이지로 이동합니다. 로그인 및 인증을 마치고 브라우저 탭을 닫으면 터미널/콘솔에서 로그인이 완료됩니다.
(참고: 브라우저 인증이 번거롭다면, API 토큰 방식으로 설정하는 방법도 있습니다. 그러나 wrangler login이 가장 편리합니다.)
---
[2. 새 프로젝트 생성]
아래 명령어를 통해 새 Cloudflare Workers 프로젝트를 생성합니다.
npx wrangler init
이 명령어를 실행하면, wrangler.toml 파일과 기본 예제 코드를 포함한 프로젝트 구조가 만들어집니다.
(Tip: 이미 존재하는 폴더에서 실행하면 해당 폴더에 Wrangler 설정 파일과 샘플 코드가 생성됩니다.)
---
[3. wrangler.toml 설정]
프로젝트 루트 디렉터리에 생성된 wrangler.toml 파일을 열어 필요한 설정을 추가/수정합니다. 기본적인 예시는 아래와 같습니다.
name = "my-worker" # 배포할 Worker 이름 (Cloudflare 대시보드 상의 Worker 이름과 동일하게)
main = "src/index.js" # 실행할 메인 코드 파일
compatibility_date = "2025-04-04"
[triggers]
crons = ["0 0 * * *"]
- name: Worker의 이름이며, Cloudflare에 등록된 이름과 동일해야 합니다.
- main: 실제 작성한 코드 파일의 위치 (예: src/index.js).
- crons: Cron 형식의 스케줄을 설정합니다.
예: ["* * * * *"] → 매 분마다 실행
["0 9 * * *"] → 매일 아침 9시에 실행
["0 0 * * *"] → 매일 자정 0시에 실행
---
[4. Worker 코드 작성]
wrangler.toml에서 main으로 설정한 파일(예: src/index.js)을 열고 실제 로직을 작성합니다
- 일반 요청 처리 (Fetch Event)
- addEventListener('fetch', ...)는 Cloudflare Worker가 수신하는 모든 HTTP 요청을 가로채서 처리할 수 있도록 하는 이벤트 리스너입니다.
- 크론(스케줄) 요청 처리 (Scheduled Event)
- addEventListener('scheduled', ...)는 Cloudflare Cron Trigger에 의해 특정 주기에 맞춰 실행되는 이벤트 리스너입니다.
[5. 배포]
작성된 코드를 Cloudflare에 배포하려면 아래 명령어를 사용합니다.
npx wrangler deploy
정상적으로 배포가 완료되면 Cloudflare 대시보드에서 Worker가 활성화되고, 설정된 Cron 스케줄에 맞춰 정기적으로 실행됩니다.
(참고: Cloudflare 대시보드(Workers → Triggers)에서도 Cron 스케줄이 등록되었는지 확인할 수 있습니다.)
---
이제 정기적으로 실행해야 하는 작업을 서버 없이 간편하게 자동화할 수 있습니다. 서버 인프라나 OS 스케줄러를 직접 관리하지 않아도 되므로 운영 부담이 크게 줄어들 것입니다. Cloudflare Workers와 Cron Trigger를 통해 로그 정리, API 데이터 동기화, 백업 등 다양한 활용이 가능하니 꼭 시도해보세요!
[참고 링크]
- Cloudflare Workers 공식 문서: https://developers.cloudflare.com/workers/
'JS' 카테고리의 다른 글
js 새창 객체 저장 (0) | 2024.01.09 |
---|