Bubble에서 Next.js + Supabase로 마이그레이션하기 (2026)
매달 송장이 도착하면 그 숫자에 멈춰버립니다—워크플로우 유닛 847달러, 또 그렇게. 새로운 탭을 열고 검색창에 "Bubble 대안"이라고 입력합니다. 작년에 저희에게 전화한 세 명의 창업자가 정확히 이렇게 했습니다. 각자 자신들이 막다른 골목에 빠졌다고 생각했습니다. 그들은 그러지 않았습니다. 실제로 한 것은 제품-시장 적합성을 검증한 것인데, Bubble의 사용량 기반 가격 책정이 이에 따라 확장할 수 없었던 것입니다. Next.js와 Supabase로의 마이그레이션은 4주에서 9주가 걸렸으며, 워크플로우에 얼마나 많은 커스텀 로직이 있는지에 따라 달라졌습니다. 한 팀은 2개월 차에 월 640달러를 절약했습니다. 또 다른 팀은 페이지 로드를 3.2초에서 680밀리초로 단축했고 가입 전환이 11포인트 올랐습니다. Bubble 앱이 잘 작동하지만 단위 경제학이 맞지 않다면, 마이그레이션이 어떻게 진행되는지 정확히 볼 수 있습니다—실제 코드, 실제 타임라인, 그리고 4주 만에 배포할지 4개월 걸릴지를 결정하는 3가지 결정 사항까지.
Bubble은 MVP를 출시하는 데 정말 훌륭합니다. 나는 초기 단계 창업자들에게 셀 수 없을 정도로 많이 추천했습니다. 하지만 계속 보이는 패턴이 있습니다: 제품이 성장하고, 팀이 성장하고, 사용자 기반이 성장합니다—그리고 갑자기 Bubble이 당신과 함께 성장하지 않습니다. 당신을 방해하고 있습니다. 1,000명의 사용자일 때는 괜찮아 보이던 워크플로우 유닛(WU) 가격 책정 모델이 50,000명일 때가 되면 진지한 문제가 됩니다. 해방감을 주던 비주얼 에디터가 커스텀 로직이 필요할 때 우리 새장처럼 느껴지기 시작합니다. "허용 가능한" 페이지 로드 시간이 부끄러워질 정도가 됩니다.
이 글은 내가 처음 이렇게 했을 때 바랐던 마이그레이션 가이드입니다. 팀이 왜 Bubble을 벗어나는지, 2026년의 실제 비용이 어떻게 보이는지, 그리고 회사를 태우지 않으면서 실제로 Next.js와 Supabase로의 마이그레이션을 어떻게 실행하는지 이야기할 것입니다.
목차
- 팀이 왜 Bubble을 벗어나는가
- Bubble의 2026 가격 책정 현실 확인
- Next.js + Supabase가 올바른 선택인 이유
- 아키텍처 비교: Bubble vs Next.js + Supabase
- 마이그레이션 플레이북
- 데이터 마이그레이션: Bubble의 데이터베이스에서 탈출하기
- Next.js에서 프론트엔드 재구축
- Supabase를 백엔드로 설정하기
- 인증 및 사용자 마이그레이션
- 마이그레이션 후 성능 및 비용
- 일반적인 함정 및 피하는 방법
- FAQ

