Checklist chọn Supabase alternative: 5 tiêu chí sống còn

22/05/2026 · P T P · Chung

Checklist chọn Supabase alternative: auth, database, storage, realtime, edge functions

Supabase mạnh vì gom nhiều mảnh backend thành một bộ: Postgres, Auth, Storage, Realtime, Edge Functions. Nhưng không dự án nào giống dự án nào. Có team cần giá rẻ hơn. Có team cần region cụ thể. Có team cần self-host. Có team cần vendor có SLA mạnh. Có team lại cần auth doanh nghiệp, audit log, hoặc realtime scale cao.

Chọn Supabase alternative không nên dựa vào “tool nào hot”. Nên dựa vào checklist rõ: auth có đủ an toàn không, database có đủ mạnh không, storage có kiểm soát quyền tốt không, realtime có chịu tải không, edge functions có chạy ổn không. Bài này đưa checklist thực tế để đánh giá các lựa chọn như Firebase, Appwrite, PocketBase, Nhost, Hasura, Convex, Neon + dịch vụ ghép, hoặc stack tự dựng.

1. Xác định nhu cầu trước khi so sánh công cụ

Trước khi mở bảng giá, cần trả lời vài câu hỏi nền:

Dự án dùng SQL hay document model?
Supabase dựa trên Postgres. Nếu app phụ thuộc join, transaction, constraint, SQL report, chọn alternative vẫn nên ưu tiên Postgres hoặc relational database.

Cần managed hay self-host?
Managed giảm vận hành. Self-host tăng kiểm soát nhưng tăng gánh nặng backup, update, monitoring, security.

Traffic hiện tại và 12 tháng tới?
Không chỉ MAU. Cần biết request/second, số kết nối realtime, dung lượng file, băng thông, số lần gọi function.

Yêu cầu compliance?
GDPR, HIPAA, SOC 2, data residency, audit log, encryption, DPA. Nếu B2B hoặc fintech, phần này quyết định sớm.

Mức lock-in chấp nhận được?
Nếu API, rule, function runtime quá đặc thù, chi phí rời đi cao. Với dự án dài hạn, ưu tiên chuẩn mở: SQL, S3-compatible storage, OAuth/OIDC, WebSocket chuẩn.

2. Auth: kiểm tra bảo mật, quyền, trải nghiệm đăng nhập

Auth là lớp dễ bị đánh giá thấp. Nhưng khi sai, hậu quả lớn: lộ dữ liệu, chiếm tài khoản, user churn.

Checklist auth cần có

Email/password, magic link, OAuth provider
Kiểm tra Google, GitHub, Apple, Microsoft, Facebook. Nếu app mobile, Apple Sign In thường bắt buộc.

MFA/2FA
TOTP, SMS, WebAuthn/passkey. Với app nội bộ hoặc tài chính, MFA gần như bắt buộc.

Session management
Access token, refresh token, rotation, revoke session, logout toàn thiết bị. Cần kiểm tra token hết hạn thế nào.

RBAC/ABAC
Role-based access control hoặc attribute-based access control. Ví dụ: admin, owner, member, viewer; tenant_id; org_id.

Multi-tenant support
Nếu app dạng SaaS B2B, auth phải hỗ trợ organization, team, invite, domain restriction, SSO.

SSO/SAML/OIDC
Enterprise customer thường cần SAML hoặc OIDC. Nếu alternative không có, sales B2B khó mở rộng.

User metadata và custom claims
Cần gắn role, plan, org, permission vào token hoặc profile. Nhưng không nên nhồi dữ liệu nhạy cảm vào JWT.

Security logs
Login history, failed attempts, password reset events, MFA changes. Cực hữu ích khi điều tra sự cố.

Câu hỏi đánh giá

– Có rate limit login không?
– Có chống brute force không?
– Có template email tùy biến không?
– Có hook sau signup/login không?
– Có xóa user đúng GDPR không?
– Có migration user từ hệ thống cũ không?

Dấu hiệu đỏ: auth thiếu MFA, không revoke refresh token được, không có audit log, hoặc quyền dữ liệu phải tự viết rải rác trong code.

3. Database: nền móng phải rõ, bền, dễ scale

Supabase hấp dẫn vì dùng Postgres. Khi chọn alternative, database là phần cần soi kỹ nhất.

Checklist database

Loại database
Postgres, MySQL, document, key-value, graph. Không chọn chỉ vì “dễ dùng”; chọn vì phù hợp data model.

