Amazon Web Services 한국 블로그

Vercel은 어떻게 Amazon EventBridge 스케줄러를 사용하여 두 달 만에 Cron Jobs를 출시했을까?

Vercel Amazon EventBridge 스케줄러로 Cron Jobs를 구현하여 고객이 예약된 작업을 대규모로 생성, 관리 및 실행할 수 있도록 했습니다. 이 기능은 빠르게 채택되어 출시 후 몇 달 만에 주간 cron 간접 호출 수가 700만 건을 넘었습니다. 이 기사에서는 Vercel이 이를 어떻게 해냈는지, 그리고 현재 경험하고 있는 엄청난 확장을 어떻게 처리하는지 보여줍니다.

Vercel은 엔지니어가 프런트엔드 애플리케이션을 더 쉽게 배포하고 실행할 수 있는 프런트엔드 클라우드를 구축합니다. 지난 2년 동안 1억 건 이상의 배포를 달성한 Vercel은 서버리스 기술을 활용하여 사용자가 구성 없이도 동급 최강의 AWS 인프라를 활용할 수 있도록 지원합니다. Vercel은 개발자가 프런트엔드 애플리케이션을 호스팅하는 데 도움이 되는 다양한 기능을 제공합니다. 하지만 올해 초까지도 Cron Jobs는 구축되지 않았습니다.

Cron 작업은 미리 정해진 간격이나 고정된 시간에 특정 명령이나 스크립트를 자동으로 실행하는 예약된 작업입니다. 이를 통해 사용자는 백업, 고객에게 알림 이메일 전송, 구독 갱신 시 결제 처리와 같은 정기적이고 반복적인 작업을 설정할 수 있습니다. Cron 작업은 컴퓨팅 환경에서 효율성을 높이고 일상적인 작업을 자동화하는 데 널리 사용되며 Vercel 고객이 많이 요청한 기능이었습니다.

2022년 12월, Vercel은 혁신 촉진을 위해 사내 해커톤을 개최했습니다. 이 해커톤에서 Vincent VoyerAndreas Schneider가 힘을 합쳐 Vercel 플랫폼을 위한 프로토타입 cron 작업 기능을 구축했습니다. 이들은 5명으로 팀을 구성하여 일주일 동안 이 기능을 개발했습니다. 팀은 cron 작업을 표시하는 사용자 인터페이스 구축부터 기능의 백엔드 구현 생성에 이르기까지 다양한 작업을 수행했습니다.

Amazon EventBridge 스케줄러
해커톤 팀이 cron 작업 문제를 해결하기 위해 고민하기 시작했을 때, 가장 먼저 떠오른 아이디어는 일정에 따라 실행되는 Amazon EventBridge 규칙을 사용하는 것이었습니다. 그러나 곧 이 기능은 AWS 리전당 계정당 규칙 300개로 제한되어 의도한 용도로는 충분하지 않다는 사실을 깨달았습니다. 다행히도 팀원 중 한 명이 AWS Compute 블로그에서 Amazon EventBridge 스케줄러에 대한 발표 내용을 읽고 이 도구가 cron 작업 문제를 해결할 수 있는 완벽한 도구라고 생각했습니다.

EventBridge 스케줄러를 사용하면 기본 인프라를 프로비저닝하거나 관리하지 않고도 270여 개의 AWS 서비스에서 일회성 또는 반복적으로 수백만 개의 작업을 예약할 수 있었습니다.

Cron 작업의 작동 방식

Vercel에서 새 cron 작업을 생성하려면 고객이 이 작업을 실행할 빈도와 간접적으로 호출하려는 API를 정의해야 합니다. 백엔드에서 Vercel은 EventBridge 스케줄러를 사용하고 새 cron 작업이 생성될 때 새 일정을 생성합니다.

엔드포인트를 직접적으로 호출하기 위해 팀은 간접적으로 호출해야 하는 경로를 입력 파라미터로 받는 AWS Lambda 함수를 사용했습니다.

Cron 작업의 작동 방식

Cron 작업을 실행할 때가 되면 EventBridge 스케줄러가 함수를 간접적으로 호출하고, 이 함수는 구성된 고객 웹 사이트 엔드포인트를 직접적으로 호출합니다.