팀이 왜 Bubble을 벗어나는가
"벗어난다"가 실제로 무엇을 의미하는지 구체적으로 이야기해봅시다. 한 가지가 아니기 때문입니다. 보통 여러 pain points의 조합이 서로를 강화하게 됩니다.
성능 한계
Bubble 앱은 공유 인프라에서 실행됩니다. 당신의 앱은 다른 Bubble 앱들과 컴퓨팅 리소스를 공유합니다. 당신의 앱이 트래픽 스파이크를 받을 때, 단순히 더 많은 인스턴스를 띄울 수 없습니다—Bubble의 자비에 맡겨져 있습니다. 저는 500명 이상의 동시 사용자가 있는 Bubble 앱이 기본 데이터베이스 쿼리에 3-5초의 응답 시간을 경험하는 것을 보았습니다. 그것은 버그가 아닙니다; 그것이 아키텍처입니다.
Bubble 페이지도 무겁습니다. 일반적인 Bubble 페이지는 클라이언트에 2-4MB의 JavaScript를 전달합니다. 잘 구축된 Next.js 페이지가 200-400KB를 전달할 수 있는 것과 비교하면, 특히 모바일에서 그 차이를 느낄 것입니다.
플러그인 문제
Bubble의 플러그인 생태계는 강점이자 아킬레스 건입니다. Stripe 통합, PDF 생성, 이메일 전송을 위해 플러그인을 설치할 것입니다—그리고 각각은 다음 화요일에 버릴 수 있는 무작위 제3자 개발자가 유지 관리합니다. 저는 플러그인 작성자가 나쁜 업데이트를 푼 후 프로덕션 앱이 깨지는 것을 봤습니다. 당신은 전혀 통제할 수 없습니다.
공급업체 종속은 실제입니다
전체 애플리케이션—로직, 데이터, UI—가 Bubble의 소유 시스템 내에 있습니다. "앱을 내보내기" 버튼이 없습니다. 워크플로우는 코드가 아닙니다; 그것들은 Bubble의 형식으로 저장된 비주얼 구성입니다. Bubble이 가격 책정을 바꾸면(여러 번 했습니다), 지불하거나 다시 시작하거나 둘 중 하나입니다. 어떤 비즈니스도 원하지 않는 끔찍한 협상 위치입니다.
팀 확장 문제
2026년에 "Bubble 개발자"를 고용해 보세요. 인재 풀은 React/Next.js 개발자에 비해 작습니다. Bubble의 버전 제어는 Git과 비교할 때 기초적입니다. 여러 개발자가 동시에 같은 Bubble 앱에서 작업하는 것은 좌절감을 주는 운동입니다. 실제 코드 리뷰 프로세스, 분기 전략, CI/CD 파이프라인이 없습니다.
Bubble의 2026 가격 책정 현실 확인
Bubble은 2023년에 워크플로우 유닛(WU) 가격 책정으로 이동했으며, 그 이후로 여러 번 조정했습니다. 2026년 초 현재 다음을 확인합니다:
| 플랜 | 월간 비용 | 워크플로우 유닛 | 서버 측 WU 요금 | 클라이언트 측 WU 요금 |
|---|---|---|---|---|
| Free | $0 | 제한됨 (테스트 전용) | N/A | N/A |
| Starter | $32/월 | 10,000 WU | 작업당 1 WU | 작업당 0.2 WU |
| Growth | $129/월 | 50,000 WU | 작업당 1 WU | 작업당 0.2 WU |
| Team | $349/월 | 150,000 WU | 작업당 1 WU | 작업당 0.2 WU |
| Enterprise | 커스텀 | 커스텀 | 커스텀 | 커스텀 |
| 초과분 | WU당 | — | $0.003/WU | $0.003/WU |
여기서 더 심해집니다. 10,000명의 활성 사용자를 가진 적당히 복잡한 SaaS 앱은 월 500,000-1,000,000 WU를 쉽게 태울 수 있습니다. 이것은 Team 플랜 위에 $1,050-$2,550의 초과 요금입니다. 저는 월 $50-200의 클라우드 인프라에서 실행할 수 있는 앱에 대해 월 $3,000-$8,000를 지불하는 회사들을 봤습니다.
WU 모델은 커스텀 스택에서 기본적으로 무료일 것들에 대해 비용을 청구하기 때문에 특히 가혹합니다. 데이터베이스를 검색하나요? WU가 필요합니다. 반복 워크플로우를 예약하나요? WU입니다. 알림을 보내나요? WU입니다. 서버 측의 모든 API 호출, 모든 조건부 확인—모두 누적됩니다.
그리고 정말 따끔한 부분입니다: Bubble의 가격 책정은 한 방향으로만 움직였습니다. WU 모델은 이전의 용량 기반 가격 책정을 대체했고, 많은 사용자들은 밤사이에 청구서가 2-5배 증가한 것을 봤습니다. 다시 일어나지 않을 보장은 없습니다.
Next.js + Supabase가 올바른 선택인 이유
저는 지난 몇 년 동안 수십 개의 Bubble 종료 전략을 평가했습니다. Rails, Django, Laravel, plain React with Firebase—모두 유효합니다. 하지만 구체적으로 Bubble에서 오는 팀들에게는, Next.js + Supabase 조합이 이기기 어려운 sweet spot을 제공합니다.
Next.js가 Bubble이 할 수 없는 것을 제공합니다
2026년의 현재 안정적인 릴리스인 Next.js 15는 서버 측 렌더링, 정적 생성, API 라우트, 미들웨어 및 에지 함수를 모두 하나의 프레임워크에서 제공합니다. 페이지가 빠르게 로드되는 이유는 그 페이지가 실제로 필요한 JavaScript만 전달하기 때문입니다. App Router는 수십 개의 Bubble 워크플로우가 필요한 레이아웃, 로딩 상태 및 에러 경계를 제공합니다.
더 중요한 것은 React라는 것입니다. React 생태계는 거대합니다. 날짜 선택자가 필요하신가요? 50개의 battle-tested 옵션이 있습니다. 차트가 필요하신가요? Recharts, Visx, Nivo—원하는 것을 선택하세요. 인증이 필요하신가요? NextAuth.js (현재는 Auth.js) 또는 Supabase Auth. 플러그인 개발자가 버그를 수정할 때까지 기다리는 처지에 절대 갇히지 않습니다.
이 경로를 고려 중이라면, 우리의 Next.js 개발 팀은 여러 Bubble 앱을 마이그레이션했으며 프로세스가 정확히 어떤 모습인지 공유할 수 있습니다.
Supabase가 Bubble의 백엔드를 대체합니다
Supabase는 존재하는 가장 가까운 "Bubble 백엔드 대체"입니다. 이유는 다음과 같습니다:
- PostgreSQL 데이터베이스 — Bubble의 기묘한 데이터 구조 대신 실제로 쿼리 가능하고 인덱싱 가능한 관계형 데이터베이스
- 행 레벨 보안(RLS) — 데이터베이스 레벨에서 누가 데이터를 읽고/쓸 수 있는지 정의합니다
- 내장된 인증 — 이메일/비밀번호, 매직 링크, OAuth 제공자, 모두 처리됨
- 실시간 구독 — 폴링 없이 실시간 데이터 업데이트
- 저장소 — CDN 배달이 포함된 파일 업로드
- 에지 함수 — 커스텀 로직을 위한 서버리스 함수
Supabase의 2026년 가격 책정은 규모에서 Bubble보다 극적으로 저렴합니다:
| Bubble (Growth) | Supabase (Pro) + Vercel (Pro) | |
|---|---|---|
| 월간 기본 비용 | $129 | $25 + $20 = $45 |
| 10K 사용자 기준 | $349+ (초과 가능성) | ~$75-150 (사용량 포함) |
| 50K 사용자 기준 | $2,000-5,000+ | ~$200-500 |
| 100K 사용자 기준 | $5,000-12,000+ | ~$400-1,200 |
| 데이터베이스 액세스 | 소유 쿼리 | 전체 PostgreSQL |
| 커스텀 코드 | 매우 제한됨 | 무제한 |
이 숫자들은 이론적이지 않습니다. 저는 함께 일한 회사들의 실제 청구서를 기준으로 합니다.

