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

Khám phá 'Serverless VPS': Chạy ứng dụng theo sự kiện với OpenFaaS và Keda

20 tháng 5, 2026

Giới thiệu về mô hình 'Serverless VPS'

Trong thế giới điện toán đám mây hiện đại, hai mô hình triển khai phổ biến nhất hiện nay là VPS (Virtual Private Server) truyền thống và Serverless Computing. Mỗi mô hình đều có những ưu điểm và hạn chế riêng. VPS cung cấp môi trường ổn định, toàn quyền kiểm soát nhưng đòi hỏi quản lý hạ tầng và chi phí cố định. Ngược lại, serverless mang đến khả năng mở rộng tự động và thanh toán theo mức sử dụng nhưng lại thiếu tính ổn định và kiểm soát môi trường runtime.

Mô hình 'Serverless VPS' ra đời như một giải pháp hội tụ, kết hợp tinh hoa của cả hai thế giới. Đây là kiến trúc cho phép chạy ứng dụng trên VPS thông thường nhưng với khả năng mở rộng và thu nhỏ tự động theo sự kiện (event-driven scaling), đồng thời chỉ tính phí khi có tải thực tế. Bài viết này sẽ khám phá chi tiết cách triển khai mô hình đột phá này sử dụng bộ đôi công nghệ mã nguồn mở mạnh mẽ: OpenFaaS và Keda.

Kiến trúc nền tảng: OpenFaaS và Keda

OpenFaaS - Cánh cổng vào thế giới Functions-as-a-Service

OpenFaaS (Functions-as-a-Service) là một framework mã nguồn mở cho phép đóng gói bất kỳ quy trình nào dưới dạng hàm serverless. Khác với các nền tảng FaaS độc quyền, OpenFaaS hoạt động trên bất kỳ cụm Kubernetes nào, biến các container thành các hàm có thể gọi được thông qua HTTP. Kiến trúc của OpenFaaS bao gồm các thành phần chính:

  • Gateway: Cung cấp API HTTP để kích hoạt, mở rộng và theo dõi các hàm.
  • Provider: Thành phần trung gian quản lý vòng đời hàm trên nền tảng container (như Kubernetes).
  • Watchdog: Một sidecar container nhẹ chuyển đổi HTTP request thành lệnh STDIN cho hàm.
  • CLI & UI: Công cụ dòng lệnh và giao diện web để quản lý và giám sát.

OpenFaaS giúp đơn giản hóa việc đóng gói ứng dụng, cho phép developers tập trung vào logic nghiệp vụ thay vì cơ sở hạ tầng.

Keda - Kubernetes Event-driven Autoscaler

Keda là một bộ điều khiển tự động mở rộng cho Kubernetes, được thiết kế đặc biệt cho các workload theo sự kiện. Thay vì dựa vào các chỉ số CPU/Memory truyền thống, Keda mở rộng các pod dựa trên số lượng sự kiện từ các nguồn bên ngoài như message queues, databases, hoặc hệ thống monitoring. Các thành phần chính của Keda:

  • ScaledObject: Custom Resource Definition (CRD) định nghĩa cách mở rộng một deployment dựa trên scaler.
  • Scalers: Các connector tích hợp với hệ thống bên ngoài (RabbitMQ, Kafka, PostgreSQL, Prometheus, v.v.).
  • Metrics Adapter: Cung cấp metrics tùy chỉnh cho Horizontal Pod Autoscaler (HPA) của Kubernetes.

Sự kết hợp giữa OpenFaaS và Keda tạo thành bộ khung hoàn hảo cho mô hình Serverless VPS, nơi các ứng dụng chạy trên VPS có thể phản ứng linh hoạt với các sự kiện nghiệp vụ.

Triển khai mô hình Serverless VPS thực tế

Thiết lập môi trường cơ sở

Để xây dựng một hệ thống Serverless VPS, chúng ta cần thiết lập một cụm Kubernetes trên VPS. Có nhiều lựa chọn như K3s, MicroK8s, hoặc Kubernetes thông thường. K3s thường được ưa chuộng cho môi trường edge và resource-constrained do tính nhẹ và dễ cài đặt.

  1. Cài đặt Kubernetes Cluster: Triển khai K3s trên một hoặc nhiều VPS với cấu hình phù hợp.
  2. Triển khai OpenFaaS: Sử dụng helm chart chính thức để cài đặt OpenFaaS trên namespace riêng biệt.
  3. Cài đặt Keda: Triển khai Keda operator thông qua helm chart hoặc manifest YAML.
  4. Cấu hình Monitoring: Thiết lập Prometheus và Grafana để giám sát metrics từ cả OpenFaaS và Keda.

Đóng gói ứng dụng dưới dạng hàm OpenFaaS

Một trong những ưu điểm lớn nhất của OpenFaaS là khả năng đóng gói hầu hết mọi ứng dụng thành hàm serverless. Quy trình tiêu chuẩn bao gồm:

  • Tạo Dockerfile dựa trên template của OpenFaaS
  • Định nghĩa file stack.yml để cấu hình hàm
  • Xây dựng và đẩy image lên registry
  • Triển khai hàm thông qua OpenFaaS CLI

Ví dụ, một ứng dụng xử lý ảnh có thể được đóng gói thành hàm nhận input qua HTTP POST và trả về ảnh đã xử lý. Hàm này sẽ chạy với 0 replica khi không có request và tự động scale lên khi có nhu cầu.

Cấu hình autoscaling với Keda

Sau khi triển khai hàm trên OpenFaaS, bước tiếp theo là tích hợp với Keda để kích hoạt scaling dựa trên sự kiện. Giả sử chúng ta muốn hàm xử lý ảnh scale dựa trên số lượng message trong RabbitMQ queue:

  1. Tạo ScaledObject định nghĩa deployment cần scale (chính là hàm OpenFaaS)
  2. Chỉ định scaler type là RabbitMQ với connection string
  3. Thiết lập ngưỡng scaling (ví dụ: 5 message/replica)
  4. Cấu hình min/max replica và cooldown period

Khi số lượng message trong queue vượt ngưỡng, Keda sẽ điều chỉnh số replica của hàm tương ứng. Khi queue trống, replica sẽ giảm về 0, giải phóng tài nguyên VPS.

Lợi ích và ứng dụng doanh nghiệp

Lợi ích chiến lược

Mô hình Serverless VPS mang lại nhiều lợi ích đáng kể cho doanh nghiệp:

  • Tối ưu chi phí: Chỉ trả phí cho tài nguyên thực tế sử dụng, không phải trả cho VPS idle.
  • Độ linh hoạt cao: Kết hợp ổn định của VPS với khả năng mở rộng đàn hồi của serverless.
  • Giảm độ phức tạp vận hành: Tự động hóa scaling và monitoring thông qua Keda và OpenFaaS.
  • Không bị vendor lock-in
  • Bảo mật và kiểm soát: Dữ liệu và ứng dụng được lưu trữ trên hạ tầng tự quản lý.

Ứng dụng thực tế trong doanh nghiệp

Mô hình này đặc biệt phù hợp cho các use case sau:

  • Xử lý batch theo sự kiện: Xử lý file upload, chuyển đổi định dạng media, xử lý dữ liệu batch.
  • Microservices không liên tục: Các service chỉ hoạt động khi có request cụ thể.
  • API với traffic không ổn định: Các endpoint có traffic spike theo giờ/ngày/tuần.
  • IoT và Edge Computing: Xử lý dữ liệu sensor tại edge với khả năng scale theo event.
  • ETL Pipeline: Xử lý dữ liệu khi có file mới trong storage hoặc record mới trong database.

Thách thức và giải pháp

Cold Start Latency

Một trong những thách thức lớn nhất của mô hình serverless là độ trễ khởi động (cold start). Khi hàm scale từ 0 replica, cần thời gian để khởi động container. Giải pháp:

  • Sử dụng base image tối ưu, nhẹ (như Alpine Linux)
  • Triển khai min replica > 0 cho các hàm quan trọng
  • Sử dụng công nghệ container snapshot để khởi động nhanh hơn
  • Dự đoán traffic pattern và pre-warm hàm trước

Quản lý trạng thái (State Management)

Các hàm serverless thường stateless, nhưng nhiều ứng dụng thực tế cần quản lý trạng thái. Giải pháp:

  • Externalize state ra external storage (database, Redis, object storage)
  • Sử dụng persistent volume claims cho dữ liệu cần lưu trữ cục bộ
  • Thiết kế ứng dụng theo mô hình event-sourcing hoặc CQRS

Monitoring và Debugging

Debugging ứng dụng distributed với autoscaling đòi hỏi công cụ phù hợp:

  • Tích hợp OpenFaaS với Prometheus và Grafana để giám sát chi tiết
  • Sử dụng distributed tracing (Jaeger, Zipkin) để theo dõi request flow
  • Centralized logging với ELK stack hoặc Loki
  • Giám sát Keda metrics để hiểu scaling behavior

Tương lai của mô hình Serverless VPS

Mô hình Serverless VPS đang phát triển nhanh chóng với nhiều xu hướng đáng chú ý:

  • WasmEdge Integration: WebAssembly mang đến khả năng khởi động cực nhanh và bảo mật tốt hơn container truyền thống.
  • AI/ML Inference tại Edge: Chạy các model AI nhẹ trên VPS với scaling theo nhu cầu inference request.
  • Multi-cloud và Hybrid Deployment: Phân tán hàm trên nhiều VPS provider và on-premise infrastructure.
  • GitOps và Automation: Quản lý toàn bộ vòng đời hàm thông qua Git repository.
  • Service Mesh Integration: Kết hợp với Istio hoặc Linkerd để quản lý traffic và security policy.

Công nghệ tiếp tục phát triển, mô hình Serverless VPS sẽ ngày càng trở nên phổ biến như một giải pháp cân bằng giữa kiểm soát, chi phí và khả năng mở rộng.

Kết luận

Mô hình 'Serverless VPS' với OpenFaaS và Keda đại diện cho một bước tiến quan trọng trong kiến trúc ứng dụng hiện đại. Nó không chỉ giải quyết những hạn chế của cả VPS truyền thống và serverless thuần túy, mà còn mở ra những khả năng mới cho việc xây dựng ứng dụng linh hoạt, tiết kiệm chi phí và dễ quản lý.

Đối với doanh nghiệp, việc áp dụng mô hình này không chỉ là một quyết định công nghệ mà còn là chiến lược kinh doanh thông minh. Nó cho phép tối ưu hóa chi phí hạ tầng, tăng tốc độ phát triển sản phẩm, và nâng cao khả năng cạnh tranh trên thị trường.

Bắt đầu với Serverless VPS có thể đơn giản như triển khai một hàm demo trên cụm K3s nhỏ. Từ đó, doanh nghiệp có thể mở rộng dần sang các workload phức tạp hơn, xây dựng hệ sinh thái ứng dụng hiện đại sẵn sàng cho tương lai của điện toán phân tán và theo sự kiện.