커뮤니티 세션: Vercel Workflow

VVercel
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00이제 여기서 멈추고 바로 질문을 받아보겠습니다.
00:00:02더 다뤄볼 만한 내용이 아주 많거든요.
00:00:05워크플로 문서도 참고하시기 바랍니다.
00:00:08거기에 워크플로에 대한 더 자세한 내용과
00:00:11각 구성 요소가 어떻게 작동하는지 설명되어 있습니다.
00:00:14질문이 나오면 기쁜 마음으로 블로그 게시물도 함께 살펴보겠습니다.
00:00:19지금은 입문자를 위한 기초 가이드라고 생각하시면 됩니다.
00:00:23워크플로에서 고려해야 할 세 가지 기본 요소가 있는데,
00:00:25첫 번째는 단계(steps)입니다.
00:00:27워크플로와 단계는 일시 중지하고 재개할 수 있습니다.
00:00:30두 번째는 외부의 임의 이벤트를
00:00:31기다릴 수 있게 해주는 훅(hooks)입니다.
00:00:33그리고 마지막은 임의의 시간만큼 대기할 수 있는
00:00:36슬립(sleeps) 기능입니다.
00:00:38몇 초부터 며칠,
00:00:39심지어 몇 달까지도 가능하죠.
00:00:42이 세 가지를 활용하면
00:00:44수많은 백그라운드 파이프라인과 에이전트를
00:00:48자연스럽게 모델링할 수 있습니다.
00:00:51아직 자세히 설명하지는 않았지만,
00:00:53질문을 받기 전에 문서의 관련 내용을 먼저 안내해 드릴게요.
00:00:56에이전트는 기본적으로 장기 실행 작업의
00:01:01아주 자연스러운 표현 방식입니다. 반복적으로 동작하니까요.
00:01:05LLM 호출을 만들고, 하나 이상의 도구 호출을 실행하고,
00:01:08샌드박스를 사용해 메모리에 기록하거나
00:01:11파일 시스템을 이용하는 등, 무엇이든
00:01:13계속해서 반복하는 거죠.
00:01:15토큰을 스트리밍하고, 도구 호출을 수행하고,
00:01:17다시 토큰을 스트리밍하고 도구 호출을 수행하는 식입니다.
00:01:20워크플로로 이 과정을 구현하면 매우 강력하면서도
00:01:25직접 구현하려고 하면 매우 까다롭습니다.
00:01:27그래서
00:01:27Durable Agent라는 클래스를 제공하는데,
00:01:29이런 오케스트레이션 작업을 대신 처리해 주며
00:01:32워크플로 내부에서 아주 잘 작동합니다.
00:01:35일단 여기서 설명을 멈추고
00:01:39어떤 질문들이 있는지 들어보겠습니다.
00:01:45안녕하세요.
00:01:47저희는 이미 일부 도구에 워크플로를 사용하고 있습니다.
00:01:50커뮤니티 알림을 관리하는 도구들인데,
00:01:54알림이 들어오는 곳이 워낙 많거든요.
00:01:58에이전트 덕분에 알림 관리 업무가 훨씬 수월해졌고,
00:02:01워크플로도 관련 작업들을 처리하는 데
00:02:03매우 훌륭한 역할을 하고 있습니다.
00:02:05저희가 무언가를 빌드하는 방식에 있어서 정말 큰 변화였죠.
00:02:11첫 번째 질문을 드리고 싶은데,
00:02:13항상 새로운 오픈 소스가 나올 때마다
00:02:15회의적으로 묻는 분들이 많거든요.
00:02:18워크플로 SDK는 오픈 소스인데, Vercel 워크플로도 따로 있잖아요.
00:02:23과연 얼마나 개방적인 건가요?
00:02:26Vercel 워크플로가 있으면
00:02:28워크플로 SDK는 오직 Vercel에서만 작동하는 건가요?
00:02:31아니면 다른 곳에서도 쉽게 사용할 수 있는 건가요?
00:02:32네, 정말 좋은 질문입니다.
00:02:35워크플로와 관련해 항상 듣는 질문이죠.
00:02:39요약하자면
00:02:40워크플로 SDK가 오픈 소스 프레임워크입니다.
00:02:41처음부터 그런 의도로 이름 지었고요.
00:02:43첫날부터 '월드(Worlds)'라는 어댑터 개념을 도입했습니다.
00:02:49Next.js도 비슷한 시기에 어댑터를 출시했죠.
00:02:52워크플로 SDK는 단순히
00:02:54장기 실행 코드를 표현하는 방식일 뿐입니다.
00:02:57워크플로와 단계(steps)를 사용해
00:03:00슬립, 타이머, 대기, 훅 등 무엇이든 사용할 수 있습니다.
00:03:03가장 좋은 비유는 Docker인 것 같습니다.
00:03:06장기 실행 워크플로를 작성하는
00:03:08일종의 Dockerfile 문법 같은 것이죠.
00:03:11기본적으로 세 가지
00:03:12월드를 제공하고 유지 관리합니다. 첫째는 로컬 월드입니다.
00:03:15로컬에서 워크플로를 실행하면
00:03:18모든 것이 파일 시스템에 저장되어 직접 검사할 수 있죠.
00:03:22파일 시스템을 조회하여 로컬에서
00:03:24똑같은 관측 가능성을 얻을 수 있습니다.
00:03:26큐는 메모리에 저장되고요.
00:03:28처음부터 Vercel에서 하는 것과 거의 유사한
00:03:31훌륭한 로컬 개발 경험을 제공해 왔습니다.
00:03:33물론 Vercel 월드도 제공합니다.
00:03:36Vercel에 배포하면 기본적으로
00:03:38많은 기능을 바로 사용할 수 있습니다.
00:03:39모든 데이터를 종단간(End-to-End) 암호화하며,
00:03:42컴퓨트 계층에서도 빠르게 동작하고
00:03:44네트워킹을 비공개로 유지하도록 공을 들였습니다.
00:03:45또한 Postgres 어댑터도 출시했습니다.
00:03:47이미 실제 고객들이 프로덕션 환경에서 사용 중이고,
00:03:49똑같은 코드로 실행할 수 있죠.
00:03:50Vercel에서 Postgres 환경으로 쉽게 마이그레이션하거나
00:03:52그 반대로도 가능합니다.
00:03:54사용자가 직접 Postgres 백엔드를 운영할 수도 있고,
00:03:58워크플로 시작 시 해당 Postgres 인스턴스를
00:04:00가리키는 환경 변수를 설정하기만 하면 됩니다.
00:04:02그러면 월드 어댑터가 필요한 테이블을
00:04:03모두 자동으로 생성하고
00:04:05안정적인 지속성 계층으로 활용하게 됩니다.
00:04:07더 많은 월드들도 준비하고 있습니다.
00:04:10커뮤니티와도 협력하고 있고요.
00:04:12현재 Cloudflare 월드와
00:04:14AWS 월드도 작업 중에 있습니다.
00:04:17어디서든 실행할 수 있도록 설계했습니다.
00:04:19말씀드린 대로 세 가지는 저희가 직접 유지 관리하며
00:04:25앞으로 저희 팀과 커뮤니티 모두로부터
00:04:29더 많은 기능이 추가될 것입니다.
00:04:31댓글에서도 호응이 좋네요.
00:04:32지금 Vercel 워크플로를 사용 중이라는 분도 있고,
00:04:34Vercel의 훌륭한 추가 기능이라고 생각하시는 분도 계시네요.
00:04:36또 다른 질문은 이런 종류의 기술에서 흔히 나오는 것인데,
00:04:39문서에 코드 스니펫은 있지만,
00:04:43실제 업무에 바로 적용할 수 있는
00:04:44복잡한 앱이나 예제 시나리오는 따로 없을까요?
00:04:47기초적인 수준을 넘어선 실전용 예제 말이죠.
00:04:50네, 괜찮으시면 화면을 공유할게요.
00:04:54네, 공유해 주세요.
00:04:57크롬은 화면 공유할 때 버튼을 여러 번 눌러야 해서 좀 번거롭네요.
00:05:02네, 됐습니다.
00:05:08보여드리고 싶은 것은 두 가지입니다.
00:05:12하나는 워크플로 예제 저장소입니다.
00:05:15저희가 유지 관리하는 곳인데,
00:05:19방금 보여드린 생일 카드 생성기처럼
00:05:23많은 데모를 여기서 가져옵니다.
00:05:27Durable Agent를 사용하는 항공편 예약 앱도 있고,
00:05:31Postgres에서
00:05:32실행하는 방법도 보여줍니다.
00:05:34Vercel 외에 다른 환경에
00:05:37배포하는 방법을 알려주는 PR도 있고요.
00:05:40정말 많은 예제가 있습니다.
00:05:42또 하나 공을 들이고 있는 건 '쿡북'입니다.
00:05:44이 페이지에도 더 많은 내용을 추가 중인데,
00:05:46단순히 코드를 보여주는 것을 넘어
00:05:48워크플로의 일반적인 패턴들을 소개합니다.
00:05:50저희가 Vercel에서 워크플로를 활용하는 방식 중에는
00:05:54정말 흥미로운 사례들도 있습니다.
00:05:55말씀드렸던 것처럼 Durable Agent를 사용하는 앱이죠.
00:05:58사용법에 대한 가이드를 작성했죠.
00:06:00앞서 말한 훅, 슬립, 단계가 기초 요소라면,
00:06:03그 위에 빌드할 수 있는 재미있는 기능들이 많습니다.
00:06:08v0의 '중지(Stop)' 버튼이 작동하는 원리가
00:06:09바로 이 분산형 어보트 컨트롤러입니다.
00:06:12사용자가 v0 채팅에서 정지 버튼을 누르면
00:06:15워크플로와 어보트 컨트롤러를 결합하여
00:06:19백그라운드의 모든 프로세스를 중단시킵니다.
00:06:21앞으로 더 많은 내용을 쿡북에 추가할 예정입니다.
00:06:23단순한 예제를 넘어 그다음 단계로
00:06:24나아가고 싶은 분들이 참고하기에 아주 좋은 곳이죠.
00:06:27좋네요.
00:06:31실제 활용 사례들이라 더 좋군요.
00:06:32저희가 Vercel에서 직접 경험하고,
00:06:34고객들이 고민하는 지점들을 반영했으니까요.
00:06:37마음에 듭니다.
00:06:41다들 AI 코딩 에이전트를 정말 많이 사용하고 있잖아요.
00:06:44에이전트들이 이 새로운 워크플로 방식에
00:06:48얼마나 잘 적응할 수 있을지도 궁금합니다.
00:06:51아까 언급했듯이 두 가지 면에서 정말 놀라웠습니다.
00:06:53첫째, 에이전트들이 사람들이 오랫동안 해온
00:06:56코딩 방식을 이미 학습했다는 점입니다.
00:07:00모든 것이 우리가 선호하는 프로그래밍 방식에 기초하죠.
00:07:01그래서 DX(개발자 경험)를 어떻게 구성할지 고민하다가,
00:07:03SDK를 매우 가볍게 설계하는 방향을 택했습니다.
00:07:08대부분 JavaScript와 지시문(directives) 위주로 구성되어 있어서
00:07:13에이전트들이 매우 잘 이해합니다.
00:07:13병렬 작업을 대규모로 처리하는 방식도 잘 모델링하고요.
00:07:16단계를 실행하되 타임아웃을 걸고 싶다면,
00:07:18워크플로에서는 Promise.race로 슬립과 경쟁시키면 됩니다.
00:07:21JavaScript의 기초를 안다면 매우 직관적인 방식이죠.
00:07:23에이전트들이 이 패턴을
00:07:26정말 잘 습득하고 있습니다.
00:07:31에이전트들은 이미 어려운 문제들을 해결할 줄 아니까요.
00:07:36복잡한 프레임워크 코드를 작성하는 방법도 알고 있고요.
00:07:41우리는 Next.js에서도 그런 방식을 사용하죠.
00:07:45에이전트들은 프레임워크 코드에 대한 이해도가 높습니다.
00:07:47SDK에 많은 기능을 추가하지 않은 덕분에
00:07:51그 이해도가 워크플로에서도 아주 잘 작동하는 것이죠.
00:07:54반대로 SDK에 수많은 옵션과
00:07:58복잡성을 넣었다면 사람에게도 어렵겠지만,
00:08:01방대한 문서를 읽어야 하니 에이전트에게도 힘들었을 겁니다.
00:08:06워크플로를 시작하기 전 다른 솔루션들을 사용할 때
00:08:08바로 그런 점이 문제였습니다.
00:08:11이론적으로는 훌륭했지만,
00:08:13실제로 사용하기는 너무 어려웠죠.
00:08:14대부분 자바스크립트죠.
00:08:15대부분 지시어들로 이루어져 있고요.
00:08:17에이전트들이 잘 이해하는 부분입니다.
00:08:19에이전트가 모델링하기에 아주 쉽죠.
00:08:22대규모 병렬 처리를 수행하는 작업을요.
00:08:23모두에게 약속하듯이 말이죠.
00:08:24어떤 단계를 실행하되 시간을 제한하고 싶다면,
00:08:27워크플로우의 패턴은 기본적으로
00:08:29promise.race를 사용해 해당 단계와 sleep을 경쟁시키는 겁니다.
00:08:34자바스크립트의 기본 원리를 이미 알고 있다면
00:08:37코드를 생각하고 문제를 해결하는 아주 자연스러운 방식이죠.
00:08:40이 워크플로 방식은 아주 편안한 환경인 셈이죠.
00:08:43또한 우리는 개발자들이 무엇을 좋아하는지
00:08:47잘 알고 있고 그것을 워크플로에
00:08:50그대로 투영하려고 노력했습니다.
00:08:53개발 경험이라는 측면에서
00:08:56가장 중요한 것은 가독성이거든요.
00:08:59에이전트가 코드를 읽고 쓸 때
00:09:02마치 인간 개발자와 일하는 것과
00:09:05비슷한 느낌을 받게 하려고 했습니다.
00:09:08그게 우리가 지향하는 바입니다.
00:09:11그래서 에이전트와
00:09:13워크플로의 궁합은 매우 좋습니다.
00:09:15엄청나게 복잡한 옵션들과 함께 제공되죠.
00:09:18사람이 읽어야 할 문서도 너무 많아져서 더 복잡해질 뿐만 아니라
00:09:22이건 사실 제가
00:09:23워크플로우를 시작하기 전 경쟁 제품에서 겪었던 문제입니다.
00:09:26워크플로우 시스템을 사용할 때의 DX(개발자 경험)는
00:09:29이론상으로는 훌륭하지만 실제로는 적용하기가
00:09:32정말 어려운 경우가 많았습니다.
00:09:33아니면 거대한 사용 설명서를 다 읽어야 했죠.
00:09:36에이전트들도 이 부분에서 고전합니다. 왜냐하면
00:09:38모든 내용을 컨텍스트에 담고 있어야 하기 때문입니다.
00:09:40아니면 학습을 하더라도, 다른 예시들에서는
00:09:42볼 수 없었던 내용일 수도 있는데,
00:09:45나중에 SDK를 변경하는 것이
00:09:47정말 어려워지기 시작합니다.
00:09:49하지만 상황이 바뀌면,
00:09:50버전이 바뀔 때, 예전 모델들은
00:09:53자신들이 배운 방식대로만 행동하려 하죠.
00:09:57그래서 저희는 에이전트들이...
00:10:01답변이 너무 길었네요.
00:10:02에이전트가 워크플로우에 정말 뛰어나다는 걸 알게 되었습니다.
00:10:04물론 저희 워크플로우를 위한 스킬도 출시했습니다.
00:10:07이제 'npx skills@vercel workflow'를 실행하면 됩니다.
00:10:11방금 제가 한 말을 증명해 줄 재밌는 포인트인데,
00:10:14이 워크플로우 스킬은 기본적으로,
00:10:17지시하는 거죠.
00:10:20몇 가지 아주 기본적인 코드 예제를 보여주면서
00:10:23race 같은 기능을 어떻게 구현하는지 보여주고,
00:10:25문서를 읽으라고 안내합니다. 그리고
00:10:27이 문서는 NPM 패키지와 함께 제공됩니다.
00:10:30그래서 에이전트들이 본질적으로 소스 코드를 확인하고
00:10:34워크플로우 작성도 아주 잘하게 되는 겁니다.
00:10:37그 스킬과 문서 덕분에
00:10:38항상 최신 상태를 유지할 수 있어서 아주 좋습니다.
00:10:41맞아요, 정확합니다.
00:10:42항상 최신 상태를 유지하고 올바른 버전을 가리키게 되죠.
00:10:44패키지와 함께 문서를 제공하기 때문입니다.
00:10:47설령 SDK가 바뀌더라도
00:10:49이전 버전의 클라이언트를 사용하고 있다면,
00:10:51저희가 제공하는 몇 가지 옵션들은 LLM이
00:10:54로컬에서 접근할 수 있으니까요.
00:10:57좋네요.
00:10:58채팅창에 또 다른 질문이 하나 들어왔습니다.
00:11:00이 질문은, 워크플로우와 서브 워크플로우,
00:11:03그리고 단계들을 얼마나 많이
00:11:07한 번의 실행에 포함할 수 있는지에 대한 규모 수치가 있나요?
00:11:11아, 네.
00:11:13좋은 질문입니다.
00:11:16배포 시 워크플로우의 동시성(concurrency)은,
00:11:22Vercel을 사용한다고 가정했을 때,
00:11:24Vercel에 배포할 때, 단계와 워크플로우의 동시성은
00:11:26Vercel 함수의 동시성 제한을 따릅니다.
00:11:301만 건에서 10만 건 정도일 텐데,
00:11:33티어에 따라 다릅니다.
00:11:36기본적으로 워크플로우 자체가
00:11:39동시성에 제한을 두지는 않습니다.
00:11:41다만, 실행 환경이 작동하는 방식은,
00:11:44일시 중지와 재개가 워크플로우에서 작동하는 방식은
00:11:46모든 단계의 입력과 출력을 추적하는
00:11:50이벤트 로그가 있다는 것입니다.
00:11:53그래서 이벤트 로그가 매우 커지게 되면,
00:11:55예를 들어, 단계 1,000개가 연속으로 있거나,
00:11:59병렬로 1,000개가 있거나 하는 식으로,
00:12:01이벤트 로그가 계속 쌓이게 됩니다.
00:12:03그러면 워크플로우가 오래 실행될수록 리플레이를 위해
00:12:06전체 이벤트 로그를 계속 불러와야 합니다.
00:12:09Temporal 환경에서 오신 분들이라면,
00:12:10아마 제한이 5만 개의 이벤트나 50MB
00:12:14총 저장 용량이라는 걸 아실 텐데,
00:12:16저희도 워크플로우에 이를 공개했습니다.
00:12:18물론 저희만의 제한도 있습니다.
00:12:22제 생각엔,
00:12:26Vercel 문서에 있을 텐데, 나중에 링크를
00:12:30추가해 드릴 수 있습니다.
00:12:33찾아봐야겠네요.
00:12:34하지만 제한이 있기는 한데,
00:12:36제 생각에 저희 제한은,
00:12:40훨씬 더 많은 워크플로우를 병렬로 실행할 수 있습니다.
00:12:42많은 자식 워크플로우를 시작할 수 있고요.
00:12:44그런 것들은 이벤트 로그에 영향을 주지 않거든요.
00:12:45이벤트 로그에 영향을 주는 것은
00:12:47많은 단계들을 병렬로 실행하는 것입니다.
00:12:49따라서 1,000개에서 1만 개의 단계를 병렬로 처리하면,
00:12:52타임아웃 문제가 발생할 수 있습니다.
00:12:55워크플로우가 더 오래 실행될 수도 있죠.
00:12:59저희는 5,000개의 단계를 수행하는 에이전트들이
00:13:01잘 작동하는 것을 보았습니다.
00:13:04물론 마지막 단계들에서는
00:13:06단계 사이의 지연 시간이 15~20초 정도로 늘어날 수 있습니다.
00:13:11사용 사례에 따라 그건 너무 길게 느껴질 수도 있지만,
00:13:13일부 고객들에게는 5,000단계까지
00:13:15실행되어야 하는 백그라운드 작업이라면 괜찮을 수 있습니다.
00:13:19동시에, 이는 저희가 워크플로우 SDK 5에서
00:13:21집중하고 있는 중요한 부분입니다.
00:13:25현재 베타 버전인 SDK 5에서 하고 있는 많은 작업들은,
00:13:29DX를 제대로 구현했으니 이제는,
00:13:34리플레이 문제를 완전히 해결하려고 합니다.
00:13:37Temporal 같은 경우를 보면,
00:13:38결국 이런 제한에 부딪히게 되죠.
00:13:40그래서 지금까지의 해결책은 5,000개의 이벤트에 도달하면
00:13:44워크플로우를 종료하고,
00:13:46새로운 워크플로우로 계속 진행하는 것이었습니다.
00:13:48이미 오늘날에도 워크플로우로 그렇게 할 수 있습니다.
00:13:50원한다면 새 워크플로우를 시작할 수 있죠.
00:13:52하지만 올바른 해결책은,
00:13:54런타임을 개선하여 일시 중지와 재개를
00:13:56이벤트 로그 길이에 얽매이지 않고 O(1)로
00:13:59만드는 것이라고 생각합니다.
00:14:03현재 저희가 수행 중인 작업이 있는데,
00:14:04WASM 기반의 스냅샷 런타임을
00:14:06통해 리플레이를 완전히 없앨 수 있는지 탐색 중입니다.
00:14:09그렇게 되면 엄청나게 높은 동시성과
00:14:12임의로 긴 워크플로우 실행이 가능해질 것입니다.
00:14:19좋습니다, 시간이 거의 다 되어 가네요.
00:14:21시간을 엄수하고 싶네요.
00:14:22마지막으로 한 가지만 더 질문하겠습니다.
00:14:25방금 살짝 언급하셨는데,
00:14:27다음은 무엇인가요?
00:14:28사람들이 무엇을 기대해야 할까요?
00:14:31네.
00:14:33언급했듯이 워크플로우 4가 정식 출시되었고,
00:14:36워크플로우 5가 현재 베타 버전입니다.
00:14:39정식 출시 일정은 아직 정해지지 않았습니다.
00:14:42하지만 워크플로우 5의 주요 초점은
00:14:44성능, 즉 제한에 대한 것입니다.
00:14:47말씀드렸던 것처럼, 걱정 없이
00:14:50계속해서 새 작업을 이어갈 수 있도록
00:14:52만드는 것이 목표입니다.
00:14:55또한, 네이티브 동시성 제어 기능도 포함됩니다.
00:14:57워크플로우 출시 첫날부터 RFC로 다루었던,
00:15:00step, hook, time, wait, sleep 같은 기본 요소 외에도
00:15:05lock이라는 새로운 기본 요소를 추가하고 있습니다.
00:15:08이 요소는 워크플로우가 lock을 기다리거나,
00:15:11동시성 슬롯을 기다리게 해 줍니다.
00:15:15예를 들어 20개의 워크플로우를 병렬로 실행하더라도,
00:15:16분당 동시성 제한을 1로 둘 수 있습니다.
00:15:18나머지는 lock이 풀릴 때까지 기다렸다가 재개되는 방식이죠.
00:15:20규모에 맞춰 동시성을 구현할 수 있는 정말 좋은
00:15:23네이티브 방식입니다.
00:15:24그리고 에이전트 스트리밍 경험 개선도 포함됩니다.
00:15:28앞서 말했듯이 워크플로우의 큰 사용 사례 중 하나죠.
00:15:31간단한 스타일의 워크플로우로 사용하거나,
00:15:34AI 에이전트용으로 사용할 수 있는데,
00:15:36SDK에 대해 저희만의 확고한 의견이 있고,
00:15:39스트리밍과 샌드박스 환경에서 어떻게 작동해야 하는지에 대해
00:15:43그리고 스트리밍이나 샌드박스 환경에서 어떻게 작동하는지에 대해 저희는 그 SDK에 확고한 견해를 가지고 있습니다.
00:15:47성능을 개선하는 것과 관련해서는 앞으로 더 많은 발전이 있을 예정입니다.
00:15:49에이전트 사용 사례를 위한 DX 개선 등이 더 많이 있을 것입니다.
00:15:54멋지네요.
00:15:55앞으로가 기대되는군요.
00:15:56몇 가지 질문이 더 들어왔는데,
00:15:58채팅창을 통해 비동기적으로 답변해 드리겠습니다.
00:16:01Praneet, 오늘 나와서 이야기해 주셔서 감사합니다.
00:16:04감사합니다, Amy.
00:16:05정말 즐거운 시간이었습니다.
00:16:07시청해 주신 여러분 감사합니다.
00:16:09다음 주 목요일에 또 다른 세션이 준비되어 있습니다.
00:16:14그러니 목요일에 다시 오세요.
00:16:15그때 뵙겠습니다.
00:16:39[빈 오디오]

Key Takeaway

Vercel 워크플로 SDK는 오픈 소스 기반의 직관적인 장기 실행 코드 모델링을 제공하며, 로컬과 프로덕션 환경 간의 일관된 경험을 보장합니다.

Highlights

  • Vercel 워크플로 SDK는 오픈 소스 프레임워크로, Dockerfile 문법처럼 장기 실행 코드를 직관적으로 설계하도록 돕습니다.

  • 로컬 환경, Vercel 클라우드, Postgres 어댑터를 통해 동일한 코드로 다양한 인프라 환경에서 워크플로를 실행할 수 있습니다.

  • 워크플로는 단계(steps), 훅(hooks), 슬립(sleeps)의 3가지 핵심 요소를 기반으로 백그라운드 파이프라인과 에이전트를 모델링합니다.

  • 현재 개발 중인 SDK 5 베타 버전은 WASM 기반 스냅샷 런타임을 도입하여 이벤트 로그 크기 제한 없이 워크플로를 실행하는 것을 목표로 합니다.

  • 워크플로의 네이티브 동시성 제어를 위해 'Lock' 기능을 추가하여 다중 워크플로 실행 시 분당 작업 처리량을 제한할 수 있습니다.

Timeline

워크플로의 기초 요소 및 에이전트 설계

  • 워크플로는 단계, 훅, 슬립이라는 세 가지 기본 요소로 구성됩니다.
  • Durable Agent 클래스는 LLM 호출과 도구 실행을 반복하는 장기 실행 작업을 오케스트레이션합니다.

워크플로는 일시 중지 및 재개가 가능한 단계, 외부 이벤트를 기다리는 훅, 그리고 최대 몇 달까지 대기 가능한 슬립 기능을 제공합니다. 이러한 요소를 조합하여 복잡한 백그라운드 프로세스를 모델링합니다. Durable Agent는 반복적인 AI 에이전트 작업을 워크플로 내에서 안정적으로 처리하도록 돕습니다.

SDK의 개방성 및 멀티 환경 지원

  • 워크플로 SDK는 '월드(Worlds)' 어댑터 개념을 통해 특정 플랫폼에 종속되지 않습니다.
  • 로컬 환경, Vercel, Postgres 어댑터가 현재 제공되며 Cloudflare와 AWS 어댑터도 개발 중입니다.

SDK는 장기 실행 코드를 표현하는 오픈 소스 프레임워크로, 실행 환경에 맞는 어댑터를 사용하여 동일한 코드를 어디서든 구동할 수 있습니다. 로컬 환경에서는 파일 시스템을 통해 데이터를 검사하고, Vercel에서는 종단간 암호화와 빠른 네트워킹을, Postgres 환경에서는 직접 관리 가능한 안정적인 지속성 계층을 제공합니다.

실전 활용 사례와 AI 에이전트 적응

  • 예제 저장소와 쿡북은 단순 코드를 넘어 분산형 어보트 컨트롤러와 같은 실전 패턴을 제공합니다.
  • JavaScript의 Promise.race 패턴을 활용하여 에이전트가 병렬 작업과 타임아웃을 직관적으로 학습합니다.