아키텍처 비교: Bubble vs Next.js + Supabase
Bubble의 개념을 새로운 스택에 매핑해봅시다. 무엇이 어디로 가는지 볼 수 있도록:
| Bubble 개념 | Next.js + Supabase 동등물 |
|---|---|
| 페이지 | Next.js 페이지/라우트 (App Router) |
| 재사용 가능한 요소 | React 컴포넌트 |
| 비주얼 요소 | JSX + Tailwind CSS / 컴포넌트 라이브러리 |
| 워크플로우 | API 라우트, Server Actions, Edge Functions |
| 데이터베이스 것들 | PostgreSQL 테이블 |
| 데이터 유형 및 필드 | 적절한 유형의 테이블 열 |
| 프라이버시 규칙 | Supabase 행 레벨 보안 (RLS) |
| 백엔드 워크플로우 | Supabase Edge Functions 또는 cron 작업 |
| API Connector | 기본 fetch/axios 호출 |
| 플러그인 | npm 패키지 |
| 사용자 인증 | Supabase Auth 또는 Auth.js |
| 파일 업로드 | Supabase Storage |
| 예약 | pg_cron 또는 외부 (Inngest, Trigger.dev) |
마이그레이션 플레이북
모든 것을 한 번에 재구축하려고 하지 마세요. 저는 그것이 극적으로 실패하는 것을 봤습니다. 실제로 작동하는 단계적 접근 방식이 있습니다.
1단계: 감사 및 계획 (1-2주)
한 줄의 코드를 작성하기 전에, Bubble 앱이 하는 모든 것을 문서화합니다. 진짜로 모든 것:
- 모든 페이지 매핑 — 스크린샷, 사용자 흐름, 각 페이지가 읽고/쓰는 데이터
- 모든 워크플로우 카탈로그 — 서버 측 및 클라이언트 측, 무엇이 그것들을 트리거하는지, 그것들이 하는 일
- 데이터 모델 문서화 — 모든 데이터 유형, 모든 필드, 모든 관계
- 모든 통합 나열 — Stripe, SendGrid, Twilio, 어떤 플러그인이든 사용하는 것
- 자르기를 원하는 것 식별 — 아무도 사용하지 않는 기능이 있을 것을 보장합니다. 죽은 무게를 마이그레이션하지 마세요.
2단계: 기초 구축 (2-3주)
새로운 스택을 세웁니다:
npx create-next-app@latest my-app --typescript --tailwind --app
cd my-app
npm install @supabase/supabase-js @supabase/ssr
Supabase 프로젝트를 설정하고, 인증을 구성하고, 데이터베이스 스키마를 생성합니다. 이것은 Bubble에서 한 모든 데이터 모델링 실수를 수정할 기회입니다. 적절한 외부 키, 인덱스 및 데이터 유형의 이점을 활용합니다.
3단계: 핵심 기능 구축 (4-8주)
가장 많은 트래픽을 받는 기능부터 시작합니다. Next.js에서 적절하게 구축합니다. Bubble의 정확한 UI를 복제하려고 하지 마세요—UX를 개선할 기회를 삼으세요.
4단계: 데이터 및 사용자 마이그레이션 (1-2주)
이것이 무서운 부분이며 자신만의 섹션을 받을 자격이 있습니다.
5단계: 전환 (1주)
두 시스템을 병렬로 실행하고, 모든 것이 작동하는지 확인한 후, DNS를 뒤집습니다. 몇 주 동안 Bubble 앱을 읽기 전용 모드로 실행 상태로 유지합니다.
데이터 마이그레이션: Bubble의 데이터베이스에서 탈출하기
Bubble을 사용하면 데이터를 CSV 파일로 내보낼 수 있습니다. 그것이 시작점이지만 깔끔하지는 않습니다.
# Bubble CSV 내보내기를 변환하기 위한 예제 Python 스크립트
import csv
import json
from supabase import create_client
supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
with open('bubble_users_export.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
# Bubble은 이상한 형식의 날짜를 내보냅니다
created = convert_bubble_date(row['Created Date'])
# Bubble은 "1677234567890x123456789" 같은 고유 ID를 사용합니다
# 이것들을 UUID에 매핑할 것입니다
user_data = {
'legacy_bubble_id': row['unique id'],
'email': row['email'],
'name': row['name_text'],
'created_at': created,
# 모든 커스텀 필드 매핑
}
supabase.table('users').insert(user_data).execute()
Bubble 데이터 내보내기의 주요 gotchas:
- 관계는 Bubble ID로 저장됩니다 — 이것들을 새로운 외부 키로 변환하기 위해 매핑 테이블을 작성해야 합니다
- 파일 필드는 Bubble CDN URL로 내보냅니다 — Bubble 앱이 오프라인이 되기 전에 이 파일들을 다운로드하고 Supabase Storage에 다시 업로드해야 합니다
- 목록 필드는 쉼표로 구분된 Bubble ID로 내보냅니다 — 이것들이 적절한 junction 테이블이 되어야 합니다
- 날짜 형식이 일관성이 없습니다 — 날짜 파싱을 철저히 테스트합니다
Bubble Data API의 경우, 프로그래밍 방식으로 데이터를 가져올 수도 있으며, 때로 대용량 데이터 세트의 경우 CSV 내보내기보다 더 쉬울 수 있습니다:
// Bubble의 Data API에서 데이터를 가져옵니다
const fetchBubbleData = async (type, cursor = 0) => {
const response = await fetch(
`https://yourapp.bubbleapps.io/api/1.1/obj/${type}?cursor=${cursor}&limit=100`,
{
headers: {
'Authorization': `Bearer ${BUBBLE_API_KEY}`
}
}
);
return response.json();
};
Next.js에서 프론트엔드 재구축
Bubble의 비주얼 에디터는 한 번 패턴을 보면 component-based 아키텍처에 놀랍도록 잘 매핑됩니다. Bubble의 "재사용 가능한 요소"는 문자 그대로 React 컴포넌트입니다. Bubble의 "그룹"은 Tailwind 클래스를 가진 <div>입니다.
Bubble에서 데이터가 무거웠던 페이지에 대해 사용하는 패턴은 다음과 같습니다:
// app/dashboard/page.tsx
import { createClient } from '@/lib/supabase/server';
import { DashboardStats } from '@/components/dashboard-stats';
import { RecentActivity } from '@/components/recent-activity';
export default async function DashboardPage() {
const supabase = await createClient();
const { data: stats } = await supabase
.from('user_stats')
.select('*')
.single();
const { data: activity } = await supabase
.from('activity_log')
.select('*, project:projects(name)')
.order('created_at', { ascending: false })
.limit(20);
return (
<div className="max-w-7xl mx-auto px-4 py-8">
<h1 className="text-3xl font-bold mb-8">Dashboard</h1>
<DashboardStats stats={stats} />
<RecentActivity items={activity} />
</div>
);
}
데이터 페칭이 서버 측에서 일어난다는 것에 주목합니다. 로딩 스피너가 없고, waterfall 요청이 없습니다. 페이지가 완전히 렌더링되어 도착합니다. 이것만으로도 Bubble 버전보다 앱이 극적으로 빠르게 느껴집니다.
컴포넌트 라이브러리의 경우, shadcn/ui에서 좋은 결과를 얻었습니다. 소유한 polished되고 접근 가능한 컴포넌트를 제공합니다 (그것들은 패키지에서 가져올 수 없고 코드베이스에 복사됩니다). Tailwind CSS와 결합하면, Bubble UI를 빠르게 재구축할 수 있고 더 반응이 빠르고 성능이 좋을 것입니다.
Supabase를 백엔드로 설정하기
Supabase의 행 레벨 보안은 Bubble의 프라이버시 규칙을 대체하는 것이며, 솔직히 훨씬 더 강력합니다:
-- 사용자가 자신의 데이터만 보도록 합니다
CREATE POLICY "Users can view own data"
ON user_profiles FOR SELECT
USING (auth.uid() = user_id);
-- 사용자가 자신의 프로필만 업데이트하도록 합니다
CREATE POLICY "Users can update own profile"
ON user_profiles FOR UPDATE
USING (auth.uid() = user_id);
-- 관리자가 모두 볼 수 있도록 합니다
CREATE POLICY "Admins can view all"
ON user_profiles FOR SELECT
USING (
EXISTS (
SELECT 1 FROM user_roles
WHERE user_id = auth.uid()
AND role = 'admin'
)
);
백엔드 워크플로우 (Bubble에서 일정에 따라 실행되던 것들)의 경우, Supabase Edge Functions with pg_cron이 대부분의 사용 사례에서 잘 작동합니다. 더 복잡한 작업 스케줄링을 위해, Trigger.dev 또는 Inngest는 Next.js와 자연스럽게 통합되는 훌륭한 선택입니다.
인증 및 사용자 마이그레이션
이것이 전체 마이그레이션에서 가장 까다로운 부분입니다. 사용자들이 Bubble에 저장된 비밀번호를 가지고 있으며, 비밀번호 해시를 내보낼 수 없습니다. 두 가지 옵션이 있습니다:
- 암호 재설정 강제 — 모든 사용자에게 "우리가 플랫폼을 업그레이드했습니다" 이메일을 보내고 비밀번호 재설정 링크를 보냅니다. 간단하지만 마찰을 만듭니다.
- 게으른 마이그레이션 — 첫 로그인 시 Bubble의 API에 대해 인증을 시도하는 커스텀 인증 흐름을 설정합니다. 성공하면, 방금 입력한 비밀번호로 Supabase의 사용자를 생성합니다.
2번 옵션은 더 많은 작업이지만 훨씬 나은 사용자 경험입니다. 대략적인 형태입니다:
// app/api/auth/migrate-login/route.ts
export async function POST(request: Request) {
const { email, password } = await request.json();
// 먼저 Supabase 시도
const { data, error } = await supabase.auth.signInWithPassword({
email, password
});
if (data.user) return Response.json({ success: true });
// Supabase에 없으면, Bubble 시도
const bubbleAuth = await authenticateWithBubble(email, password);
if (bubbleAuth.success) {
// 같은 비밀번호로 Supabase에 사용자 생성
const { data: newUser } = await supabase.auth.admin.createUser({
email,
password,
email_confirm: true,
});
// 프로필 데이터 마이그레이션
await migrateUserProfile(bubbleAuth.userId, newUser.user.id);
// 로그인
return Response.json({ success: true });
}
return Response.json({ error: 'Invalid credentials' }, { status: 401 });
}
마이그레이션 후 성능 및 비용
2025년 말에 마이그레이션하는 데 도움을 준 프로젝트 관리 SaaS의 실제 숫자:
| 메트릭 | Bubble에서 | 마이그레이션 후 |
|---|---|---|
| 평균 페이지 로드 시간 | 3.8초 | 0.9초 |
| 상호작용까지의 시간 | 5.2초 | 1.4초 |
| Lighthouse 성능 | 38 | 92 |
| 월간 인프라 비용 | $4,200 | $187 |
| 월간 활성 사용자 | 12,000 | 12,000 |
| API 응답 시간 (p95) | 1,800ms | 180ms |
| 가동시간 (3개월 평균) | 99.2% | 99.97% |
비용 절감만으로도 2개월 이내에 마이그레이션을 정당화했습니다. 성능 개선은 다음 분기에 대략 15%의 churn을 감소시켰습니다.
이 숫자들을 보고 있고 "그것을 원하지만 그것을 끌어낼 개발 팀이 없습니다"라고 생각한다면, 그것이 정확히 우리가 다루는 프로젝트의 종류입니다. 우리의 headless CMS 및 앱 개발 작업을 확인하거나 마이그레이션 평가를 위해 연락하세요.
일반적인 함정 및 피하는 방법
Bubble을 정확히 복제하려고 시도합니다
하지 마세요. Bubble의 방식은 종종 code-based 스택에서 최악의 방식입니다. 마이그레이션을 사용자 흐름과 데이터 아키텍처를 재고할 기회로 사용합니다.
데이터 마이그레이션을 과소평가합니다
필요하다고 생각하는 시간의 두 배를 예산으로 책정합니다. Bubble의 데이터 내보내기는 당신을 놀라게 할 edge cases를 가질 것입니다. 예상하지 못한 곳에 null 값. 중복 레코드. 고아 관계.
파일 저장을 잊습니다
Bubble은 업로드된 파일을 CDN에 호스팅합니다. Bubble 플랜을 취소하면 해당 URL이 죽습니다. Bubble 앱을 전환하기 전에 모든 단일 파일이 다운로드되고 Supabase Storage에 다시 업로드되었는지 확인합니다.
모니터링을 조기에 설정하지 않습니다
Bubble에서는, 어쨌든 문제에 대해 아무것도 할 수 없기 때문에 모니터링을 생각하지 않습니다. 새로운 스택에서, error tracking을 위해 Sentry를 설정하고 첫 날부터 성능 모니터링을 위해 Vercel Analytics (또는 Plausible/PostHog)를 설정합니다.
혼자서 해야 할 때 시도합니다
Bubble 앱이 복잡하고 수익이 중요한 경우, 이전에 이렇게 한 팀에서 도움을 받는 것을 진지하게 고려합니다. botched 마이그레이션의 비용—잃어버린 데이터, 다운타임, 사용자 churn—은 전문적인 도움의 비용을 훨씬 초과합니다. 우리의 가격 책정 페이지에는 engagements가 어떤 모양인지에 대한 세부 사항이 있습니다.
FAQ
Bubble에서 Next.js + Supabase로의 마이그레이션은 얼마나 걸리나요?
10-30개 페이지와 중간 정도의 복잡성을 가진 일반적인 SaaS 앱의 경우, 완전한 마이그레이션에 8-16주를 예상합니다. 간단한 앱 (landing page + dashboard + 몇 가지 CRUD 기능)은 4-6주에 완료할 수 있습니다. 많은 통합, 커스텀 로직 및 큰 데이터 세트를 가진 복잡한 앱은 16-24주가 걸릴 수 있습니다. 데이터 마이그레이션과 사용자 인증 전환은 보통 예상보다 오래 걸리는 것들입니다.
Bubble에서 점진적으로 마이그레이션할 수 있거나 한 번에 모두 해야 하나요?
절대 점진적으로 할 수 있습니다. 일반적인 접근 방식은 새로운 Next.js 앱을 Bubble 앱과 함께 구축하고, 한 번에 하나씩 기능을 마이그레이션하고, subdomain 라우팅을 사용하여 사용자를 올바른 버전으로 보내는 것입니다. 예를 들어, 새로운 dashboard는 app.yoursite.com에서 라이브하는 반면 legacy 기능은 여전히 Bubble에서 실행됩니다. 두 시스템을 동시에 유지 관리하는 것도 자신만의 비용이 있다는 것을 알아야 합니다.
FlutterFlow, WeWeb 또는 Xano와 같은 Bubble 대안은 어떨까요—대신 고려해야 하나요?
주요 문제가 Bubble의 가격 책정이지만 여전히 no-code/low-code 접근 방식을 원한다면, WeWeb (프론트엔드) + Xano (백엔드)와 같은 도구가 작동할 수 있습니다. 하지만 한 공급업체 종속을 다른 것으로 거래하고 있습니다. Bubble을 벗어나는 것이 성능, 확장성 또는 팀 크기 때문이라면, 결국 이러한 도구도 벗어날 것입니다. Next.js + Supabase와 같은 code-based 스택으로 이동하는 것은 무한대로 확장되는 일회성 투자입니다.
Next.js + Supabase 앱을 실행하는 비용은 Bubble과 비교하여 얼마나 되나요?
대부분의 SaaS 앱의 경우, Vercel + Supabase에서 $45-200/월을 찾고 있는데, Bubble에서 $349-5,000+/월이 걸립니다. Supabase Pro는 $25/월, Vercel Pro는 $20/월입니다. 규모가 커지면, workflow units보다는 실제 컴퓨팅 리소스에 대해 비용을 지불하기 때문에 비용이 훨씬 더 천천히 성장합니다. 대략적인 경험 법칙: Bubble에 지불하고 있던 5-20% 정도 지불할 것으로 기대합니다.
마이그레이션으로 인해 SEO가 영향을 받을까요?
극적으로 개선할 수 있습니다. Bubble 앱은 client-rendered되고 느린데, Core Web Vitals 점수에 영향을 줍니다. Next.js는 server-side 렌더링 및 정적 생성을 지원하므로, 페이지 로드가 더 빠르고 crawlability가 더 나습니다. 오래된 Bubble URL에서 새로운 Next.js 라우트로 적절한 301 리디렉션을 설정해야 하고, 몇 주 내에 SEO 개선을 볼 수 있을 것입니다.
Supabase를 사용하려면 PostgreSQL을 알아야 하나요?
기본적인 SQL 지식이 많은 도움이 되지만, Supabase는 시각적 테이블 편집기와 대부분의 쿼리를 추상화하는 JavaScript 클라이언트 라이브러리를 제공합니다. 그렇다고 해서, SQL을 이해하면 극적으로 더 효과적일 것입니다. 복잡한 쿼리, 보고 및 성능 튜닝의 경우, SQL 지식이 필수입니다. 팀이 SQL 경험이 없다면, 지금이 배우기 좋은 시간입니다—그것은 영원히 배당금을 지불하는 기술입니다.
마이그레이션 중에 Bubble 앱의 API 통합은 어떻게 되나요?
각 통합을 Next.js 앱에서 다시 생성해야 합니다. 좋은 소식은 이것이 보통 Bubble의 API Connector 플러그인을 사용하는 것보다 코드로 훨씬 더 쉽다는 것입니다. Bubble에서 플러그인과 15개의 워크플로우가 필요했던 Stripe 통합은 Stripe Node.js SDK를 가진 50줄의 코드가 될 수 있습니다. 외부 서비스가 Bubble 앱과 상호작용하는 완전한 목록을 만들고 한 번에 하나씩 대처합니다.
프로덕션을 위해 Supabase의 무료 티어를 사용할 수 있나요?
2026년의 Supabase 무료 티어는 500MB의 데이터베이스 저장소, 1GB의 파일 저장소 및 인증 50,000명의 월간 활성 사용자를 제공합니다. 매우 초기 단계의 제품의 경우 작동할 수 있습니다. 하지만 심각한 프로덕션 앱의 경우, 더 나은 성능, 일일 백업 및 활동 후 프로젝트 일시 중지가 없는 $25/월의 Pro 플랜을 원할 것입니다. 여전히 Bubble과 비교하면 절대적으로 저렴합니다.