Transaction và consistency
App có thanh toán, booking, inventory, order? Cần transaction mạnh. Eventual consistency có thể gây lỗi nghiệp vụ.

Schema migration
Có CLI migration không? Có rollback không? Có chạy migration qua CI/CD không?

Indexing và performance
Có xem query plan không? Có index tùy chỉnh không? Có full-text search không? Có vector search không?

Backup và point-in-time recovery
Backup hằng ngày chưa đủ. Cần biết RPO/RTO, retention, restore test, PITR.

Branching/staging database
Neon mạnh ở database branching. Nếu team deploy liên tục, feature này tiết kiệm nhiều lỗi.

Connection pooling
Serverless dễ bùng connection. Cần pooler, giới hạn connection, timeout rõ.

Region và latency
User ở Việt Nam, EU, US? Database region ảnh hưởng mạnh đến API latency.

Row-level security hoặc tương đương
Supabase có RLS của Postgres. Alternative cần cơ chế tương đương để tránh check quyền thủ công trong mọi API.

Câu hỏi đánh giá

– Có export dữ liệu dễ không?
– Có access SQL trực tiếp không?
– Có vendor lock-in ở query layer không?
– Có giới hạn row, storage, connection, CPU không?
– Có read replica không?
– Có hỗ trợ migration từ Supabase/Postgres không?

Dấu hiệu đỏ: không có backup rõ, không có migration chuẩn, không xem được query chậm, không có cách giới hạn quyền theo row.

4. Storage: không chỉ upload file

Storage thường bắt đầu bằng avatar, sau đó thành invoice, video, private document, export CSV, AI assets. Cần thiết kế quyền ngay từ đầu.

Checklist storage

Public/private bucket
File public như ảnh blog khác file private như hợp đồng. Cần phân tách bucket và policy.

Signed URL
Cần URL tạm thời cho file private. Kiểm tra thời hạn, revoke, giới hạn download.

Upload lớn và resumable upload
Video, tài liệu nặng cần multipart hoặc resumable upload. Mobile network kém càng cần.

Image transformation
Resize, crop, format WebP/AVIF. Nếu không có, cần CDN hoặc service riêng.

CDN integration
Storage không có CDN sẽ chậm và tốn băng thông. Kiểm tra cache-control, purge cache, custom domain.

S3 compatibility
Nếu alternative hỗ trợ S3 API, khả năng rời đi tốt hơn. Cloudflare R2, AWS S3, MinIO là lựa chọn phổ biến.

Access policy gắn với auth
User chỉ đọc file của chính họ, team đọc file của organization. Policy phải nhất quán với database.

Virus scanning và content moderation
Nếu user upload file công khai, cần scan malware, kiểm tra MIME, giới hạn size.

Câu hỏi đánh giá

– Có giới hạn file size không?
– Có tính phí egress cao không?
– Có lifecycle policy không?
– Có versioning không?
– Có mã hóa at rest không?
– Có log truy cập file không?

Dấu hiệu đỏ: file private chỉ dựa vào URL khó đoán, không có signed URL, không tích hợp quyền với user/org.

5. Realtime: đo đúng loại realtime cần dùng

Realtime không chỉ là “có WebSocket”. Chat, dashboard, presence, multiplayer, notification, live collaboration có nhu cầu khác nhau.

Checklist realtime

Data change subscription
Lắng nghe thay đổi row/table. Hợp với dashboard, feed, admin panel.

Pub/Sub channel
Gửi event tùy ý giữa client. Hợp với chat, notification, room events.

Presence
Biết ai đang online, typing, cursor, active room.

Ordering và delivery guarantee
Có bảo đảm thứ tự event không? At-most-once hay at-least-once? Có retry không?

Scale connection
1.000, 10.000, 100.000 WebSocket connection khác nhau hoàn toàn. Xem quota và benchmark thật.

Permission realtime
Client không được subscribe room không thuộc về mình. Cần auth ở channel level.

Offline và reconnect
Mobile mất mạng thường xuyên. SDK cần tự reconnect, resume, backoff.

Cost model
Tính theo connection, message, bandwidth hay compute? Realtime có thể thành chi phí ẩn.

Câu hỏi đánh giá

– Có message history không?
– Có presence TTL không?
– Có rate limit channel không?
– Có hỗ trợ mobile tốt không?
– Có fallback SSE/polling không?
– Có monitor connection và dropped message không?

Dấu hiệu đỏ: realtime dùng được demo nhưng không có quota rõ, không có permission theo channel, không có thông tin delivery guarantee.

