Supabase Edge Functions: Hướng dẫn cơ bản
Trong thế giới phát triển ứng dụng web hiện đại, việc xây dựng backend mạnh mẽ nhưng vẫn đơn giản là một thách thức không nhỏ. Supabase, với tư cách là một giải pháp mã nguồn mở thay thế Firebase, đã mang đến một loạt công cụ mạnh mẽ, trong đó Edge Functions là một trong những tính năng nổi bật nhất. Edge Functions cho phép bạn chạy code trên các server đặt gần người dùng nhất, giúp giảm độ trễ và tăng hiệu năng ứng dụng. Bài viết này sẽ giúp bạn hiểu rõ hơn về Edge Functions và cách bắt đầu sử dụng chúng.
Edge Functions là gì?
Edge Functions là các hàm serverless được triển khai trên mạng lưới server phân tán toàn cầu của Supabase. Khác với các hàm backend truyền thống thường chạy trên một server cố định, Edge Functions được thực thi ở vị trí địa lý gần người dùng nhất. Điều này giúp giảm độ trễ mạng và cải thiện trải nghiệm người dùng, đặc biệt với các ứng dụng có người dùng toàn cầu.
Edge Functions được xây dựng trên nền tảng Deno, một runtime JavaScript/TypeScript hiện đại, an toàn và nhanh chóng. Điều này có nghĩa là bạn có thể viết code bằng TypeScript, hưởng lợi từ tính năng type checking và module system mạnh mẽ của Deno.
Tại sao nên sử dụng Edge Functions?
Có nhiều lý do để bạn cân nhắc sử dụng Edge Functions trong dự án của mình:
- Hiệu năng cao: Vì code được chạy gần người dùng, thời gian phản hồi sẽ nhanh hơn đáng kể so với server truyền thống. - Khả năng mở rộng tự động: Supabase tự động scale hàm của bạn dựa trên nhu cầu, bạn không cần lo lắng về việc quản lý server. - Tích hợp chặt chẽ với Supabase: Edge Functions có thể dễ dàng tương tác với Database, Authentication, Storage và Realtime của Supabase chỉ qua vài dòng code. - Bảo mật tốt: Bạn có thể kiểm soát ai được phép gọi hàm và hạn chế truy cập vào dữ liệu nhạy cảm. - Chi phí hợp lý: Bạn chỉ trả tiền cho compute time thực tế mà hàm sử dụng, không cần trả phí cho server idle.
Cách bắt đầu với Edge Functions
Bước 1: Cài đặt CLI của Supabase
Để bắt đầu, bạn cần cài đặt Supabase CLI trên máy local. Mở terminal và chạy lệnh:
npm install -g supabase
Hoặc nếu bạn dùng Yarn:
yarn global add supabase
Bước 2: Khởi tạo dự án
Di chuyển đến thư mục dự án và khởi tạo Supabase:
supabase init
Lệnh này sẽ tạo ra cấu trúc thư mục với các file cấu hình cần thiết.
Bước 3: Tạo Edge Function
Để tạo một Edge Function mới, sử dụng lệnh:
supabase functions new hello-world
Lệnh này sẽ tạo một thư mục functions/hello-world với file mod.ts — đây là nơi bạn viết code cho hàm.
Bước 4: Viết code cho hàm
Mở file mod.ts và viết code. Dưới đây là một ví dụ đơn giản:
Quảng cáo
300x250 In-Content Advertisement
import { serve } from 'https://deno.land/[email protected]/http/server.ts';
console.log('Hello from Deno!', Deno.version);
serve(async (req) => {
const { route, user, headers } = req;
return new Response(JSON.stringify({
message: 'Hello, world!',
route,
headers
}));
});
Hàm này sẽ trả về một JSON với thông điệp chào mừng và một số thông tin về request.
Bước 5: Chạy local
Để test hàm trên máy local, chạy:
supabase functions serve
Bạn có thể gọi hàm qua URL như http://localhost:54321/functions/v1/hello-world.
Bước 6: Deploy lên Supabase
Khi đã sẵn sàng, deploy hàm lên Supabase:
supabase functions deploy hello-world
Sau khi deploy thành công, bạn sẽ nhận được URL public để gọi hàm từ ứng dụng của mình.
Một số lưu ý quan trọng
- Giới hạn thời gian: Mỗi Edge Function có timeout khoảng 10-15 giây. Nếu hàm chạy quá lâu, nó sẽ bị hủy.
- Giới hạn payload: Kích thước request và response bị giới hạn, thường khoảng 1MB.
- Môi trường: Bạn có thể thiết lập biến môi trường cho hàm qua Supabase Dashboard hoặc CLI.
- Debugging: Sử dụng console.log để in log, bạn có thể xem log qua Supabase Dashboard hoặc CLI.
Kết luận
Edge Functions của Supabase là một công cụ mạnh mẽ giúp bạn xây dựng backend nhanh chóng, an toàn và hiệu năng cao. Với khả năng chạy code gần người dùng, tích hợp liền mạch với các dịch vụ Supabase, và hỗ trợ TypeScript hiện đại, Edge Functions là lựa chọn tuyệt vời cho các dự án từ nhỏ đến lớn.
Bắt đầu với Edge Functions không khó — chỉ cần vài lệnh CLI và một chút code, bạn đã có thể triển khai logic backend của mình trên toàn cầu. Hãy thử nghiệm và khám phá tiềm năng của Edge Functions trong dự án tiếp theo của bạn!