•8 min read

Điện toán biên cho nhà phát triển web: Thực sự là gì và khi nào nên dùng

Điện toán biên cho nhà phát triển web: Thực sự là gì và khi nào nên dùng

Tôi đã triển khai Cloudflare Worker đầu tiên của mình vào năm 2023 vì tôi muốn chặn lưu lượng bot trước khi nó đến máy chủ gốc của tôi. Worker đã giúp tôi không phải viết lại logic ứng dụng — tôi chỉ cần thêm 15 dòng JavaScript và vấn đề đã được giải quyết.

Trải nghiệm đó đã thuyết phục tôi rằng điện toán biên (edge computing) rất đáng để tìm hiểu. Không phải cho mọi trường hợp sử dụng, nhưng đối với một lớp vấn đề cụ thể, đó là giải pháp sạch nhất hiện có.

Audio Briefing
0:00 / 0:00

"Edge" Thực Sự Có Nghĩa Là Gì

"Edge" đơn giản có nghĩa là chạy mã gần người dùng của bạn hơn. Thay vì tất cả các yêu cầu đi đến một máy chủ duy nhất ở us-east-1, các hàm biên chạy trong các trung tâm dữ liệu trải rộng khắp thế giới. Người dùng ở Tokyo sẽ được phục vụ từ một node ở Tokyo. Người dùng ở London từ London. Khoảng cách mà yêu cầu di chuyển sẽ ngắn hơn nhiều.

Edge không phải để thay thế cơ sở dữ liệu của bạn hoặc thực hiện các tính toán nặng. Nó là để xử lý các tác vụ cụ thể — xác thực, định tuyến, chuyển đổi đơn giản — ở nơi mà độ trễ đến người dùng là tối thiểu.

Các nhà cung cấp chính là Cloudflare Workers, Vercel Edge Functions và Deno Deploy. Tất cả đều có những hạn chế tương tự: giới hạn bộ nhớ nhỏ, không có hệ thống tệp, môi trường chạy V8 isolate thay vì Node.js đầy đủ, và thời gian khởi động nguội được đo bằng mili giây thay vì giây.

Advertisement

Các Trường Hợp Sử Dụng Thực Sự Có Ý Nghĩa

Sau hai năm triển khai các hàm biên trong môi trường sản xuất, đây là những trường hợp tôi sử dụng mà không chút do dự:

Xác thực mã thông báo JWT — Xác minh mã thông báo trước khi yêu cầu đến máy chủ gốc của bạn. Một phản hồi 401 từ biên chỉ mất 30ms. Việc xác thực tương tự tại máy chủ gốc của bạn sẽ thêm một vòng khứ hồi đầy đủ. Đối với các API có lưu lượng truy cập cao, điều này sẽ tích lũy.

Kiểm thử A/B và Cờ tính năng — Gán người dùng vào các biến thể trước khi kết xuất phía máy chủ. Không có hiện tượng nhấp nháy JavaScript, không có sự dịch chuyển bố cục bị trì hoãn. Biên đưa ra quyết định định tuyến và người dùng có được trải nghiệm nhất quán ngay từ byte đầu tiên.

Định tuyến theo vị trí địa lý — Chuyển hướng đến các điểm cuối khu vực, chặn truy cập theo quốc gia hoặc phục vụ nội dung được bản địa hóa mà không cần thay đổi mã ứng dụng. Các tiêu đề yêu cầu từ Cloudflare bao gồm dữ liệu địa lý miễn phí.

Phát hiện Bot — Đối sánh mẫu trên các tiêu đề yêu cầu và hành vi. Người dùng hợp lệ sẽ được thông qua ngay lập tức. Bot sẽ bị chặn trước khi chúng đến máy chủ của bạn.

Bộ nhớ đệm phản hồi với vô hiệu hóa thông minh — Lưu trữ phản hồi API tại biên với quyền kiểm soát chi tiết về những gì kích hoạt việc xóa bộ nhớ đệm. Nhanh hơn nhiều so với việc chờ máy chủ gốc của bạn phản hồi trên mỗi yêu cầu.

Ví dụ nhanh: Cloudflare Worker cho xác thực

export default {
  async fetch(request) {
    const url = new URL(request.url);
    
    // Only check protected routes
    if (!url.pathname.startsWith('/api/')) {
      return fetch(request);
    }

    // Validate at the edge before touching origin
    const token = request.headers.get('Authorization');
    if (!token || !isValidToken(token)) {
      return new Response(
        JSON.stringify({ error: 'Unauthorized' }),
        { status: 401, headers: { 'Content-Type': 'application/json' } }
      );
    }
    
    // Pass through to origin
    return fetch(request);
  }
};

