Khi mình mới bắt đầu làm quen và có các dự án thực tế liên quan đến các serverless resources trên AWS như Lambda, API Gateway cũng như các resources phụ trợ như firewall, CDN, DNS, S3 để lưu lambda package, lambda layer,… Chính những thứ như này khiến cho mọi thứ rất phức tạp cho người mới bắt đầu. Mình không biết là nếu làm theo hướng này hướng kia thì nó đã tối ưu hay chưa. Trước khi biết đến Serverless framework thì mình cũng đã có 2 năm làm việc với Terraform và AWS Cloudformation nhưng vẫn thấy khó khi bắt đầu với Lambda và APIGateway. Trước đây công việc của mình không có liên quan nhiều tới Lambda.
Khi biết đến serverless framework đã giúp cho mình tiết kiệm rất nhiều thời gian, công sức và thấy rất hứng thú nên muốn chia sẻ với anh em.
Vậy serverless framework là gì. Đây là một framework được viết bằng NodeJS nên việc cài đặt, thực thi rất dễ dàng. Mình sẽ có một phần demo ở phần sau của bài viết để bạn có thể dễ dàng hình dung được những gì mà serverless framework có thể làm và nó dễ để sử dụng như thế nào. Bên dưới là một vài ưu điểm chính của serverless framework
Zero-friction serverless development:
Dễ dàng xác định các ứng dụng của bạn dưới dạng chức năng và sự kiện: Khai báo các hàm AWS Lambda và trình kích hoạt của chúng thông qua abstract syntax đơn giảm trong YAML.
Deploy infrastructure và lambda code chỉ băng một command duy nhất: AWS Lambda functions, triggers & code sẽ được deployed đồng thời lên cloud một cách tự động.
Mở rộng các use-cases và workflow bằng các Plugins: Serverless framework có hằng ngàn plugins để có thể build serverless use-cases trên AWS và integrate với những tools khác.
Các bước đơn giản để start một ứng dụng chạy trên lambda
- Cài đặt serverless
npm i serverless -g
- Nếu bạn đã có project để sẵn sàng deploy thì có thể nhảy qua bước 10. Từ bước này đến bước 2-10 là init một example project và deploy lên AWS.
serverless
- Ở đây mình chọn là dòng thứ 2, vì mình muốn có thêm API Gateway và cả lambda function
- Đặt tên cho project. Ở đây mình để mặc định. Chờ xíu để serverless clone example project.
- Ở đây serverless hỏi mình có thêm nó vào dashboard đã có sẵn không. Mình chọn skip vì mình chỉ cần deploy nó lên account AWS của mình mà thôi, không muốn monitor trên hệ thống của Serverle
- Tiếp theo serverless hỏi mình có muốn deploy sample app này lên AWS hay không. Mình chọn yes để nó deploy lên.
- Việc đầu tiên là serverless sẽ tạo ra cloudformation template và dùng nó để deploy app của mình lên với các resources liên quan.
- Kết quả:
- Source code của sample project này. Như bạn có thể thấy ở hình bên dưới. Chỉ với vài dòng trong serverless.yml đã có thể deploy lên một ứng dụng hoàn hảo, đầy đủ và có thể sử dụng.
- Vậy mới những ai đã có project và đã có serverless.yml file bên trong (hoặc copy từ sample app) thì chỉ cần run command serverless. Chỉ bằng command bên dưới là app sẽ được đóng gói, deploy lên AWS, tự động tạo các IAM role, S3 bucket để lưu package, dĩ nhiên là các bạn có thể customize tất cả.
serverless deploy
Kết luận: Như các bạn cũng đã thấy ở trên thì việc triển khai một app serverless lên AWS cực kỳ dễ dàng. Ở phần tiếp theo mình sẽ giới thiệu một số plugin hữu ích mà mình đang dùng có thể sẽ hữu ích cho bạn.