Instant 1.0 – AI가 작성한 앱을 위한 백엔드 플랫폼

1 day ago 4
  • AI가 생성한 코드로 완전한 앱을 빌드할 수 있도록 설계된 오픈소스 백엔드 시스템으로, 실시간 동기화와 오프라인 모드를 기본 제공
  • 구조는 Client SDK, Clojure 기반 백엔드, Postgres 멀티테넌트 데이터베이스로 구성되어, 수천 개의 앱을 동시에 운영 가능
  • 앱 생성은 VM 없이 데이터베이스 행만 추가하는 방식으로, 수 밀리초 내에 백엔드가 완성되고 비활성 앱에는 비용이 발생하지 않음
  • Auth, File Storage, Presence, Streams 등 주요 서비스가 통합되어 있으며, AI 에이전트가 직접 앱 생성과 스키마 업데이트를 수행할 수 있음
  • 4년에 걸쳐 개발된 이 시스템은 차세대 AI 앱 빌더를 위한 핵심 인프라로, GitHub와 Discord를 통해 공개 협업이 가능함

Instant 1.0의 구조와 설계

  • Instant 1.0은 AI가 코드를 작성하는 앱을 위한 완전한 백엔드 플랫폼으로, 오픈소스로 공개됨
  • 핵심 구성은 Client SDK, Clojure 기반 백엔드, Postgres 기반 멀티테넌트 데이터베이스 세 부분으로 이루어짐
  • 앱은 실시간 동기화, 오프라인 모드, 낙관적 업데이트를 기본 제공하며, 인증·파일 저장·Presence·Streams 등의 서비스가 통합됨
  • 모든 앱은 별도 VM 없이 데이터베이스의 몇 개 행만 추가하여 생성되며, 수천 개의 앱을 동시에 운영 가능
  • 전체 시스템은 4년에 걸쳐 개발되었으며, 차세대 AI 기반 앱 빌더를 위한 인프라로 설계됨

Demos

  • Instant는 무제한 앱 생성, 실시간 동기화 엔진, 통합 서비스를 주요 특징으로 제공
    • 앱은 ‘freeze’되지 않으며, VM 대신 데이터베이스 행만 추가해 수 밀리초 내에 백엔드가 완성됨
    • 비활성 앱은 메모리나 컴퓨트 비용이 없고, 활성 시에도 수 KB 수준의 오버헤드만 발생
  • Sync Engine은 오프라인·멀티플레이어·낙관적 업데이트를 지원
    • Linear, Notion, Figma와 같은 현대적 앱의 동작을 일반화해, 클라이언트에서 직접 쿼리와 트랜잭션을 수행
    • db.useQuery와 db.transact API로 프론트엔드에서 관계형 쿼리와 변경을 처리
  • 추가 서비스로 Auth, File Storage, Presence, Streams를 통합 제공
    • 파일은 데이터베이스 행으로 관리되어, S3 동기화나 백그라운드 워커 없이도 CASCADE 삭제 등 규칙 적용 가능
    • Auth는 Magic Code, OAuth, Guest Auth를 지원하며, Presence로 온라인 사용자 표시 가능
  • 모든 기능은 API 또는 CLI로 제어 가능하며, AI 에이전트가 직접 앱 생성·스키마 업데이트·권한 설정 수행 가능
    • npx create-instant-app 명령으로 NextJS, Bun, Vite 등 환경에 즉시 프로젝트 생성 가능

아키텍처 개요

  • Instant의 구조는 Client SDK, Clojure Backend, Multi-Tenant Database로 구성
    • Client SDK는 오프라인 쿼리와 낙관적 업데이트를 처리
    • Clojure Backend는 실시간 쿼리 유지와 멀티테넌트 자원 관리 담당
    • Postgres는 모든 앱 데이터를 단일 인스턴스에서 Triple Store 형태로 관리

Client SDK

  • 설계 목표는 오프라인 동작낙관적 업데이트 지원
    • IndexedDB를 사용해 브라우저 내 데이터 지속성 확보
  • Triple Store 구조로 데이터를 [entity, attribute, value] 형태로 저장
    • Datalog 기반 쿼리 엔진을 구현해 클라이언트에서 직접 관계형 쿼리 수행
    • SQLite보다 가볍고, 수십 줄의 코드로 구현 가능
  • Pending Queue를 통해 서버 승인 전 변경사항을 별도로 추적
    • 변경 실패 시 큐에서 제거되어 자동 롤백
    • mutative 라이브러리로 불변 데이터 구조 유지
  • InstaQL은 GraphQL에서 영감을 받은 쿼리 언어로, JavaScript 객체 문법을 그대로 사용
    • 빌드 단계 없이 동적 쿼리 생성 가능
  • Reactor는 IndexedDB, 서버 통신, 오프라인 상태, 실패 복구를 조정하는 핵심 상태 머신
    • WebSocket을 통해 서버와 실시간 데이터 교환 수행

Clojure Backend

  • 백엔드는 반응형 쿼리공정한 멀티테넌트 자원 분배를 목표로 설계
  • Query Store는 어떤 사용자가 어떤 쿼리를 구독 중인지 추적
    • 불필요한 데이터베이스 부하를 줄이기 위해 Topics 개념을 도입
    • Asana의 Luna, Figma의 LiveGraph에서 영감을 받아 쿼리를 주제 단위로 분류
  • Invalidator는 Postgres의 WAL(Write-Ahead Log) 을 모니터링하여 변경된 토픽을 감지
    • 트랜잭션과 쿼리 토픽을 매칭해 필요한 쿼리만 갱신
    • 효율성을 위해 트리형 인덱스 구조 사용
  • Grouped Queue는 앱별 서브큐를 두어 순서를 보장하면서 병렬 처리 가능
    • 고트래픽 앱이 자원을 독점하지 않도록 균형 유지
  • Session Manager는 WebSocket 세션을 관리하며, 쿼리·권한·서비스 요청을 조정
    • Grouped Queue를 활용해 부하 분산
  • Clojure와 JVM의 장점
    • 실스레드 기반 동시성, 간결한 추상화, 풍부한 라이브러리 생태계
    • Google CEL을 활용한 권한 언어 샌드박싱
    • DSL 작성이 용이해 멀티테넌트 SQL 생성 자동화

멀티테넌트 데이터베이스

  • 목표는 저비용 데이터베이스 생성관계형 구조 유지
  • Postgres VM이나 스키마 분리 대신, 단일 triples 테이블을 사용
    • 각 앱은 app_id로 논리적 분리
    • 새로운 데이터베이스 생성은 몇 개의 행 추가로 완료
  • Triple Store 구조의 장점

    • 컬럼 생성 시 테이블 락이 없고, 컬럼 삭제는 소프트 삭제로 즉시 복구 가능
    • Partial Indexes를 이용해 고유 제약조건과 효율적 쿼리 지원
    • column_unique 마커를 기반으로 부분 인덱스 생성
    • 중복 슬러그 삽입 방지 및 빠른 조회 가능
    • Count-Min Sketches로 Postgres의 통계 손실 문제 해결
    • EAV 패턴의 단점을 보완해 쿼리 플래너가 효율적 인덱스를 선택하도록 지원
    • Query Engine은 InstaQL을 SQL로 변환하고, Count-Min Sketch 통계를 활용해 최적화된 쿼리 플랜 생성
    • Clojure로 작성되었으며, pg_hint_plan을 통해 Postgres에 힌트를 전달

결론

  • Instant는 AI가 작성한 코드로 완전한 앱을 빌드할 수 있는 백엔드 인프라
  • 실시간·오프라인·멀티테넌트 구조를 통합한 Postgres 기반 Triple Store 시스템
  • 4년간의 개발 끝에 완성된 구조로, 수천 명의 개발자가 핵심 인프라로 사용 중
  • 모든 코드와 문서는 GitHub에 공개되어 있으며, Discord 커뮤니티를 통해 협업 가능
Read Entire Article