@manhng

Welcome to my blog!

AWS Amplify

August 4, 2021 22:30

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ì?

- Là bộ framework và công cụ hỗ trợ tích hợp backend (sử dụng các service cua AWS) với frontend trên các nền tảng:
   iOS
   Android 
   Web (React, Angular/Ionic, Vue)
   Đa nền tảng (React native)
- Hỗ trợ tự động cấu hình tài nguyên AWS cần thiết, deploy code, gen code tự động

Thành phần

AWS Amplify cho iOS:

- AWS Amplify CLI: Tạo/quản lý serverless backend, web hosting. Gen code tự động
- AWS SDK 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

Tính năng và tiện ích

Tính năng:

Analytics: 
- Cho phép thu thập analytics data từ Amazon Pinpoint, Amazon Kinesis
Interactions:
- Tích hợp Amazon Lex, cung cấp AI-powered chatbots
API:
- Cho phép xây dựng REST API và Graph API:
      - REST API được tích hợp từ AWS API Gateway và AWS Lambda:
         - Là trái tim của hệ thống
         - Thông qua ́REST API có thể tương tác với mọi service của AWS
PubSub:
- Tích hợp AWS IoT và Generic MQTT Over WebSocket Providers, cung cấp tính năng gừi/nhận message đến AWS IOT
Authentication: 
- Tích hợp Amazon Cognito, cung cấp API cho việc quản lý users
Push Notifications:
- Tích hợp Amazon Pinpoint, cung cấp tính năng Push notifications
Storage: 
- Tích hợp Amazon S3, cung cấp tính năng lưu trữ files
- Tích hợp Amazon DynamoDB, cung cấp tính năng lưu trữ dữ liệu nosql
XR:
- Tích hợp Amazon Sumerian, hỗ trợ thực tế ảo (VR) và thực tế tăng cường (AR)

Tiện ích:

Cache: 
- Cung cấp LRU cache cho JavaScript
Hub:
- Local event bus system theo mô hình Publisher-Subscriber, cung cấp tính năng chia sẻ dữ liệu giữa các modules và components trong ứng dụng
I18n:
- Hỗ trợ giao diện đa ngôn ngữ
Logger:
- Hỗ trợ ghi log
Service Workers: 
- Hỗ trợ Push APIs, cho phép nghe và nhận message từ Push events.

Bắt đầu học AWS Amplify từ đâu?

iOS: https://aws-amplify.github.io/docs/ios/start
Android: https://aws-amplify.github.io/docs/android/start
Web/Đa nền tảng: https://aws-amplify.github.io/docs/js/start?platform=purejs

Categories

Recent posts