크론 잡(Cron job)은 정기적으로 수행해야 하는 작업에 유용합니다. 이를 사용하여 데이터베이스를 일정에 따라 백업하거나 두 시스템 간의 데이터를 동기화하는 등의 작업을 할 수 있습니다.
이전에는 코드로 한 번 정의한 후, 설정(config)을 수정하고 재배포(redeploying)하여 업데이트할 수 있었습니다. 하지만 오늘날 에이전트(agent)는 작업이 진행됨에 따라 사용자들과 상호작용하며, 스케줄은 실시간으로 업데이트되어야 합니다.
저희는 Vercel Schedules를 구축하여 에이전트와 애플리케이션이 재배포 없이 코드를 통해 일회성 및 반복적인 스케줄을 생성, 변경 또는 취소할 수 있도록 했습니다.
Schedules는 기존의 정적 접근 방식(static approach)을 기반으로 하지만, 애플리케이션이 실행되는 동안 사용자나 에이전트가 언제 작업이 수행되어야 할지 결정할 수 있도록 설계되었습니다. 스케줄은 Vercel에게 작업을 트리거할 시점과 어디로 보낼지를 알려줍니다. 사용자의 애플리케이션은 그 작업을 실제로 수행하는 코드를 제공합니다.Vercel Cron Jobs
스케줄을 정적 작업과 동적 작업 모두에 사용할 수 있습니다:
프로덕션(Production) 환경에서 실행하기 전에 예약된 작업을 테스트할 수도 있습니다.Preview deployments and in custom environments
다음 예를 들어보겠습니다. 사용자가 웹 접근 권한을 가진 에이전트에게 “내일 아침, Hacker News의 상위 다섯 가지 기사를 요약해 줘”라고 요청할 수 있습니다. 전통적인 해결책은 요청과 스케줄 시간을 데이터베이스에 저장하고, 이후 크론 잡(cron job)을 사용하여 처리해야 할 작업을 확인하는 방식이었습니다.
Schedules를 사용하면 에이전트가 별도의 데이터베이스와 폴링 작업 없이 요청과 실행 시점을 기록하는 스케줄을 생성할 수 있습니다. 아래 예시는 에이전트에게 이 기능을 제공하는 AI SDK 도구를 정의합니다.
작업이 만료되면 Vercel은 Queues를 사용하여 저장된 요청을 앱으로 전달합니다. 사용자의 현재 권한을 확인하고 에이전트를 시작하는 코드는 사용자 애플리케이션에서 제공합니다. 에이전트는 웹 도구(web tool)로 상위 다섯 개의 Hacker News 게시물을 가져온 다음, 요약본을 생성하여 사용자를 위해 저장할 수 있도록 앱에 반환합니다.Queues
만약 이미 [fx's JavaScript library, libfx]나 [Pi's agent library], 또는 [eve agent framework]를 사용하여 에이전트를 구축했다면, 유사한 스케줄링 도구를 추가할 수 있습니다. Vercel Schedules는 Vercel에 호스팅된 프로덕션 에이전트용 동적 스케줄링 도구를 제공합니다.
Vercel Schedules를 사용하여 반복적인 작업을 예약할 수 있습니다. 스케줄은 [JS SDK], [API], [CLI]를 통해 동적으로 생성하거나 프로젝트 설정에 구성할 수 있습니다.
예를 들어, 만료된 레코드를 매일 정리하는 작업을 생성하려면, 사용자가 지정한 시간대의 비공개 함수(private function)를 호출하도록 스케줄을 정의할 수 있습니다. Vercel은 이 정리 코드를 공개 URL로 노출하지 않고 직접 호출합니다. 또한 각 호출이 스케줄링 서비스에서 왔는지 확인하므로, 사용자가 직접 해당 검사를 추가할 필요가 없습니다.
만약 앱이 이미 Nitro 3 서버 프레임워크를 사용한다면, 기존 구성에서 반복 작업을 비공개 함수로 실행할 수 있습니다. ([experimental integration] 참고) scheduledTasks
또한 에이전트 작업(agent task)과 정리(cleanup) 기능을 로컬에서 [vercel dev]를 사용하여 테스트할 수 있으며, 이후 프로덕션 전에 Preview 브랜치나 사용자 지정 환경에서 테스트할 수 있습니다. 프로젝트의 Schedules 탭에 있는 Run Schedule 기능을 사용하면 기다릴 필요 없이 두 작업 모두를 시도해보고 과거 실행 기록을 확인할 수 있습니다.
Vercel Schedules는 현재 [Public Beta]에 있으며, 애플리케이션이 이미 실행하는 반복 작업에 사용할 수 있습니다. 사용자나 에이전트가 작업이 수행되어야 하는 시점을 선택할 때, 코드는 해당 작업을 위한 스케줄을 생성하고 관리할 수 있습니다.
시작하려면, Vercel Schedules skill를 확인하고 documentation 문서를 읽어보세요.
Read more
Vercel Schedules란 무엇인가요?
스케줄러 작동 방식
시작하기
-
배포 시 타이밍을 유지하거나 동기화할 수 있습니다. 이를 사용하여 Private Function이나 HTTP 경로를 호출하거나, 또는 Queue Topic으로 메시지를 보낼 수 있습니다. **정적 스케줄(Static schedules)**은 vercel.json Build Output API configuration 및 Queue topics을 통해 사용합니다.
-
앱이 이를 통해 스케줄을 생성하고 관리할 수 있습니다. 이는 Queue Topic을 통해 일회성 및 반복 작업을 지원하는 **동적 스케줄(Dynamic schedules)**입니다. JS SDK, CLI, 또는 API를 통해 접근할 수 있습니다.
주기적인 애플리케이션 작업 실행