Facebook PixelSupabase: Giải pháp Backend-as-a-Service mã nguồn mở | 200Lab Blog

Supabase: Giải pháp Backend-as-a-Service mã nguồn mở

25 Mar, 2025

Supabase là một nền tảng Backend as a Service mã nguồn mở, được tạo ra như một giải pháp thay thế cho Firebase

Supabase: Giải pháp Backend-as-a-Service mã nguồn mở

Mục Lục

Khi phát triển ứng dụng, các developer thường phải đầu tư rất nhiều thời gian và công sức để xây dựng cũng như quản lý hệ thống backend. Nhằm đơn giản hóa quy trình này, Supabase - một nền tảng mã nguồn mở - ra đời, giúp bạn tối ưu hóa khâu phát triển backend và tập trung hơn vào việc phát triển giao diện người dùng.

1. Supabase là gì?

Supabase là một nền tảng Backend as a Service (BaaS) mã nguồn mở, được tạo ra như một giải pháp thay thế cho Firebase nhưng với một triết lý hoàn toàn khác: tất cả đều dựa trên công nghệ mã nguồn mở và các tiêu chuẩn mở.

Điểm nổi bật của Supabase so với các nền tảng BaaS khác chính là việc xây dựng dựa trên PostgreSQL – một hệ quản trị cơ sở dữ liệu quan hệ ổn định và có cộng đồng hỗ trợ rộng lớn.

Để hiểu rõ hơn về Supabase, hãy cùng xem xét một tình huống phát triển ứng dụng quen thuộc:

Cách truyền thống: Giả sử bạn cần xây dựng một ứng dụng quản lý dự án đơn giản. Đầu tiên, bạn phải thiết lập một máy chủ backend (có thể là Node.js, Django, Ruby on Rails...). Sau đó, bạn cần:

  • Thiết kế và tạo cơ sở dữ liệu
  • Viết API endpoints để thực hiện các thao tác CRUD (tạo, đọc, cập nhật, xóa) cho dự án và nhiệm vụ
  • Xây dựng hệ thống xác thực và phân quyền người dùng
  • Thiết lập lưu trữ cho các tệp đính kèm
  • Triển khai WebSockets nếu ứng dụng cần tính năng realtime
  • Quản lý việc triển khai và mở rộng cơ sở hạ tầng

Với Supabase: Bạn chỉ cần tạo một dự án trên Supabase và định nghĩa các bảng (projects, tasks, users) thông qua giao diện quản trị trực quan hoặc bằng SQL. Sau đó:

  • Supabase tự động tạo API RESTful cho tất cả các bảng
  • Bạn có thể thiết lập quyền truy cập bằng Row Level Security
  • Kích hoạt hệ thống xác thực chỉ với vài cú nhấp chuột
  • Sử dụng Storage để lưu trữ tệp đính kèm
  • Kích hoạt tính năng Realtime để cập nhật dữ liệu theo thời gian thực

Supabase không chỉ giúp bạn tiết kiệm đáng kể thời gian ban đầu mà còn giảm thiểu công sức bảo trì lâu dài, vì bạn không cần phải quản lý cơ sở hạ tầng backend phức tạp mà lại còn có thể tự self host được.

2. Supabase thay thế những công việc gì?

2.1 Quản lý Cơ sở dữ liệu riêng

Thay vì phải thiết lập, cấu hình và quản lý cơ sở dữ liệu riêng, Supabase cung cấp cơ sở dữ liệu PostgreSQL đầy đủ tính năng với giao diện quản trị trực quan. Bạn có thể:

  • Tạo bảng, views, và quan hệ
  • Thiết lập indexes để tối ưu hiệu suất
  • Chạy migrations và seeds
  • Thực hiện các truy vấn SQL trực tiếp

2.2 Phát triển API

Supabase tự động tạo REST API và GraphQL từ schema cơ sở dữ liệu của bạn. Điều này loại bỏ công việc :

  • Viết API endpoints
  • Logic Validation
  • Query parameters
  • Pagination
  • Filtering và sorting

