AWS Amplify (edit)
Như chúng ta đã biết, cloud platform đã trở thành xu thế lập trình phổ biến từ nhiều năm nay, việc sử dụng các service như:
- Google Cloud Storage hay Amazon S3 để lưu trữ file
- Google Cloud Datastore/Cloud Bigtable hay Amazon DynamoDB để lưu trữ dữ liệu không cấu trúc(NoSQL)
- Google Cloud Stackdriver Logging hay Amazon CloudWatch Logs đễ ghi log
...
gần như đã trở thành kỹ năng quen thuộc với mỗi developer.
Cùng với sự phổ biến của cloud platform, thì thời gian gần đây kiến trúc serverless trên nền tảng cloud cũng đang là 1 chủ để khá nóng với những lợi ích như:
- Giảm bớt khâu maintain hệ thống, giúp khách hàng tiết kiệm chi phí và giảm sự phụ thuộc vào bên cung cấp dịch vụ outsourcing
- Tính năng tự động scale hệ thống để tương thích với lượng truy cập bất thường từ users
- Dễ dàng tích hợp với các service mới đang ngày càng được mở rộng trên nền tàng cloud
Nhưng kiến trúc này cũng đòi hỏi developer ngoài việc biết sử dụng các dịch vụ cơ bản của cloud như đã nêu ở trên, thì cũng phải có ít nhiều kiến thức về các cloud service cần thiết khác dùng để setting kiến trúc serverless.
Ví dụ như trên môi trường AWS, để setting được kiến trúc serverless, bạn cần biết cách setting lambda, api gateway, cognito, cloudfront và có thể là cả cloudformation nữa.
Một bài toan đặt ra là làm sao để 1 frontend developer vốn chỉ quen với các code Js hay native app (iOS, Android) có thể ngay lập tức xây dựng được 1 ứng dụng serverless theo yêu cầu của khách hàng?
Cũng có thể đặt vấn đề theo 1 cách khác là: Giải pháp nào để xây dựng một ứng dụng nặng về giao diện và cloud service với chi phí thấp nhất và thời gian nhanh nhất?
Ví dụ:
Khách hàng yêu cầu tạo 1 website vẽ biểu đồ điện tim đồ của bệnh nhân với dữ liệu lấy từ AWS Athena. Với cách tiếp cận thông thường, chúng ta cần xây dựng team dev cới các thành viên sau:
- frontend dev chịu tránh nhiện xây dựng giao diện
- backend dev xây dựng API lấy dữ liệu từ AWS Athena và trả về cho tầng frontend
- devops dev cài đặt cấu hình web server, quản lý deploy, release, mornitoring.
- cloud dev tạo/quản lý tài nguyên trên AWS
Sau khi release hệ thống cho khách hàng xong thì vẫn cần giữ lại ít nhất 1 dev để maintain hệ thống. Với dự án to thì cấu trúc team như này có thể vẫn cần thiết, nhưng với dự án nhỏ thì sẽ khá là cồng kềnh và tốn kém.
AWS Amplify có thể sẽ là lời giải cho bài toán này. Một ông frontend dev dành 1, 2 tuần tìm hiểu về AWS Amplify, đọc thêm một chút về AWS SDK cho Athena là có thể tự mình thực hiện tất cả các role nêu ở trên.
Vậy AWS Amplify là gì?
Thành phần
AWS Amplify cho iOS:
AWS Amplify cho Android:
- AWS Amplify CLI: Tạo/quản lý serverless backend, web hosting. Gen code tự động
- AWS SDK cho Android
AWS Amplify cho Web/Đa nền tảng:
- Amplify CLI: Tạo/quản lý serverless backend, web hosting. Gen code tự động
- Amplify JavaScript library: Thư viện hỗ trợ truy cập AWS resources
- UI component libraries: Thư viện UI tương thích với React, React Native, Angular/Ionic, Vue
- AWS SDK cho JavaScript