Fluid는 Vercel의 컴퓨팅 아키텍처입니다. 빌드, 함수, 샌드박스 등 워크로드의 종류에 상관없이 최적의 머신을 구성하고, 필요에 따라 즉시 재구성할 수 있는 단일 시스템입니다.
워크로드는 실행 시간, 메모리 사용량, 환경 제어 범위가 각각 다릅니다. 예전에는 작업마다 별도의 컴퓨팅 기본 단위가 필요했고, 그래서 제품을 개선하려면 기능 개발 전에 인프라 프로비저닝부터 해결해야 했습니다.
Vercel은 이런 문제들을 여러분이 신경 쓸 필요 없도록 설계했습니다. 컴퓨팅 레이어는 단 하나의 시스템으로, 역할도 단순합니다. 어떤 워크로드든 받아서 필요한 머신을 구성하고, 설정을 즉시 교체하며, 급증하는 트래픽을 실시간으로 흡수합니다.
이것을 Fluid라고 부릅니다.
처음에는 빌드가, 그다음엔 샌드박스가, 이제는 함수까지 Fluid 위에서 실행됩니다. Vercel로 배포한 적이 있다면, 이미 Fluid를 사용하고 있었던 겁니다.
Fluid 컴퓨팅은 현재 하루 1,500만 건 이상의 빌드, 주당 2,500만 건의 샌드박스, 월 1조 건의 요청을 처리하고 있습니다.
예전에는 머신을 바꾸려면 직접 손으로 해야 했습니다. 컴퓨터 매장에 가서 하드드라이브나 RAM을 사다가 직접 교체했죠.
그다음엔 필요할 때 베어메탈을 임대해 웹사이트를 운영하거나, 데이터베이스를 호스팅하거나, 이메일을 발송하는 데 활용할 수 있게 됐습니다.
이후 클라우드가 등장하면서, 원하는 사양으로 머신을 요청하고, 운영체제를 선택하고, 사용 후에는 바로 폐기할 수 있게 됐습니다.
그러나 에이전트에게는 클라우드조차 느립니다. 일반적인 VM은 에이전트의 작업 속도를 따라잡을 만큼 빠르게 프로비저닝되지 않습니다. 바로 이 지점에서 Fluid가 빛을 발합니다.
워크로드가 들어오면 Fluid는 그에 맞는 머신을 구성합니다. 에이전트가 코드를 실행해야 할 경우, Hive는 격리된 VM을 제공하는데, 대부분 이미 웜업된 상태라 즉시 사용할 수 있습니다. 그 위에서 여러분의 이미지가 환경으로 부팅되고, Drive가 연결되면 파일은 이전에 작업하던 그 자리 그대로입니다. 스토리지가 처음부터 머신에 종속되지 않기 때문입니다.
워크로드마다 필요한 것이 다릅니다. 빌드는 컴퓨팅 집약적이라 CPU와 메모리가 풍부한 고사양 머신이 필요합니다. 함수는 I/O 집약적이라 요청이 들어오는 순간 특정 코드를 로드해 실행하며, 보통 소형 VM에서 동작합니다. 샌드박스는 유연성이 핵심으로, 작업에서 요구하는 설정을 그대로 수용하고 사용자 데이터를 위해 Drive가 연결됩니다.
Fluid 컴퓨팅은 이 모든 것의 토대가 되는 실행 모델입니다. 요청마다 별도의 인스턴스를 띄우는 대신, 하나의 인스턴스에서 여러 요청을 동시에 처리합니다. 작업은 즉시 시작되며, Active CPU 과금 방식으로 코드가 실제로 실행되는 시간에만 CPU 비용을 냅니다. 데이터베이스나 모델의 응답을 기다리는 대기 시간은 제외됩니다.
Hive는 이른바 "하드웨어"입니다. 자체 컴퓨팅을 직접 제어하기 위해 만들었습니다. 모든 워크로드가 실행되는 격리된 머신을 프로비저닝하고, 작업에 맞는 머신을 선택하며, 멀티테넌트 환경에서 각 머신의 격리를 유지합니다. 이 모든 것을 글로벌 규모로 수행합니다. Hive는 모든 제품에 단일 컨트롤 플레인 API를 제공하므로, 각 팀이 독자적인 기반을 따로 유지하는 대신 동일한 토대 위에서 개발할 수 있습니다.
Fluid images는 실행 환경입니다. 지금까지는 OS가 고정되어 있었습니다. 클라우드가 제공하는 OS를 그대로 써야 했고, 직접 선택할 수 없었습니다. 이제는 직접 만든 이미지를 Vercel Container Registry에 푸시하고, 샌드박스와 함수 전반에 걸쳐 실행할 수 있습니다. 백그라운드에서 Vercel은 이미지를 VHS(Vercel Hive Snapshot) 형식의 Fluid 이미지로 변환합니다. VHS는 Dockerfile 배포와 샌드박스 커스텀 이미지에 적용되는 최적화된 부팅 포맷으로, 처음부터 부팅하는 대신 재개(resume) 방식으로 동작해 커스텀 머신을 밀리초 안에 준비할 수 있습니다. Sandbox Snapshots와 동일한 기술을 기반으로 하기 때문에, 한 제품에서 이루어진 최적화가 나머지 제품에도 자동으로 적용됩니다. v0은 이미 이 기술을 활용해 자체 개발 환경을 구축하고 실행하고 있습니다.
Vercel Drives는 스토리지입니다. 파일은 특정 머신의 디스크에 묶이지 않고, 워크로드와 함께 이동하는 이식 가능하고 내구성 있는 스토리지에 저장됩니다. 컴퓨팅보다 오래 지속되는 스토리지가 바로 시스템 전체를 작동하게 만드는 핵심입니다. Drive는 단일 머신에 종속되지 않기 때문에, 하위 컴퓨팅을 교체하더라도 다음 세션에서 정확히 이전에 멈춘 지점부터 이어서 작업할 수 있습니다. Drive는 현재 비공개 베타로 샌드박스에 연결되며, 이후 Fluid 전체로 확장될 예정입니다.
이것들은 별개의 플랫폼이 아니라, 동일한 시스템이 다른 형태로 나타난 것입니다. 모든 제품 아래에 하나의 컴퓨팅 레이어가 있기 때문에, 부팅 시간, 격리, 스케줄링, 캐싱 중 어느 하나가 개선되면 함수, 샌드박스, 빌드 전체에 동시에 적용됩니다. 같은 개선을 세 번씩 반복할 필요가 없습니다. 기반을 다시 구축하지 않고도 새로운 형태의 컴퓨팅을 추가할 수 있으며, 각 기본 단위가 서로 따로 놀며 벌어지는 문제도 생기지 않습니다.
이는 단순한 개념도가 아니라 실제로 동작하는 시스템입니다. Hive는 밀리초 안에 완전한 VM을 프로비저닝하고 파일시스템 상태까지 함께 가져옵니다. 아이솔레이트나 컨테이너보다 강력한 격리를 제공하면서도, 시작 시간에서 그 대가를 치르지 않습니다.
에이전트가 빠르게 동작하려면 적합한 머신이 즉시 준비되어야 합니다. 머신이 빨리 구성될수록 에이전트도 더 빠르게 일합니다.
에이전트는 신뢰할 수 없는 코드를 실행하기 때문에 머신에는 안전한 경계가 필요하고, 자체 도구를 갖추고 있기 때문에 독립된 환경이 필요합니다. 또한 에이전트는 끊임없이 생성되고 종료되기 때문에, 상태는 컴퓨팅보다 오래 유지되어야 합니다. Fluid는 그에 맞는 머신을 즉시 구성하고, 다음 작업을 위해 새로운 머신을 바로 준비합니다.
오랫동안 머신은 고정된 존재였고, 개발자가 그에 맞춰 일을 조정해야 했습니다.
Fluid에서는 작업을 정의하면, 머신이 그 주위에 맞춰 만들어집니다.