2.3 Thiết lập Hệ thống xác thực và phân quyền

Thay vì phải xây dựng hệ thống xác thực phức tạp, Supabase Auth cung cấp:

  • Đăng nhập với email/mật khẩu
  • Xác thực bằng OAuth (Google, Facebook, GitHub, v.v.)
  • Magic links (đăng nhập không cần mật khẩu)
  • Row Level Security để kiểm soát quyền truy cập ở cấp độ dữ liệu

2.4 Lưu trữ file

Supabase Storage giúp bạn lưu trữ và phân phối file mà không cần thiết lập hệ thống lưu trữ riêng:

  • Upload và download file
  • Quản lý quyền truy cập file
  • Tạo URL công khai hoặc có thời hạn
  • Tích hợp với Auth để bảo vệ file

3 Free Tier của Supabase

Free Tier của Supabase rất lý tưởng để bạn vừa học vừa làm mà không phải tốn chi phí, việc bạn cần làm là đăng kí tài khoản trên https://supabase.com. Free Tier này đặc biệt phù hợp cho:

  • Dự án cá nhân hoặc side projects nhỏ
  • Prototype hoặc MVP để thử nghiệm ý tưởng mới
  • Học tập, thực hành khi mới bắt đầu tìm hiểu Supabase
  • Dự án mã nguồn mở với lượng người dùng vừa phải
  • Hackathons hoặc các dự án thử nghiệm nhanh

Free Tier của Supabase bao gồm:

  • 2 dự án miễn phí cho mỗi tài khoản
  • Thời gian hoạt động không giới hạn (không tự động ngừng hoạt động sau thời gian nhất định)
  • Hỗ trợ cộng đồng thông qua Discord và GitHub

Cơ sở dữ liệu

  • PostgreSQL Database: 500MB dung lượng lưu trữ
  • Database branches: 2 branches
  • Thời gian backup: 7 ngày
  • Tạm dừng tự động: Sau 1 tuần không hoạt động (tự động tiếp tục khi có request)

Auth, Storage và Realtime

  • Auth: 50,000 MAU (Monthly Active Users)
  • Storage: 1GB dung lượng lưu trữ
  • Băng thông Storage: 2GB
  • Kênh Realtime: 20 kênh đồng thời
  • Số lượng message Realtime: 2 triệu/tháng

Edge Functions và API

  • Edge Functions: 500,000 lượt gọi/tháng
  • Băng thông Database: 2GB vào, 4GB ra
  • Số lượng row: 100 triệu rows

4. Hướng dẫn cài đặt Supabase (Self Host)

Dưới đây là hướng dẫn đơn giản để cài đặt và chạy Supabase trên máy tính local của bạn bằng Docker Compose.

  • Bước 1: Tải mã nguồn Supabase
Bash
# Clone repository của Supabase
git clone --depth 1 https://github.com/supabase/supabase.git

# Di chuyển đến thư mục chứa cấu hình Docker
cd supabase/docker
  • Bước 2: Cấu hình môi trường
Bash
# Sao chép file môi trường mẫu
cp .env.example .env

Bạn có thể giữ nguyên các giá trị mặc định trong file .env cho môi trường development. Tuy nhiên, nếu muốn tùy chỉnh, bạn có thể mở file này và chỉnh sửa các giá trị nhưPOSTGRES_PASSWORD hoặc JWT_SECRET.

  • Bước 3: Khởi động Supabase
Bash
# Khởi động tất cả các dịch vụ của Supabase
docker-compose up -d

Lệnh này sẽ tải về và khởi động tất cả các dịch vụ cần thiết của Supabase, bao gồm PostgreSQL, Kong API Gateway, GoTrue (Auth), Storage, và các dịch vụ khác.

  • Bước 4:  Truy cập Supabase Studio

Mở trình duyệt web và truy cập: http://localhost:8000. Bạn sẽ thấy giao diện Supabase Studio, từ đây bạn có thể:

    • Quản lý database
    • Cấu hình auth
    • Quản lý storage
    • Chạy SQL queries
    • Và nhiều tính năng khác
  • Bước 5: Sử dụng Supabase trong ứng dụng của bạn
Javascript
import { createClient } from '@supabase/supabase-js'

// Lấy các thông tin này từ Supabase Studio (Settings > API)
const supabaseUrl = 'http://localhost:8000'
const supabaseKey = 'eyJh...' // Anon key từ API settings

const supabase = createClient(supabaseUrl, supabaseKey)

// Giờ bạn có thể sử dụng client này để tương tác với Supabase

5. Hướng dẫn tạo và sử dụng API tự động từ Supabase

Sau khi bạn đã cài đặt Supabase thành công bằng Docker Compose, hãy theo các bước dưới đây để tạo một API demo đơn giản. Supabase tự động tạo RESTful API cho các bảng trong cơ sở dữ liệu, giúp bạn nhanh chóng xây dựng ứng dụng mà không cần viết backend từ đầu.

5.1 Tạo bảng dữ liệu demo

Đầu tiên, chúng ta sẽ tạo một bảng dữ liệu đơn giản để API hoạt động trên đó:

  1. Truy cập Supabase Studio
    • Mở trình duyệt web và truy cập http://localhost:8000
  2. Tạo bảng mới thông qua giao diện
    • Chọn tab "Table Editor" từ menu bên trái
    • Nhấn nút "Create a new table"
    • Đặt tên bảng là todos
    • Thêm các cột sau:
      • id (kiểu uuid, primary key, mặc định gen_random_uuid())
      • task (kiểu text, NOT NULL)
      • completed (kiểu boolean, mặc định false)
      • created_at (kiểu timestamp with time zone, mặc định now())
    • Bật Row Level Security (RLS) để kiểm soát truy cập
    • Nhấn "Save" để tạo bảng
  3. Tạo dữ liệu mẫu
    • Sau khi bảng được tạo, chọn Insert Row để thêm vài dòng dữ liệu mẫu
    • Thêm 2-3 công việc khác nhau vào bảng
    • Bạn chỉ cần nhập trường task, các trường khác sẽ được điền tự động

5.2 Thiết lập chính sách bảo mật (Row Level Security)

Để cho phép truy cập API công khai, chúng ta cần thiết lập chính sách bảo mật:

  1. Truy cập cài đặt bảo mật của bảng
    • Chọn tab Authentication từ menu bên trái
    • Chọn Policies
    • Chọn bảng todos từ danh sách
  2. Tạo chính sách cho phép truy cập công khai
    • Chọn Add Policy hoặc Create New Policy
    • Chọn template Allow read access to everyone
    • Đặt tên chính sách là Allow public read access
    • Chọn Using custom check và để mã là true (cho phép tất cả)
    • Chọn quyền SELECT (đọc)
    • Click Save policy
  3. Thêm chính sách cho các hành động khác (tùy chọn): Tạo thêm chính sách cho INSERT, UPDATE, DELETE nếu bạn muốn cho phép thêm/sửa/xóa dữ liệu.

5.3 Test API

Supabase tự động tạo các API endpoints cho bảng của bạn.

  1. Lấy API URL và Key
    • Chọn tab API từ menu bên trái (hoặc Settings > API)
    • Bạn sẽ thấy thông tin:
      • URL: http://localhost:8000 (cho local)
      • anon key (dùng cho truy cập public)
  2. Xem các API endpoints được tạo tự động
    • Ở tab API, chọn todos từ danh sách bảng
    • Bạn sẽ thấy code ví dụ để tương tác với API bằng nhiều ngôn ngữ khác nhau

6. Kết luận

Với việc kết hợp sức mạnh của PostgreSQL và sự đơn giản của Firebase, Supabase đang định hình lại cách chúng ta xây dựng ứng dụng web và di động trong tương lai.

Bài viết liên quan

Đăng ký nhận thông báo

Đừng bỏ lỡ những bài viết thú vị từ 200Lab