PocketBase có thay Supabase được không: test thực tế cho SaaS nhỏ
Một SaaS nhỏ thường không chết vì thiếu Kubernetes, không chết vì thiếu microservices. Nó chết vì build quá lâu, chi phí phình sớm, vận hành rối, và founder không còn sức nói chuyện với khách.
Supabase hấp dẫn vì cho cảm giác “backend xịn có sẵn”: PostgreSQL, Auth, Storage, Realtime, Edge Functions. Nhưng với SaaS nhỏ, câu hỏi đáng hỏi hơn: có cần nhiều thế không?
PocketBase đi hướng ngược lại: một file binary, SQLite, admin UI, auth, realtime, API tự sinh. Deploy cực nhẹ. Nghe như món quà cho indie hacker. Nhưng có thay Supabase được không?
Bài này dựa trên góc nhìn test thực tế cho SaaS nhỏ: app có user đăng ký, subscription, dashboard, CRUD dữ liệu, vài event realtime nhẹ, file upload nhỏ, admin quản trị.
Tóm tắt nhanh
PocketBase thay Supabase được nếu SaaS của bạn:
– Có traffic nhỏ đến vừa.
– Dữ liệu quan hệ không quá phức tạp.
– Một team nhỏ cần ship nhanh.
– Muốn tự host rẻ.
– Không cần hệ sinh thái PostgreSQL lớn.
PocketBase không nên thay Supabase nếu bạn cần:
– PostgreSQL chuẩn, query mạnh.
– Scale đọc/ghi lớn.
– Row Level Security phức tạp.
– Analytics nặng, reporting phức tạp.
– Multi-region, HA nghiêm túc.
– Tích hợp AI/vector/search chuyên sâu.
Nói ngắn: PocketBase cực tốt cho SaaS nhỏ gọn. Supabase tốt hơn cho SaaS muốn lớn dần mà vẫn cần nền tảng mạnh.
PocketBase là gì, mạnh ở đâu?
PocketBase là backend mã nguồn mở viết bằng Go. Nó đóng gói nhiều thứ vào một binary:
– SQLite database
– Auth
– Admin dashboard
– REST API tự sinh
– Realtime subscriptions
– File storage
– Hooks bằng Go hoặc JavaScript
– Migrations
– Backup/restore
Điểm mạnh lớn nhất: đơn giản đến mức khó tin. Bạn tải binary, chạy lệnh, có backend:
./pocketbase serveKhông cần Docker nếu không muốn. Không cần Postgres riêng. Không cần Redis. Không cần 5 service phụ.
Với SaaS nhỏ, giảm số thứ phải vận hành là lợi ích lớn. Mỗi service thêm vào là thêm log, config, backup, bảo mật, cập nhật, chi phí.
Supabase là gì, mạnh ở đâu?
Supabase là backend-as-a-service dựa trên PostgreSQL. Nó gồm:
– PostgreSQL
– Auth
– Storage
– Realtime
– Edge Functions
– Row Level Security
– Dashboard
– API tự sinh
– Extensions PostgreSQL
– Vector, cron, queue, branching tùy gói/cấu hình
Supabase mạnh vì đứng trên PostgreSQL. Nếu app cần query phức tạp, transaction chắc, index phong phú, report, join nhiều bảng, extension, Supabase có nền vững hơn.
Supabase cũng hợp team muốn dùng managed service. Không muốn tự cập nhật server, backup, monitoring cơ bản. Trả tiền, nhận hạ tầng tương đối sẵn.
Test thực tế: SaaS nhỏ cần gì?
Giả định SaaS nhỏ:
– 1.000–10.000 user đăng ký.
– 100–1.000 user active mỗi ngày.
– Dữ liệu chính: users, workspaces, projects, tasks, invoices, subscriptions.
– Auth email/password, OAuth có thể cần.
– File upload: avatar, PDF, ảnh nhỏ.
– Realtime: thông báo hoặc cập nhật bảng nhẹ.
– Admin cần xem user, sửa plan, khóa tài khoản.
– Billing dùng Stripe/Lemon Squeezy.
– Deploy trên VPS $5–20/tháng hoặc managed backend.
Với bài toán này, backend cần làm tốt 6 việc: auth, data model, API, quyền truy cập, file, vận hành.
Auth: PocketBase đủ dùng, Supabase mạnh hơn
PocketBase có auth collection rất tiện. Bạn tạo collection users, bật auth, có sẵn register, login, token, password reset, email verify. SDK dùng dễ.
Với SaaS nhỏ, vậy là đủ cho:
– Đăng ký email/password.
– Đăng nhập.
– Phân quyền theo user.
– Admin quản lý user.
– Token API.
Supabase Auth mạnh hơn ở phần tích hợp OAuth, magic link, providers, session handling, MFA tùy nhu cầu. Nếu app cần Google login, GitHub login, enterprise SSO sau này, Supabase có lợi thế.
Kết luận auth: PocketBase đủ cho SaaS nhỏ cơ bản. Supabase tốt hơn nếu auth là phần phức tạp hoặc có kế hoạch B2B enterprise.
Database: SQLite nhanh, PostgreSQL bền đường dài
PocketBase dùng SQLite. Nhiều người nghe SQLite là nghĩ “đồ chơi”. Sai. SQLite rất nhanh, rất ổn cho nhiều app production nhỏ/vừa, đặc biệt workload đọc nhiều, ghi vừa phải.
Với SaaS nhỏ, SQLite chạy tốt cho:
– CRUD dashboard.
– Settings.
– Project/task data.
– Logs nhỏ.
– Billing records.
– User metadata.
Nhưng SQLite có giới hạn tự nhiên:
– Ghi đồng thời không mạnh như PostgreSQL.
– Query phức tạp kém tiện hơn.
– Tooling phân tích dữ liệu ít hơn.
– Scale ngang khó hơn.
– Không hợp workload ghi lớn.
Supabase dùng PostgreSQL. Đây là lựa chọn an toàn hơn nếu dữ liệu là lõi sản phẩm. Bạn có join tốt, transaction mạnh, index phong phú, JSONB, full-text search, extensions, backup/replication rõ hơn.
Kết luận database: PocketBase thắng ở đơn giản. Supabase thắng ở sức mạnh và đường dài.
API và tốc độ phát triển: PocketBase rất nhanh
PocketBase tạo REST API tự động từ collections. Bạn tạo schema trong admin UI, app frontend gọi được ngay. SDK JavaScript gọn, dễ học.
Ví dụ flow build MVP:
1. Tạo collection projects.
2. Thêm field name, owner, status.
3. Set rule: user chỉ xem project của mình.
4. Frontend gọi list/create/update.
5. Xong backend CRUD.
Không cần viết controller. Không cần Prisma. Không cần migration phức tạp lúc đầu.
Supabase cũng có API tự sinh qua PostgREST. Nhưng để dùng đúng, bạn thường cần hiểu PostgreSQL, RLS, policies. Mạnh nhưng ngưỡng học cao hơn.
Kết luận tốc độ: PocketBase cho cảm giác ship nhanh hơn với solo founder. Supabase mạnh nhưng cần kỷ luật DB tốt hơn.
Phân quyền: PocketBase dễ, Supabase chặt hơn
PocketBase dùng API rules theo collection, ví dụ:
@request.auth.id = user.id