6. Edge Functions: nơi business logic sống gần user

Edge Functions giúp chạy logic server-side: webhook, payment, notification, cron, API proxy, image processing nhẹ. Alternative cần được đánh giá theo runtime, deploy, observability.

Checklist edge functions

Runtime
Deno, Node.js, Bun, V8 isolate, container. Kiểm tra package compatibility. Nhiều thư viện Node không chạy tốt trên isolate.

Cold start
Edge thường nhanh, nhưng không phải lúc nào. Webhook thanh toán cần ổn định.

Secret management
API key, database URL, payment secret phải nằm trong secret store, không trong code.

Local development
Có chạy local được không? Có mock env, hot reload, test không?

Deployment flow
CLI, GitHub Actions, preview deploy, rollback. Team cần quy trình an toàn.

Cron/scheduled jobs
Có scheduler không? Nếu không, cần dùng GitHub Actions, Cloudflare Cron, hoặc queue riêng.

Background jobs và queue
Edge function không hợp job dài. Nếu cần email batch, AI processing, video, nên có queue.

Logs, metrics, tracing
Xem error, latency, memory, request ID. Không có observability thì debug đau.

Timeout và memory limit
Kiểm tra giới hạn cụ thể. Payment webhook, report generation, file processing dễ đụng limit.

Câu hỏi đánh giá

– Có custom domain cho functions không?
– Có region chọn được không?
– Có VPC/private networking không?
– Có idempotency helper không?
– Có retry webhook không?
– Có tách staging/production secret không?

Dấu hiệu đỏ: không có log tốt, không rollback nhanh, runtime kén package, timeout quá ngắn so với nghiệp vụ.

7. Giá, giới hạn, vận hành: đọc phần nhỏ nhất trong bảng giá

Alternative rẻ lúc đầu có thể đắt khi scale. Cần đọc kỹ quota.

Checklist chi phí

MAU auth
Database storage
Database compute
Connection limit
Bandwidth/egress
Storage operations
Realtime messages
Function invocations
Function CPU time
Log retention
Backup/PITR
Team seats
Support/SLA

Đừng chỉ tính “tháng này”. Hãy mô phỏng 3 kịch bản: hiện tại, gấp 10, gấp 100. Với mỗi kịch bản, tính chi phí và điểm nghẽn đầu tiên.

8. Khả năng migrate: đường ra phải có trước khi vào

Một backend platform tốt vẫn có thể không còn hợp sau 2 năm. Vì vậy cần kế hoạch thoát.

Checklist chống lock-in

– Dữ liệu export định dạng chuẩn: SQL dump, CSV, JSON.
– Auth export user và hash password nếu được.
– Storage hỗ trợ sync sang S3-compatible.
– Business logic không phụ thuộc SDK độc quyền quá sâu.
– API layer có test contract.
– Migration script được version control.
– Infrastructure config ghi thành code.

Nếu chọn tool đóng, hãy chấp nhận lock-in có chủ ý. Nếu không chấp nhận, dùng chuẩn mở nhiều hơn.

Kết luận: chọn alternative theo rủi ro lớn nhất

Không có Supabase alternative tốt nhất cho mọi dự án. Có lựa chọn tốt nhất cho ràng buộc cụ thể.

Nếu app cần SQL mạnh, ít lock-in, ưu tiên Postgres managed như Neon, Railway, Render, Fly.io, rồi ghép auth/storage/functions phù hợp. Nếu app cần mobile backend nhanh, Firebase vẫn rất mạnh. Nếu cần self-host đơn giản, Appwrite hoặc PocketBase đáng xem. Nếu cần GraphQL/permission layer, Hasura hoặc Nhost hợp hơn. Nếu cần developer experience realtime-first, Convex là hướng khác đáng cân nhắc.

Checklist cuối:

Auth đủ an toàn?
Database có transaction, backup, migration rõ?
Storage có private file, signed URL, CDN?
Realtime có permission, scale, delivery model?
Edge functions có runtime hợp, log tốt, deploy an toàn?
Giá scale có chịu được?
Đường migrate có tồn tại?

Chọn backend giống chọn móng nhà. Demo đẹp chưa đủ. Móng phải chịu tải, sửa được, rời được, và không làm team mất ngủ khi sản phẩm tăng trưởng.

Chia sẻ:

Bài viết tương tự

Bình luận

Chưa có bình luận. Hãy là người đầu tiên!