Bài viết được sự cho phép của tác giả Tống Xuân Hoài
Vấn đề
Serverless chắc hẳn là một khái niệm không quá xa lạ với nhiều người. Khi nhắc đến Serverless, chúng ta thường nghĩ ngay đến “không có máy chủ” đúng như cái tên của nó. Hmm… không có máy chủ tức là như thế nào?
Không biết tại sao người ta lại nghĩ ra cái tên đó, nhưng theo tôi họ muốn nhấn mạnh về vấn đề bạn không cần phải có máy chủ để chạy mã của mình. Chúng ta đều biết, việc chạy mã thường yêu cầu có một máy chủ để triển khai tất cả mọi thứ lên trên đó. Nào là mã nguồn, cơ sở dữ liệu, hàng đợi tin nhắn… cho tech stacks đang sử dụng.
Máy chủ thường có hai loại, Cloud và vật lý. Trong khi Cloud rất dễ dàng để thuê thì máy chủ vật lý cần mất nhiều thời gian lẫn tiền bạc để thiết lập. Nhưng dù là loại nào đi nữa, chúng ta vẫn cần có người vận hành chúng. Vận hành nghĩ là cài đặt, theo dõi, và khắc phục sự cố… buộc chúng ta cần có nhiều hiểu biết lẫn thời gian bỏ ra để đảm bảo hệ thống hoạt động ổn định.
Serverless bỏ qua công đoạn đó, không cần vận hành vì đơn giản chúng ta “đâu có máy chủ”!? Đó là về mặt khách hàng, tức là đang nói về những người sử dụng Serverless, họ không cần quan tâm đến máy chủ, miễn là dịch vụ họ thuê được chạy tốt. Còn về phía nhà cung cấp, dĩ nhiên họ cần phải vận hành máy chủ. Có thể nói, họ “gánh” cho ta những rủi ro trong quá trình vận hành, họ cần phải là người có kiến thức chuyên sâu về vận hành để đảm bảo dịch vụ được duy trì ổn định. Nếu không, chẳng ai dám sử dụng dịch vụ của họ nữa.
Lấy ví dụ, bạn muốn có một máy chủ cơ sở dữ liệu PostgreSQL. Bạn có thể thuê một VPS giá 5$/month ở đâu đó, rồi về cài Postgres lên thế là xong, thích dùng thế nào thì dùng thì cần gì phải sử dụng dịch vụ của bên thứ 3 nào nữa chứ? Một ngày nọ, bỗng nhiên không thể kết nối vào database được nữa, bạn SSH vào server, thấy Postgres đang bị tắt, bạn bật lên, một lỗi xuất hiện, bạn khắc phục, một lỗi khác lại đến… bực mình bạn khởi động lại, máy chủ liên tục báo CPU 100%, bạn cay cú đập đập vào bàn phím… Đó chỉ là một ví dụ về sử rủi ro của quá trình tự vận hành máy chủ.
Tuy nhiên Serverless được sinh ra không phải để thay thế cho máy chủ truyền thống, nó chỉ góp phần làm phong phú thêm lựa chọn công nghệ của chúng ta. Bài viết ngày hôm nay, hãy đi vào xem Serverless là gì và nó làm được những gì nhé!
Serverless là gì?
Serverless là một mô hình tính toán đám mây (cloud computing) mà ẩn đi hoặc giảm bớt việc quản lý cơ sở hạ tầng cho nhà phát triển. Không cần quản lý máy chủ, tiết kiệm chi phí tài nguyên, được vận hành bởi đội ngũ chuyên nghiệp và chỉ trả tiền cho những gì sử dụng. Ngoài ra Serverless cũng cho khả năng mở rộng theo chiều ngang đáng kể.
Không cần quản lý máy chủ thì rõ rồi, còn tiết kiệm chi phí tài nguyên và chỉ trả tiền cho những gì sử dụng là như thế nào? Nếu bạn thuê một máy chủ, tức là bạn đang bỏ tiền ra thuê từng giây từng phút máy chủ sống. Tưởng tưởng sẽ có thời điểm nào đó máy chủ của bạn rảnh rỗi, như vào buổi đêm chẳng hạn, bạn vẫn phải bỏ tiền ra cho chúng. Với Serverless, nhiều nhà cung cấp có cách tính tiền dựa trên số lần gọi đến dịch vụ, tức là gọi bao nhiêu thì trả tiền bấy nhiêu, không gọi đồng nghĩa với việc không phải trả tiền.
Đặc trưng của Serverless là “stateless”, tức là không lưu lại trạng thái, do đó chúng ta không bị phụ thuộc nhiều vào session, cookie… từ đó tăng khả năng mở rộng bằng cách tạo thêm nhiều dịch vụ tương tự để tăng khả năng xử lý.
Khác biệt gì so với máy chủ truyền thống?
Khác biệt rõ ràng nhất là chúng ta không có quản lý máy chủ trong Serverless. Không cần hoặc rất ít quan tâm đến quản lý tài nguyên như CPU, bộ nhớ và mạng.
VPS là một máy chủ ảo được tạo ra từ một máy chủ vật lý, cung cấp tài nguyên cụ thể như CPU, bộ nhớ và mạng. Ngược lại, Serverless không yêu cầu máy chủ cụ thể và chạy các chức năng khi có sự kiện kích hoạt.
Quản lý tài nguyên là một khác biệt quan trọng khác. Trong khi VPS đòi hỏi người quản trị phải quản lý tài nguyên thì Serverless tự động quản lý chúng, giúp giảm bớt gánh nặng cho nhà phát triển.
Giá thuê máy chủ thường được tính theo tài nguyên đã cấp phát, ví dụ 1 CPU 2 GB RAM 30GB SSD… Trong khi đó, serverless tính phí dựa trên lượng sử dụng thực tế, ví dụ bạn gọi 100 yêu cầu thì trả tiền cho 100 yêu cầu đó.
Nhìn chung, máy chủ thích hợp cho các ứng dụng có nhu cầu tài nguyên ổn định và dự án lớn, trong khi Serverless là lựa chọn tốt cho các ứng dụng có khả năng chịu tải biến thiên theo khoảng thời gian. Sự khác biệt giữa chúng cung cấp những lợi ích độc đáo, đáp ứng nhu cầu đa dạng của các dự án công nghệ ngày nay.
Tham khảo việc làm Cloud lương hấp dẫn trên TopDev
Sử dụng trong trường hợp nào?
Chung quy, những gì máy chủ làm được đều có thể triển khai thông qua Serverless, chỉ có điều mức độ hỗ trợ đến đâu và chúng ta không thể đòi hỏi bằng hoặc hơn máy chủ truyền thống vì chúng được sinh ra không phải thay thế cho nhau.
Trước hết, Serverless là một lựa chọn hiệu quả cho triển khai API Gateway, nơi chi phí chỉ phát sinh khi có yêu cầu API được gửi. Điều này giúp giảm thiểu chi phí không cần thiết khi không có sự tương tác.
Xử lý hình ảnh và đa phương tiện cũng là một ứng dụng linh hoạt của Serverless. Việc sử dụng nó cho các chức năng như xử lý và chuyển đổi hình ảnh, video, âm thanh giúp giảm chi phí xử lý tập trung vào các nhiệm vụ quan trọng.
Serverless cũng thích hợp cho việc xử lý sự kiện hệ thống, nơi các chức năng chỉ được kích hoạt khi cần thiết, giảm tải và chi phí liên quan.
Ngoài ra, Serverless còn hữu ích trong việc xử lý thông tin từ thiết bị IoT, giúp giảm chi phí duy trì máy chủ liên tục và tăng tính linh hoạt.
Tích hợp với Webhooks và các dịch vụ bên ngoài thông qua Serverless cũng mang lại lợi ích chi phí, giảm gánh nặng cho việc tích hợp.
Những ứng dụng này minh họa rõ ràng những cơ hội mà Serverless mang lại để tiết kiệm chi phí và tối ưu hóa cơ sở hạ tầng trong môi trường thực tế.
Serverless với Cloudflare Worker
Cloudflare Workers cung cấp giải pháp Serverless cho phép bạn tạo ra các ứng dụng mà không cần quan tâm đến máy chủ. Được chống lưng bởi Cloudflare, Workers có sẵn trên mạng toàn cầu, điều đó nghĩa là ứng dụng của bạn được hưởng lợi dựa trên CDN.
Workers hỗ trợ nhiều ngôn ngữ lập trình, phổ biến nhất là JavaScript và Rust. Trong khi JS được chạy dựa trên V8 của Chrome thì Rust cũng được biên dịch thành WebAssembly và chạy trong V8.
Ngoài ra, Cloudflare còn cung cấp rất nhiều dịch vụ để chúng ta tự tái tạo lại được “ngăn xếp công nghệ” của mình như R2, Pub/Sub, Queue, D1, Pages, AI…
Tổng kết
Serverless đem đến sự đơn giản và linh hoạt bằng cách loại bỏ gánh nặng quản lý máy chủ, giảm chi phí tài nguyên, và chỉ thanh toán cho sự sử dụng thực tế. Serverless không phải là thay thế mà là một lựa chọn bổ sung, mở rộng các khả năng công nghệ cho các dự án. Đồng thời, Serverless có thể triển khai API Gateway, xử lý đa phương tiện, đến xử lý sự kiện hệ thống, IoT, và tích hợp với Webhooks. Cloudflare Worker cung cấp ứng dụng Serverless linh hoạt với nhiều ngôn ngữ lập trình và sự hỗ trợ mạng toàn cầu, mang đến cho chúng ta một sự lựa chọn với độ tin cậy cao.
Bài viết gốc được đăng tải tại 2coffee.dev