AI로 만든 웹사이트마다 전용 DB를 하나씩 제공하는 이유

1 week ago 16

iMessage 기반 개인 비서 Poke는 사용자가 문자로 요청한 웹사이트를 만들어 Vercel에 배포하고, 생성된 사이트마다 별도의 Turso 데이터베이스(DB) 를 자동으로 제공함 Turso는 SQLite 호환 DB를 클라우드에서 생성하고 원격으로 사용할 수 있게 만든 플랫폼으로, 작은 DB를 프로그래밍 방식으로 빠르게 만들고 사용량에 맞춰 운영 사용자 계정/에이전트 상태/내부 운영 데이터는 기존 PlanetScale에 두고, AI가 생성한 웹사이트의 데이터만 사이트별 Turso DB로 분리 AI가 만든 비효율적인 SQL이나 취약한 코드, 갑작스러운 트래픽이 다른 사이트에 영향을 주지 않도록 생성된 사이트/아티팩트별 격리를 적용 에이전트가 DDL과 애플리케이션 코드를 만들고 이후 요청에 맞춰 스키마까지 수정하며, DB URL은 Vercel 환경변수로 자동 전달 최근 3개월 동안 Poke 전체에서 약 1억 건의 메시지를 처리했으며, 현재까지 약 1만 개의 DB를 생성 일회성으로 만들어진 뒤 사용되지 않는 사이트가 많지만, 유휴 DB를 정리하는 가비지 컬렉션은 아직 구현하지 않음 Turso는 무엇인가 Turso는 SQLite 계열 DB를 서버리스 클라우드 서비스 형태로 확장하여 제공하는 플랫폼 애플리케이션이 API를 통해 작은 DB를 빠르게 생성하고, 발급된 URL로 원격 접속 가능 DB마다 별도의 서버 프로세스와 연결 풀을 상시 운영하는 대신, 많은 DB를 생성하고 필요한 DB만 사용 사용하지 않는 DB에는 상시 실행 인스턴스 비용이 들지 않아, 일회성 사이트를 대량으로 생성하는 Poke의 구조와 잘 맞음 공유 DB를 사용하지 않은 이유 Poke는 핵심 시스템에 이미 PlanetScale을 사용하고 있지만, AI가 생성한 웹사이트까지 하나의 중앙 DB에서 사용자별로 구분하는 방식은 배제 에이전트가 비효율적인 SQL을 만들면 한 사이트의 높은 CPU 사용량이나 연결 점유가 전체 서비스에 영향을 줄 수 있음 공개된 웹사이트는 예상하지 못한 트래픽 급증을 겪을 수 있음 사용자 생성 코드의 취약점이 공유 DB를 통해 다른 사용자 데이터로 번질 위험도 존재 사이트마다 DB를 분리해 잘못된 쿼리/트래픽/취약점의 영향 범위를 해당 사이트로 제한 잠깐 사용된 뒤 방치되는 사이트가 많아 모든 사이트에 상시 실행되는 DB 인스턴스를 제공하는 구조도 부적합 웹사이트와 DB가 생성되는 과정 사용자가 Poke에 웹사이트 제작을 요청...

Read Entire Article