Quay lại danh sách
Tin tức công nghệ

Xây dựng Hệ thống Serverless Functions trên VPS Cá nhân với OpenFaaS: Giải pháp Tối ưu Chi phí và Hiệu năng cho Doanh nghiệp

27 tháng 5, 2026

1. Giới thiệu xu hướng Serverless và Thách thức Cloud Lock-in

Trong kỷ nguyên chuyển đổi số, Serverless (Kiến trúc không máy chủ) đã trở thành một mô hình kiến trúc phần mềm mang tính đột phá. Thay vì phải quản lý, cấu hình và duy trì máy chủ 24/7, các nhà phát triển chỉ cần tập trung vào việc viết mã nguồn cho các hàm xử lý logic đơn lẻ (gọi là Functions-as-a-Service - FaaS). Hệ thống sẽ tự động kích hoạt, thực thi và co giãn (scaling) dựa trên nhu cầu thực tế.

Tuy nhiên, khi triển khai Serverless trên các nền tảng đám mây lớn như AWS Lambda, Google Cloud Functions hay Azure Functions, doanh nghiệp thường phải đối mặt với hai bài toán lớn:

  • Chi phí khó kiểm soát: Khi số lượng request tăng đột biến hoặc các hàm chạy tốn nhiều thời gian, hóa đơn hàng tháng có thể tăng trưởng phi mã vượt quá ngân sách dự kiến.
  • Ràng buộc nhà cung cấp (Vendor Lock-in): Mã nguồn và cách thức cấu hình bị phụ thuộc chặt chẽ vào hệ sinh thái của một nhà cung cấp duy nhất, khiến việc dịch chuyển hệ thống sau này trở nên cực kỳ phức tạp và tốn kém.

Chính vì vậy, xu hướng xây dựng nền tảng Serverless mã nguồn mở trên hạ tầng VPS (Virtual Private Server) riêng đang trở thành một giải pháp thay thế hoàn hảo, giúp doanh nghiệp vừa tận dụng được sức mạnh của FaaS, vừa làm chủ hoàn toàn dữ liệu và chi phí cố định.

2. OpenFaaS là gì? Tại sao nên chọn OpenFaaS cho VPS?

OpenFaaS (Functions as a Service) là một framework mã nguồn mở nổi tiếng, cho phép bạn biến bất kỳ hạ tầng nào có hỗ trợ Docker hoặc Kubernetes thành một trung tâm điều hành Serverless mã nguồn mở. Với khẩu khẩu hiệu "Serverless Functions Made Simple", OpenFaaS đơn giản hóa quy trình đóng gói và triển khai mã nguồn.

Ưu điểm vượt trội của OpenFaaS khi triển khai trên VPS:

  • Hỗ trợ đa ngôn ngữ tuyệt đối: Bất kỳ ngôn ngữ lập trình nào có thể đóng gói vào Docker image (Python, Node.js, Go, Java, PHP, v.v.) đều có thể chạy trên OpenFaaS.
  • Tự chủ chi phí: Bạn chỉ trả tiền thuê VPS cố định hàng tháng cho nhà cung cấp (như DigitalOcean, Linode, Vultr hoặc các nhà cung cấp Việt Nam), không lo ngại chi phí phát sinh theo số lượng request.
  • Khả năng co giãn tự động (Auto-scaling): OpenFaaS tích hợp sẵn Prometheus để giám sát lưu lượng và tự động scale-up (tăng số lượng container) khi tải cao, hoặc scale-down về mức tối thiểu khi hệ thống nhàn rỗi.
  • Cộng đồng mạnh mẽ và dễ tiếp cận: Giao diện Web UI thân thiện cùng công cụ CLI mạnh mẽ giúp quản trị viên dễ dàng thao tác mà không cần chứng chỉ chuyên sâu về Cloud.
Lưu ý chiến lược: Việc kết hợp VPS hiệu năng cao với OpenFaaS mang lại tỷ lệ P/P (Performance/Price) tối ưu nhất cho các startup và doanh nghiệp tầm trung khi cần xử lý các tác vụ dạng microservices, webhook, hoặc xử lý dữ liệu định kỳ (Cron jobs).

3. Chuẩn bị Hạ tầng VPS và Cài đặt OpenFaaS

Để bắt đầu triển khai, bạn cần chuẩn bị một máy chủ VPS sạch cài đặt hệ điều hành Ubuntu Server 22.04 LTS hoặc mới hơn. Cấu hình tối thiểu khuyến nghị là 2 vCPU, 4GB RAM và 40GB SSD. Để đơn giản hóa kiến trúc và tiết kiệm tài nguyên trên một VPS đơn lẻ, chúng ta sẽ sử dụng faasd – một phiên bản thu gọn của OpenFaaS chạy trực tiếp trên containerd mà không cần đến cụm Kubernetes cồng kềnh.

Bước 1: Cập nhật hệ thống và cài đặt các thành phần phụ thuộc

Đầu tiên, hãy kết nối SSH vào VPS và thực hiện cập nhật toàn bộ hệ thống:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y git curl runc containerd

Bước 2: Triển khai faasd (OpenFaaS trên containerd)

Tải xuống và chạy script cài đặt chính thức của dự án faasd:

git clone [https://github.com/openfaas/faasd.git](https://github.com/openfaas/faasd.git)
cd faasd
./hack/install.sh

Quá trình này sẽ tự động thiết lập containerd, cấu hình mạng nội bộ và khởi chạy các dịch vụ cốt lõi của OpenFaaS bao gồm: Gateway, Queue-Worker và Prometheus. Sau khi cài đặt thành công, hệ thống sẽ hiển thị thông tin đăng nhập và tệp secrets/basic-auth-password chứa mật khẩu quản trị.

Bước 3: Cài đặt OpenFaaS CLI trên máy cục bộ

Để quản lý và triển khai các hàm từ xa, bạn cần cài đặt công cụ faas-cli trên máy tính cá nhân của mình:

curl -sSL [https://cli.openfaas.com](https://cli.openfaas.com) | sudo sh

Xác thực kết nối tới VPS của bạn bằng lệnh:

echo -n "MẬT_KHẨU_CỦA_BẠN" | faas-cli login --username admin --gateway http://IP_VPS_CỦA_BẠN:8080 --password-stdin

4. Quy trình Xây dựng và Triển khai Serverless Function Đầu tiên

Sau khi hạ tầng đã sẵn sàng, hãy cùng xây dựng một hàm xử lý bằng ngôn ngữ Python để hiểu rõ quy trình vận hành của OpenFaaS thông qua 3 bước cốt lõi: Create, Build và Deploy.

Bước 1: Khởi tạo hàm mới từ Template

Sử dụng faas-cli để tạo một hàm mới dựa trên mẫu có sẵn từ cộng đồng:

faas-cli template pull
faas-cli new webhook-handler --lang python3-http

Hệ thống sẽ tạo ra một tệp cấu hình webhook-handler.yml và một thư mục cùng tên chứa mã nguồn chính trong tệp handler.py.

Bước 2: Viết mã nguồn xử lý logic

Mở tệp webhook-handler/handler.py và cập nhật logic xử lý dữ liệu. Ví dụ, một hàm tiếp nhận dữ liệu webhook và trả về phản hồi định dạng JSON:

def handle(event, context):
    body = event.body.decode('utf-8')
    
    # Thực hiện logic xử lý dữ liệu tại đây
    
    return {
        "statusCode": 200,
        "body": {
            "message": "Webhook received successfully!",
            "received_data": body
        },
        "headers": {"Content-Type": "application/json"}
    }

Bước 3: Đóng gói và Triển khai

Chỉnh sửa tệp webhook-handler.yml, thay đổi giá trị image: thành địa chỉ Docker Hub cá nhân của bạn (ví dụ: your-docker-username/webhook-handler:latest). Tiến hành build mã nguồn thành Docker image, đẩy lên registry và triển khai lên VPS bằng một lệnh duy nhất:

faas-cli up -f webhook-handler.yml --gateway http://IP_VPS_CỦA_BẠN:8080

Khi lệnh hoàn tất, hàm của bạn đã trực tuyến. Bạn có thể truy cập http://IP_VPS_CỦA_BẠN:8080/function/webhook-handler để kiểm tra kết quả thực thi.

5. Các kịch bản ứng dụng thực tế tối ưu cho OpenFaaS trên VPS

Hệ thống Serverless tự dựng trên VPS cực kỳ phù hợp cho các bài toán cụ thể trong môi trường doanh nghiệp vừa và nhỏ:

  1. Hệ thống tiếp nhận Webhook: Xử lý dữ liệu tức thời từ các bên thứ ba như GitHub, Stripe, hoặc các cổng thanh toán nội địa mà không làm nghẽn hệ thống core monolithic chính.
  2. Tự động hóa tác vụ định kỳ (Scheduled Tasks): Thay thế cho hệ thống Cron của Linux bằng các hàm Serverless được kích hoạt qua OpenFaaS Cron Connector, giúp dễ dàng kiểm soát logs và trạng thái thất bại.
  3. Xử lý ảnh và đa phương tiện: Khi người dùng tải ảnh lên, một hàm Python hoặc Go ngắn gọn có thể tự động resize, nén tối ưu và đẩy lên các kho lưu trữ như MinIO hoặc S3.
  4. Kiến trúc Event-Driven Microservices: Kết hợp với Message Broker như RabbitMQ hoặc Apache Kafka để xây dựng luồng xử lý dữ liệu bất đồng bộ cực kỳ mượt mà.

6. Kết luận và Khuyến nghị bảo mật

Xây dựng hệ thống Serverless Functions trên VPS với OpenFaaS mang lại sự cân bằng hoàn hảo giữa tính linh hoạt của kiến trúc Cloud-native và khả năng kiểm soát tài chính tối đa của hạ tầng truyền thống. Doanh nghiệp không còn lo ngại về chi phí ẩn (hidden costs) hay sự phụ thuộc công nghệ.

Tuy nhiên, khi vận hành hệ thống này trong môi trường production thực tế, bạn cần đặc biệt lưu ý các yếu tố bảo mật cốt lõi: luôn cấu hình HTTPS thông qua Reverse Proxy (như Nginx hoặc Traefik) kết hợp chứng chỉ Let's Encrypt miễn phí, thiết lập tường lửa UFW nghiêm ngặt chỉ mở các cổng cần thiết, và thường xuyên theo dõi số liệu giám sát từ Prometheus để điều chỉnh ngưỡng giới hạn tài nguyên (CPU/RAM limit) cho từng hàm một cách hợp lý.

Xây dựng Hệ thống Serverless Functions trên VPS Cá nhân với OpenFaaS: Giải pháp Tối ưu Chi phí và Hiệu năng cho Doanh nghiệp | DPTCloud