Serverless Architecture – Kiến trúc không có máy chủ
October 28, 2020Serverless architecture là một cách tiếp cận điện toán đám mây để xây dựng và chạy các ứng dụng và dịch vụ mà không cần quản lý cơ sở hạ tầng. Trong các ứng dụng không có máy chủ, việc thực thi code được quản lý bởi một máy chủ, cho phép các lập trình viên triển khai code mà không phải lo lắng về việc bảo trì và cung cấp máy chủ. Trên thực tế, serverless không có nghĩa là không có máy chủ. Không có ứng dụng trên máy chủ, nhưng một dịch vụ đám mây của bên thứ ba như AWS chịu trách nhiệm hoàn toàn cho các máy chủ này. Một kiến trúc không có máy chủ giúp loại bỏ sự cần thiết của các tài nguyên bổ sung, mở rộng ứng dụng, bảo trì máy chủ và cơ sở dữ liệu và hệ thống lưu trữ.
Kiến trúc serverless kết hợp hai khái niệm:
FaaS (Function as a Service) – mô hình điện toán đám mây cho phép các lập trình viên tải các phần code chức năng lên đám mây và để các phần này được thực thi độc lập
BaaS (Backend as a Service) – mô hình điện toán đám mây cho phép các lập trình viên thuê ngoài các phần mềm quản lý phụ trợ (quản lý cơ sở dữ liệu, lưu trữ đám mây, lưu trữ, xác thực, định danh và phân quyền người dùng, v.v.) và người lập trình viên chỉ viết code và sửa lỗi phần giao diện. Toàn bộ phần backend đã được nhà cung cấp xử lý hết.
Khi sử dụng kiến trúc không có máy chủ, các lập trình viên có thể tập trung vào chính sản phẩm mà không phải lo lắng về quản lý máy chủ hoặc môi trường thực thi. Điều này cho phép các lập trình viên tập trung vào phát triển các sản phẩm có độ tin cậy và khả năng mở rộng cao.
Có rất nhiều nhà cung cấp đám mây trên thị trường. Dưới đây là một số nhà cung cấp máy chủ serverless hàng đầu:
Ưu điểm:
Dễ dàng triển khai
Trong các ứng dụng không có máy chủ, các lập trình viên không cần phải lo lắng về cơ sở hạ tầng. Điều này cho phép họ tập trung vào chính code. Kiến trúc Serverless cho phép quay ứng dụng cực kỳ nhanh, vì việc triển khai chỉ mất vài giờ hoặc vài ngày (so với ngày hoặc tuần với cách tiếp cận truyền thống).
Giá rẻ
Đi máy chủ giảm chi phí. Vì không cần xử lý cơ sở dữ liệu, một số logic và máy chủ, không chỉ có thể tạo code chất lượng cao hơn mà còn cắt giảm chi phí. Khi sử dụng kiểu máy chủ, chỉ bị tính phí cho chu kỳ CPU và bộ nhớ thực sự sử dụng.
Tăng cường khả năng mở rộng
Nhiều chủ doanh nghiệp muốn ứng dụng của họ có ảnh hưởng lớn và được nhiều người biết đến như Google hoặc Facebook. Máy chủ serverless giúp cho việc mở rộng bộ nhớ và CPU được tự động và liền mạch. Ứng dụng sẽ tự động mở rộng RAM hoặc CPU khi tải nặng hoặc cơ sở dữ liệu người dùng tăng lên mà không bị giảm hiệu suất tải trang. Các ứng dụng serverless có thể xử lý một số lượng lớn yêu cầu, trong khi ứng dụng truyền thống sẽ bị crash (quá tải) bởi sự gia tăng đột ngột của các request đến từ phía người dùng.
Nhược điểm:
Nhà cung cấp hoàn toàn độc quyền
Nhà cung cấp có thể có tình huống cần cung cấp toàn quyền kiểm soát các hoạt động. Và nếu muốn thay đổi các nghiệp vụ logic kinh doanh, việc thay đổi ở phía server khá hạn chế và việc chuyển từ nhà cung cấp này sang nhà cung cấp khác có thể gặp nhiều thách thức. Có thể nói là gần như phải làm lại từ đầu nếu đổi sang nhà cung cấp khác
Không dành cho tác task chạy nặng
Mô hình không có máy chủ không phù hợp cho các hoạt động xử lý tính toán nặng nề. Ứng dụng không có máy chủ rất tốt cho các quy trình thời gian thực thi ngắn, nhưng nếu một tác vụ mất hơn năm phút, ứng dụng không có máy chủ sẽ cần thêm chức năng FaaS.
Tóm lại
Kiến trúc phần mềm không có máy chủ có lợi cho việc hoàn thành các nhiệm vụ một lần và các quy trình phụ trợ. Nó hoạt động tuyệt vời cho các ứng dụng và ứng dụng nặng dành cho khách hàng đang phát triển nhanh và cần mở rộng không giới hạn.
[…] + https://blog.ntechdevelopers.com/kubectl-useful-commands/ – Serverless + https://blog.ntechdevelopers.com/serverless-architecture-kien-truc-khong-co-may-chu/ – Message bus […]