AI 코딩 앱을 위한 최적의 백엔드, Instant 1.0 공개
4년여의 개발 끝에 AI 코딩 에이전트를 풀스택 앱 빌더로 만들어주는 오픈소스 백엔드 플랫폼 Instant 1.0이 출시되었습니다. 이 플랫폼은 유휴 상태에서 앱을 동결시키지 않아 무제한 앱을 즉시 생성할 수 있는 멀티테넌시(Multi-tenant) 아키텍처와 오프라인 및 실시간 동기화를 지원하는 강력한 동기화 엔진(Sync engine)을 제공합니다. 개발자는 복잡한 인프라 구축 없이도 Linear나 Notion 같은 현대적인 앱을 손쉽게 만들 수 있게 되어, AI 기반 에이전트의 앱 배포 생태계가 한층 더 빠르고 효율적으로 발전할 전망입니다.
Instant 대시보드: AI가 코딩한 앱을 위한 백엔드 Joe, Stepan, Daniel, Drew (19분 소요)
4년 만에 저희는 Instant 1.0을 출시하게 되었습니다! Instant는 여러분이 즐겨 쓰는 코딩 에이전트를 풀스택 앱 빌더로 변신시켜 줍니다. 그리고 저희는 완전한 오픈소스입니다. [1]
저희는 Instant가 AI가 코딩하는 앱에 사용할 수 있는 가장 완벽한 백엔드라고 자신 있게 말씀드립니다. 이 글에서는 두 가지를 다룰 것입니다. 첫째, 여러분이 직접 판단하실 수 있도록 일련의 데모를 보여드리겠습니다. 둘째, 아키텍처를 설명하겠습니다. 실시간, 관계형, 그리고 멀티테넌시 백엔드의 한계점들은 저희가 몇 가지 흥미로운 설계를 선택하도록 이끌었습니다. 저희는 Postgres 위에 멀티테넌트 데이터베이스를 구축했고, Clojure로 동기화 엔진을 만들었습니다. 이 모든 것이 어떻게 작동하는지, 그리고 지금까지 배운 것들을 공유하겠습니다. 본격적으로 시작해 보죠.
데모 Instant를 선택하면 세 가지 이점을 얻습니다. 무제한 앱을 만들 수 있으며, 결코 정지(동결)되지 않습니다. 동기화 엔진(Sync engine)이 제공되어 오프라인에서도 작동하고 실시간이며 매우 빠릅니다. 더 많은 기능이 필요할 때 인증, 파일 스토리지, 프레즌스(presence), 스트림(streams)과 같은 내장 서비스를 이용할 수 있습니다. 이것이 무슨 의미인지, 각각의 특징을 자세히 살펴보고 어떻게 구현되는지 보여드리겠습니다.
무제한 앱 (Unlimited Apps) 전통적으로 앱을 온라인에 호스팅하려면 가상 머신(VM) 비용을 지불하거나 제한을 받습니다. 많은 서비스가 무료로 만들 수 있는 앱의 수를 제한하고, 유휴 상태가 되면 앱을 동결시킵니다. 동결을 해제하는 데는 종종 30초 이상, 때로는 몇 분이나 걸립니다. 저희는 이 점이 마음에 들지 않았습니다. 그래서 Instant에서는 원하시는 만큼 프로젝트를 생성하셔도 되며, 절대 앱을 동결시키지 않습니다.
Instant는 멀티테넌시(Multi-tenant)로 설계되었기 때문에 이것이 가능합니다. 새 프로젝트를 생성할 때 저희는 VM을 띄우지 않습니다. 단지 멀티테넌시 인스턴스에 몇 개의 데이터베이스 행만 추가할 뿐입니다. 앱이 비활성 상태일 때는 컴퓨팅이나 메모리 비용이 전혀 발생하지 않습니다. 활성 상태일 때조차 VM에 필요한 수백 메가바이트와 달리 단지 몇 킬로바이트의 추가 RAM 오버헤드만 발생합니다. 즉, 진정으로 무제한 앱을 만들 수 있습니다.
사실 이 과정은 매우 효율적이어서, 이 글 안에서 바로 앱을 만들어 드릴 수 있습니다. 가입도 필요 없습니다. 버튼을 클릭하면 독립된 백엔드를 얻게 됩니다.
앱 만들기 버튼을 누르면 백엔드가 생성됩니다. 여러분의 컴퓨터까지 왕복하는 시간을 포함해도 전체 과정은 단 몇 밀리초밖에 걸리지 않습니다.
백엔드를 식별할 공개 앱 ID(App ID)와 권한 있는 변경을 할 수 있는 비공개 관리자 토큰(Admin Token)을 받게 됩니다. 여기에는 관계형 데이터베이스, 동기화 엔진, 그리고 인증 및 스토리지 같은 추가 서비스가 포함됩니다. 무제한 앱과 에이전트를 결합하면 전혀 다른 방식으로 개발을 시작하게 될 것입니다. 오늘날 이미 에이전트를 사용하여 수많은 앱을 만들 수 있습니다. Instant를 사용하면 이 앱들을 프로덕션 환경으로 배포할 때 어떠한 제약도 받지 않게 됩니다.
동기화 엔진 (Sync Engine) 앱을 만들었다면, 이제 어떻게 훌륭한 앱으로 만들까요? 전통적인 CRUD 앱을 만드는 것은 쉽습니다. 에이전트에게 데이터베이스 마이그레이션, 백엔드 엔드포인트, 클라이언트 측 스토어를 연결하도록 지시하기만 하면 됩니다. 하지만 이런 앱을 매력적으로 만드는 것은 어렵습니다.
전통적인 CRUD 앱을 Linear, Notion, Figma 같은 현대적인 앱과 비교해 보십시오. 현대적인 앱은 멀티플레이어를 지원하고 오프라인에서도 작동하며 매우 빠릅니다. Linear에서 할 일을 변경하면 어디에서든 반영됩니다. Notion에서 오프라인이 되어도 문서에 여전히 주석을 달 수 있습니다. Figma에서 도형의 색을 칠할 때 서버를 기다리지 않고 즉시 결과를 볼 수 있습니다.
이러한 종류의 앱은 맞춤형 인프라가 필요합니다. 실시간을 위해서는 상태 저장 웹소켓 서버(stateful websocket servers)를 추가합니다. 오프라인 모드를 위해서는 IndexedDB에 캐시를 저장합니다. 그리고 낙관적 업데이트(optimistic updates)를 위해 클라이언트에서 변경 사항을 적용하고 되돌리는 방법을 고안해야 합니다. Linear, Notion, Figma 모두 이를 처리하기 위해 맞춤형 인프라를 구축했습니다. 업계에서는 이러한 인프라를 동기화 엔진(sync engine)이라고 부릅니다. [2] 개발자는 데이터가 로컬에 있는 것처럼 UI를 작성하고 데이터를 쿼리합니다. 동기화 엔진은 백그라운드에서 모든 데이터 관리를 처리합니다. 현대적인 앱에 동기화 엔진이 필요하다면, 여러분이 직접 그것을 밑바닥부터 만들어야 할 이유는 없습니다.