function isValidToken(token) {
  // JWT signature check — stateless, no database needed
  const [, payload] = token.replace('Bearer ', '').split('.');
  const decoded = JSON.parse(atob(payload));
  return decoded.exp > Date.now() / 1000;
}

Điều này chạy trước bất kỳ yêu cầu gốc nào. Các yêu cầu chưa được xác thực sẽ không bao giờ chạm đến máy chủ của tôi.

Khi NÀO KHÔNG Nên Sử Dụng Edge

Tốt cho EdgeKhông tốt cho Edge
Xác thực yêu cầu
Kiểm tra mã thông báo không trạng thái
Tra cứu phiên cơ sở dữ liệu
Xác thực
Xác minh JWT
Luồng OAuth với chuyển hướng
Logic định tuyến
Vị trí địa lý, cờ A/B
Quy tắc nghiệp vụ phức tạp
Tính toán
Chuyển đổi đơn giản, thao tác tiêu đề
Xử lý hình ảnh, suy luận ML
Advertisement

Những Vấn Đề Tôi Gặp Phải

Không ai nói cho bạn biết những điều này cho đến khi bạn tự mình gặp phải:

Không có API Node.js — Các V8 isolate không cung cấp cho bạn môi trường chạy Node đầy đủ. fs, path, crypto (phiên bản Node), và hầu hết các module gốc sẽ không hoạt động. Hãy kiểm tra tài liệu của Cloudflare để biết những gì có sẵn.

Khả năng tương thích npm chỉ một phần — Hầu hết các gói npm đều giả định môi trường Node. Một số hoạt động. Nhiều gói thì không. Bạn sẽ phát hiện ra khi triển khai.

Kết nối cơ sở dữ liệu không duy trì — Bạn không thể giữ kết nối cơ sở dữ liệu luôn hoạt động giữa các yêu cầu. Mỗi lần gọi đều là "lạnh" từ góc độ kết nối. Hãy sử dụng các bộ điều phối kết nối (PlanetScale, Neon, Supabase) được xây dựng cho mục đích này.

Giới hạn bộ nhớ nghiêm ngặt — Thường là 128MB. Tôi đã từng thử sử dụng một module WASM có kích thước hợp lý trong một Worker và ngay lập tức gặp phải giới hạn.

Gỡ lỗi khó hơn — console.log đi đến một bảng điều khiển, không phải terminal của bạn. Phát triển cục bộ hoạt động nhưng không phải lúc nào cũng trung thực với hành vi sản xuất.

Sai Lầm Phổ Biến Nhất Mà Tôi Thấy

Mọi người cố gắng di chuyển toàn bộ ứng dụng của họ lên biên. Điều đó không hiệu quả. Cơ sở dữ liệu của bạn nằm ở một khu vực. Tính toán nặng của bạn cần bộ nhớ thực. Biên là một bộ lọc và bộ định tuyến, không phải là sự thay thế cho phần phụ trợ của bạn.

Edge là một lớp, không phải là một đích đến

Mô hình tư duy hiệu quả: máy chủ gốc của bạn xử lý mọi thứ như nó vẫn làm. Lớp biên chặn các yêu cầu cụ thể và xử lý chúng mà không cần một vòng khứ hồi đầy đủ. Hai điều này hoạt động cùng nhau — chúng không phải là lựa chọn thay thế.

Khuyến Nghị Của Tôi

Bắt đầu với một điểm cuối. Chọn một cái gì đó không trạng thái — một bộ giới hạn tốc độ, một kiểm tra xác thực, một bộ lọc bot. Triển khai nó lên Cloudflare Workers hoặc Vercel Edge, đo độ trễ trước/sau, và xem liệu nó có quan trọng đối với trường hợp sử dụng của bạn hay không.

Đối với hầu hết các ứng dụng web, những lợi ích lớn nhất từ điện toán biên đến từ ba trường hợp sử dụng đơn giản: xác thực, định tuyến A/B và lưu trữ phản hồi. Hãy bắt đầu từ đó trước khi bạn thử bất cứ điều gì lạ lùng.

Điện toán biên Hiệu suất
Bài viết liên quan

Bạn Cũng Có Thể Thích

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement