Bài viết được sự cho phép của tác giả Kiên Nguyễn
Hello anh em!. Do mùa dịch nên lụm được một kèo làm project với Client bên Canada về AWS Lambda, nên tiện viết luôn bài về Functions as a Service (FaaS).
Bài viết không có gì hơn ngoài mục đích cung cấp cho anh em một cái nhìn tương đối hoàn chỉnh về Faas, sau này còn có thêm về Platform-as-a-Service (PaaS). So sánh điểm mạnh yếu, khác nhau giữa hai kiến trúc này.
Mong anh em chú ý đón đọc (rang ráng sao đó đọc cho hết bài). Lụm được kèo thơm – tiện đây nói với anh em là Tiếng Anh đối với dev như anh em mình quan trọng lắm luôn
Functions as a service là gì?
Function as a service (FaaS) is a serverless way to execute modular pieces of code on the edge. FaaS lets developers write and update a piece of code on the fly, which can then be executed in response to an event.
Function as a Service (FaaS) là kiến trúc serverless, thực thi các phần module của code bên phía server. FaaS giúp lập trình viên viết và cập nhận các phần của code nhanh chóng, sau đó thực thi và trả vè kết quả.
Đọc hơi khó hiểu, nhưng bình thường, nếu không biết về kiến trúc FaaS. Chỉ đơn giản cần hình dung là:
With FaaS, the physical hardware, virtual machine operating system, and web server software management are all handled automatically by your cloud service provider.
Với FaaS, các thiết bị phần cứng, hệ thống máy ảo và web server đều được handle một cách tự động bởi cloud service được cung cấp
Function chỉ làm một việc
Với triết lý lập trình hàm (Function do only one thing), khi làm việc với kiến trúc Functions as a service, chỉ nên để function làm một việc duy nhất
Make your code scope limited, efficient, and lightweight so functions load and execute quickly.
Làm cho source code bớt dài dòng, hiệu quả và nhẹ để các chức năng tải và thực thi nhanh chóng.
Đừng gọi function này trong function khác
Điểm mạnh nhất của FaaS là nó độc lập các function, nếu function chỉ thực thi một nhiệm vụ duy nhất. FaaS sẽ làm rất tốt công việc của nó được giao. Tuy nhiên, nếu gọi các function lồng nhau, rất dễ xảy ra vấn đề về performance.
Too many functions will increase your costs and remove the value of the isolation of your functions.
Quá nhiều functions sẽ làm răng giá phải trả và loại bỏ đi giá trị của sự độc lập giữa các function.
Sử dụng quá nhiều libraries
Một số services hướng FaaS hỗ trợ tận răng cho developer các function, libraries. Tuy nhiên, không phải vì vậy mà ta lạm dụng.
Using too many libraries can slow functions down and make them harder to scale.
Sử dụng quá nhiều libraries sẽ làm chậm các functions và khiến chúng khó để scale.
Ưu điểm khi sử dụng Faas
Tốc độ – Improved developer velocity
Rõ ràng mà nói, thay vì ngồi lò mò lo code, rồi build, rồi run. Chưa hết, nếu lên server test thì còn deploy nữa. Thật là quá nhiều công đoạn, quá trình nhiêu khê.
Với Functions as a service, dev giờ chỉ lo code. Nhanh hơn rất nhiều!
With FaaS, developers can spend more time writing application logic and less time worrying about servers and deploys. This typically means a much faster development turnaround.
Với FaaS, lập trình viên có thể có thểm thời gian để viết về logic của ứng dụng, bớt thời gian lo lắng về servers và deploys. Điều đó cũng đồng nghĩa với việc development nhanh hơn.
Khả năng mở rộng – Scability
Thay vì phải lo lắng phía server handle ra sao cho hàng triệu request. Với Functions as a service, dev giờ chỉ focus vào thực thi function, còn scale ra sao đã có phía server lo.
Developers don’t have to worry about creating contingencies for high traffic or heavy use. The serverless provider will handle all of the scaling concerns.
Dev không còn phải lo vấn đề về quá tải khi traffic cao/ Server sẽ cung cấp và handle tất cả các vấn đề liên quan với scaling.
Giá cả – Cost efficiency
Thay vì phải trả tiền hằng tháng cho một service to bự. Hầu hết các nhà cung cấp đều chỉ tính tiền khi người dùng thực sự sử dụng
Clients only pay for as much computation time as they use, and do not need to waste money over-provisioning cloud resources.
Khách hàng chỉ trả tiền cho thời gian mà họ sử dụng, không phải phung phí tiền cho các tài nguyên cloud khác.
Nhược điểm
Sinh ra với kha khá ưu điểm hơn người, tuy nhiên cũng có những nhược điểm cần biết về Functions as a Service (FaaS) để mà tránh.
Thứ nhất, sử dụng FaaS sẽ gây khó khăn cho việc code. Khởi tạo environtment để test hoặc investigation bug ở môi trường local là vô cùng khó khăn.
It can be very difficult to incorporate FaaS code into a local testing environment, making thorough testing of an application a more intensive task.
Sẽ là rất khó để tích hợp code của FaaS vào môi trường kiểm thử ở local. Việc này vô hình chung biến kiểm thử cho ứng dụng trở thành một task chuyên sâu hơn
Tham khảo thêm
Bài viết gốc được đăng tải tại kieblog.vn
Có thể bạn quan tâm:
- Functional Programming là gì? Tại sao nên sử dụng
- 7 lí do để loại bỏ Functional Components của React
- Functional programing nên và không nên
Xem thêm các việc làm Developer hấp dẫn tại TopDev