Một bài viết chi tiết hơn về Serverless

Một bài viết chi tiết hơn về Serverless

Tin ngắn hàng ngày dành cho bạn
  • Bắt đầu kỳ nghỉ tết rồi nên mình cũng không đăng bài nữa. Hẹn gặp lại các bạn qua tết nha 😁

    » Xem thêm
  • Tiếp tục về jj. Đang thắc mắc là nó mới thế liệu có ai làm mấy phần mềm dạng GUI cho dễ nhìn chưa. Kiểu giống như git thì có quá nhiều rồi không đếm xuể.

    May quá, tác giả tổng hợp lại luôn rồi Community-built tools around Jujutsu 🥳

    » Xem thêm
  • Turso thông báo rằng họ đang viết lại SQLite bằng Rust. Thế là lại có thêm một bằng chứng nữa cũng cố cho câu nói Rust đang "tái định nghĩa" lại nhiều thứ.

    Nhưng nguyên nhân sâu xa mới thú vị. Tại sao họ lại làm vậy? Ai cũng biết SQLite là nguồn mở, ai cũng có thể tạo bản sao (fork) để chỉnh sửa lại theo ý mình. Lẽ nào nhóm của Turso không thích hoặc không tin vào C - vốn là ngôn ngữ dùng để cấu thành SQLite.

    Mình xin kể chuyện một chút. Turso là một bên cung cấp dịch vụ máy chủ cơ sở dữ liệu dựa trên SQLite, họ đã thực hiện một vài tùy chỉnh trên bản sao của SQLite để phục vụ cho mục đích của mình, gọi nó là libSQL. Họ "hào phóng" cho cộng đồng đóng góp thoải mái.

    Quay trở lại SQLite là mã nguồn mở chứ không phải là đóng góp mở. Chỉ có một nhóm người đứng đằng sau duy trì mã nguồn này, và họ không tiếp nhận yêu cầu kéo (pull request) từ những người khác. Đồng nghĩa mọi thay đổi hoặc tính năng đều là của nhóm người này tạo ra. Có vẻ như SQLite rất phổ biến nhưng cộng đồng không thể làm điều mà họ muốn là đóng góp cho sự phát triển của nó.

    Chúng ta biết rằng hầu hết ứng dụng mã nguồn mở thường đi kèm với một thư mục "tests" với các bài kiểm tra rất nghiêm ngặt. Điều đó giúp cho sự cộng tác trong phát triển trở nên dễ dàng hơn. Nếu muốn chỉnh sửa hoặc thêm một tính năng mới, trước hết bạn cần phải đảm bảo sự thay đổi vượt qua được tất cả bài kiểm tra. Nhiều thông tin cho rằng SQLite không công khai bộ kiểm tra này. Điều này vô tình gây khó khăn cho những ai muốn chỉnh sửa mã nguồn. Vì họ không chắc chắn rằng liệu triển khai mới của mình có phù hợp với những tính năng cũ hay không.

    tursodatabase/limbo là dự án viết lại SQLite bằng Rust đã nhắc đến ở đầu bài. Họ nói rằng nó hoàn toàn tương thích với SQLite và nguồn mở hoàn toàn. limbo đang trong giai đoạn hoàn thiện. Chúng ta hãy chờ xem kết quả trong tương lai thế nào nhé. Bài viết chi tiết tại Introducing Limbo: A complete rewrite of SQLite in Rust.

    » Xem thêm

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.

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.

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (1)

Nội dung bình luận...
Avatar
Trịnh Cường9 tháng trước
cảm ơn bạn đã cung cấp thông tin này ;)
Trả lời
Avatar
Xuân Hoài Tống9 tháng trước
Cảm ơn bạn Cường đã quan tâm :D
Bấm hoặc cuộn mạnh để sang bài mới