공식 예제 저장소는 항공편 예약 앱, Postgres 실행 예시 등을 포함하며, v0의 '중지' 버튼 기능은 분산형 어보트 컨트롤러의 실제 사례입니다. SDK를 경량화하고 직관적인 JavaScript 패턴을 따르게 함으로써, AI 에이전트가 복잡한 문서 없이도 코드를 작성하고 이해하기 쉽게 설계되었습니다.

규모 확장성과 SDK 5의 향후 계획

  • 현재 워크플로는 이벤트 로그 기반으로 동작하며 5,000단계 이상의 실행이 가능합니다.
  • SDK 5는 WASM 기반 런타임을 통해 리플레이 문제를 해결하고 무제한 실행을 목표로 합니다.
  • 네이티브 Lock 기능을 추가하여 분당 동시성 제어 및 규모에 맞춘 워크플로 관리를 지원합니다.

동시성 제한은 실행 환경의 특성을 따르지만, 이벤트 로그의 비대화는 장기 실행 워크플로의 잠재적 제약 요소입니다. 이를 해결하기 위해 SDK 5는 리플레이 문제를 제거하고 O(1) 성능을 구현하고자 합니다. 또한 새로운 Lock 요소로 다중 워크플로의 리소스 점유를 관리할 수 있게 됩니다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video