그 주가 끝날 무렵, Vincent와 그의 팀은 cron 작업 기능의 실제 프로토타입 버전을 완성했고, 해커톤에서 상을 받았습니다.

Vercel Cron Jobs 구축
12월에 일주일 동안 이 프로토타입 구축 작업을 진행한 후 해커톤은 종료되었고, Vincent와 그의 팀은 정규 업무로 돌아갔습니다. 2023년 1월 초, Vicent와 Vercel 팀은 이 프로젝트를 실제 제품으로 만들기로 결정했습니다.

해커톤 기간 동안 팀은 기능의 기본 부분을 만들었지만 프로덕션 준비를 위해 다듬어야 할 몇 가지 세부 사항이 있었습니다. Vincent와 Andreas는 이 작업을 시작한 지 두 달도 안 된 2023년 2월 22일에 Vercel Cron Jobs를 대중에 발표했습니다. 발표 트윗은 40만 회 이상의 조회수를 기록했고 커뮤니티는 출시에 큰 호응을 보냈습니다.

Cron 작업을 발표하는 Vercel의 트윗

이 기능은 매우 빠르게 채택되었습니다. Cron Jobs를 출시한 지 몇 달 만에 cron 간접 호출 수가 주당 700만 건을 넘었으며 Vercel은 채택이 계속 증가할 것으로 보고 있습니다.

Cron 작업 채택

Vercel Cron Jobs의 확장 처리 방식
이러한 채택 속도에 따른 기능 확장은 Vercel에 매우 중요한 사안입니다. 이 속도로 cron 간접 호출량을 확장하기 위해 Vercel은 몇 가지 비즈니스 및 아키텍처 관련 결정을 내려야 했습니다.

Vercel은 비즈니스 관점에서 프리 티어 고객에 대한 한도를 정의했습니다. 프리 티어 고객은 계정에서 최대 2개의 cron 작업을 생성할 수 있으며 시간별 일정만 가질 수 있습니다. 즉, 무료 고객은 cron 작업을 30분마다 실행할 수 없고, 대신 최대 1시간마다 실행할 수 있습니다. Vercel 유료 티어의 고객만 작업 예약에 EventBridge 스케줄러 분 단위를 활용할 수 있습니다.

또한 무료 고객의 경우 분 정밀도가 보장되지 않습니다. 이를 위해 Vincent는 EventBridge 스케줄러의 기간 구성을 활용했습니다. 유연한 기간 구성을 통해 기간 내에 일정을 시작할 수 있습니다. 즉, 예약된 작업이 기간 전체에 분산되어 여러 요청이 다운스트림 서비스에 미치는 영향을 줄입니다. 예를 들어, 많은 고객이 자정에 작업을 실행하려는 경우 이는 매우 유용합니다. 유연한 기간을 사용하면 설정된 기간에 로드가 분산될 수 있습니다.

아키텍처 관점에서 Vercel은 API를 호스팅하고 cron 작업이 간접적으로 호출하는 함수를 소유하는 이점을 활용했습니다.

직접 호출 검증

EventBridge 스케줄러에 의해 Lambda 함수가 시작되면 API의 응답을 기다리지 않고 함수 실행이 종료됩니다. 그런 다음 Vercel은 관찰성 메커니즘에서 API와 Vercel 함수가 올바르게 실행되었는지 확인하여 cron 작업이 실행되었는지 검증합니다. 이렇게 하면 함수 지속 시간이 400밀리초 미만으로 매우 짧습니다. 이를 통해 Vercel은 동시성 한도에 영향을 주지 않고 초당 많은 함수를 실행할 수 있습니다.

Lambda 간접 호출 및 기간 대시보드

어떤 영향이 있었나요?
Vercel의 Cron Jobs 구현은 서버리스 기술이 무엇을 가능하게 하는지를 보여주는 훌륭한 예입니다. 두 사람이 풀타임으로 일하면서 두 달 만에 커뮤니티가 필요로 하고 열광적으로 채택한 기능을 출시할 수 있었습니다. 이 기능은 Vercel 플랫폼의 완성도를 보여주며 고객이 유료 계정으로 전환하도록 유도하는 중요한 기능입니다.

EventBridge 스케줄러를 시작하려면 Serverless Land patterns for EventBridge Scheduler를 참조하세요. 여기에서 도움이 되는 다양한 예제를 찾을 수 있습니다.

Marcia