0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Serverless là gì? Khi nào nên sử dụng nó?

Đăng vào 7 tháng trước

• 5 phút đọc

Giới thiệu

Serverless nghe có vẻ như "không có máy chủ", nhưng thực tế, máy chủ vẫn tồn tại trong quá trình này. Nó giúp giảm bớt công việc quản lý máy chủ cho các nhà phát triển, cho phép họ tập trung vào việc phát triển ứng dụng thay vì lo lắng về cơ sở hạ tầng.

Tại sao chúng ta cần Serverless?

Khởi đầu của Serverless

Vào năm 2006, trong thời kỳ cách mạng điện toán đám mây, các công ty như AWS bắt đầu cung cấp máy ảo (VM) trên đám mây với các dịch vụ như EC2 và S3 mà các nhà phát triển có thể thuê. Đây là một giải pháp tiết kiệm chi phí và hiệu quả so với việc mua máy chủ vật lý của riêng mình. Điều này được gọi là Cơ sở hạ tầng như một dịch vụ (IaaS).

Thời kỳ đơn giản hơn

Mặc dù các nhà phát triển có thể thuê máy ảo, nhưng họ không muốn gặp rắc rối với việc thiết lập và quản lý các máy chủ. Đó là lúc Nền tảng như một dịch vụ (PaaS) xuất hiện. Năm 2008, Google App Engine (GAE) được phát hành với mô hình PaaS. Xung quanh thời gian đó, Heroku (thành lập năm 2007) đã ra mắt vào năm 2009 như một nền tảng PaaS được ưa chuộng, cho phép người dùng triển khai ứng dụng một cách nhanh chóng.

Bước ngoặt của Serverless

Năm 2014, AWS đã ra mắt AWS Lambda, đánh dấu một bước chuyển mình lớn trong điện toán đám mây. Giờ đây, bạn không cần phải cấp phát hay chạy máy chủ. Nó cho phép thực thi các đoạn mã (hàm) được kích hoạt bởi các sự kiện. Về bản chất, nó được gọi là “hàm như một dịch vụ”.

Lambda đã đánh dấu sự ra đời của điện toán Serverless, và nhanh chóng các nhà cung cấp khác cũng bắt đầu tham gia. Các nhà phát triển giờ đây có thể viết mã, và các nhà cung cấp đám mây sẽ xử lý việc thực thi, mở rộng và tính phí. Điều này không chỉ đáng tin cậy mà còn rất rẻ, cho phép sự áp dụng rộng rãi hơn trong cộng đồng phát triển.

Hiện tại, có rất nhiều dịch vụ tương tự như:

  • Microsoft Azure Functions
  • Google Cloud Functions
  • Cloudflare Workers
    Tất cả đều xuất hiện sau khi AWS giới thiệu Lambda và đã cố gắng giảm chi phí của Serverless hơn nữa. Serverless đã trở nên rẻ, đáng tin cậy và loại bỏ rất nhiều công việc vận hành.

Bạn có thể xem mức chi phí của Lambda tại đây.
Nguồn: Amazon AWS

Nhược điểm của Serverless

Tuy nhiên, không có công nghệ nào hoàn hảo. Serverless có nhiều lợi ích, nhưng cũng đi kèm với một số nhược điểm:

  • Khởi động lạnh (Cold Start): Đây là vấn đề chính của Serverless. Khi một hàm không được sử dụng gần đây, nhà cung cấp đám mây có thể khởi động nó lên để tiết kiệm tài nguyên, điều này giúp giảm chi phí. Điều này không lý tưởng cho các ứng dụng thời gian thực như nền tảng giao dịch, trò chơi, v.v.
  • Kiểm soát hạn chế: Serverless có thể không cho bạn nhiều quyền kiểm soát đối với cơ sở hạ tầng do các hạn chế của nền tảng.
  • Khả năng dự đoán chi phí và lo ngại về khóa nhà cung cấp: Nếu bạn cần một hóa đơn dự đoán (để lập ngân sách) hoặc muốn tránh bị ràng buộc với một nhà cung cấp đám mây duy nhất, Serverless có thể gây ra một số thách thức.

Khi nào nên sử dụng Serverless?

Serverless là lựa chọn tốt khi dịch vụ của bạn chạy không thường xuyên. Một số ví dụ bao gồm:

  • Các tác vụ dựa trên sự kiện như tải tệp, kích hoạt thay đổi cơ sở dữ liệu, v.v.
  • APIs hoặc microservices có lưu lượng truy cập biến đổi.
  • Serverless cũng rất đáng tin cậy cho việc phát triển nhanh, MVP, hoặc cho các tính năng thử nghiệm nơi bạn muốn di chuyển nhanh và giảm chi phí cơ sở hạ tầng ban đầu và rủi ro.

Khi nào không nên sử dụng Serverless?

Chỉ vì Serverless dường như rẻ không có nghĩa là nó là lựa chọn rẻ nhất cho mọi loại tác vụ:

  • Các tác vụ chạy lâu hoặc yêu cầu tính toán cao có thể vượt quá thời gian thực thi, bộ nhớ hoặc giới hạn CPU của các nền tảng Serverless.
  • Lưu lượng truy cập cao và ổn định mà các hàm luôn được gọi nhiều, điều này có thể vượt quá chi phí của các lựa chọn thay thế.
  • Các ứng dụng nhạy cảm với độ trễ do khởi động lạnh.

Thực hành tốt nhất khi sử dụng Serverless

  • Theo dõi hiệu suất: Sử dụng các công cụ giám sát để theo dõi hiệu suất của các hàm Serverless của bạn và tối ưu hóa chúng khi cần thiết.
  • Sử dụng các hàm nhỏ: Tạo các hàm nhỏ và đơn giản để dễ dàng quản lý và bảo trì.
  • Bảo mật: Đảm bảo rằng bạn thực hiện các biện pháp bảo mật để bảo vệ dữ liệu và ứng dụng của mình.

Những cạm bẫy thường gặp

  • Quá phụ thuộc vào nhà cung cấp: Không nên quá phụ thuộc vào một nhà cung cấp đám mây duy nhất.
  • Chi phí không dự đoán: Theo dõi chi phí cẩn thận để tránh những hóa đơn bất ngờ.

Mẹo hiệu suất

  • Nén mã: Giảm kích thước mã của bạn để tăng tốc độ tải.
  • Sử dụng bộ nhớ đệm: Tận dụng bộ nhớ đệm để giảm thời gian phản hồi cho các hàm thường xuyên được gọi.

Kết luận

Serverless là một công nghệ mạnh mẽ giúp các nhà phát triển giảm bớt gánh nặng quản lý máy chủ và tập trung vào việc phát triển ứng dụng. Tuy nhiên, việc hiểu rõ các ưu điểm và nhược điểm của nó là rất quan trọng để đảm bảo rằng bạn đang sử dụng nó một cách hiệu quả. Hãy cân nhắc kỹ lưỡng trước khi quyết định có nên chuyển sang Serverless hay không.

Câu hỏi thường gặp (FAQ)

Serverless có an toàn không?

Có, nhưng bạn cần thực hiện các biện pháp bảo mật để bảo vệ dữ liệu và ứng dụng của mình.

Chi phí của Serverless như thế nào?

Chi phí có thể thay đổi tùy thuộc vào nhà cung cấp và mức sử dụng của bạn. Hãy theo dõi chi phí để tránh bất ngờ.

Khi nào là thời điểm thích hợp để chuyển sang Serverless?

Khi ứng dụng của bạn có lưu lượng truy cập không ổn định hoặc bạn muốn giảm thiểu chi phí cơ sở hạ tầng.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào