- vừa được xem lúc

AWS AppSync là gì?

0 0 14

Người đăng: Đoàn Thế Vũ

Theo Viblo Asia

Giới thiệu chung

GraphQL là một ngôn ngữ truy vấn dữ liệu cho API (a query language for APIs) cho phép lập trình viên yêu cầu chính xác dữ liệu mà họ cần từ phía server. Không giống như REST API truyền thống, trong đó mỗi tài nguyên thường có một endpoint riêng, GraphQL cho phép định nghĩa các truy vấn tùy chỉnh để truy xuất dữ liệu từ nhiều nguồn khác nhau chỉ bằng 1 request. Điều này giúp giảm thiểu lưu lượng mạng và tối ưu hóa việc lấy dữ liệu, đồng thời cung cấp khả năng linh hoạt cao cho các ứng dụng cần phải làm việc với nhiều loại dữ liệu khác nhau.

AWS AppSync là một dịch vụ quản lý bởi Amazon Web Services (AWS). Với AWS AppSync, bạn có thể dễ dàng xây dựng các API GraphQL mà không cần quản lý cơ sở hạ tầng phức tạp. Dịch vụ này cung cấp khả năng kết nối với nhiều nguồn dữ liệu khác nhau như Amazon DynamoDB, AWS Lambda, Amazon OpenSearch và nhiều dịch vụ AWS khác. Điều này giúp bạn tập trung vào việc phát triển chức năng của ứng dụng mà không phải lo lắng về việc quản lý cơ sở hạ tầng.

Trong phạm vi bài viết này, ta sẽ đi không đi sâu vào giải thích các khái niệm về GraphQL mà sẽ tìm hiểu về cách AWS AppSync hỗ trợ trong việc xây dựng GraphQL API.

Kiến trúc tổng quan của Appsync

Nguồn ảnh: AWS

Schema

Là phần quan trọng định nghĩa cấu trúc của API GraphQL, xác định các types, queries, mutations và subscriptions mà ứng dụng hỗ trợ

Resolvers

Là các hàm hoặc logic xử lý query và mutation từ client. Resolver hoạt động như cầu nối giữa schema và nguồn dữ liệu thực tế, cho phép bạn kiểm soát cách dữ liệu được truy vấn và trả về. Khi một query GraphQL được gửi từ client đến AWS AppSync, resolver tương ứng với query được kích hoạt.

Resolver đọc thông tin từ truy vấn (loại truy vấn, đối tượng, tham số), sử dụng thông tin này để xác định cách truy xuất dữ liệu từ nguồn dữ liệu cụ thể (DynamoDB, Lambda, Opensearch, …) Sau khi dữ liệu được truy xuất, resolver sẽ xử lý nó, thực hiện bất kỳ biến đổi hoặc xử lý nào cần thiết, sau đó trả về dữ liệu cho client theo định dạng mà đã được định nghĩa trong schema.

Có 2 loại resolver:

  • Unit resolver: là các thực thể độc lập chỉ bao gồm request template và response template. Thường được sử dụng cho các thao tác đơn giản, chẳng hạn như liệt kê các item từ một datasource.
    • Request template: Chuyển request ở cấu trúc GraphQL operations thành config mà datasource hiểu được
    • Response template: Chuyển response từ datasource và format output của GraphQL
  • Pipeline resolver: chứa một hoặc nhiều functions được thực hiện theo thứ tự tuần tự. Mỗi function bao gồm một request template và một response template. Ngoài ra, pipeline resolver còn có có before template và after template. After template ánh xạ tới type của GraphQL output.
    • Các hàm của pipeline resolver cho phép ta viết logic chung để tái sử dụng trên nhiều resolver thành phần. Các hàm được liên kết trực tiếp với một datasource và cũng chứa request template và response template giống với 1 unit resolver

Nguồn ảnh: AWS

Data Sources

Là các nguồn dữ liệu mà AppSync có thể truy vấn. Datasource có thể là Amazon DynamoDB, AWS Lambda, Amazon Elasticsearch, HTTP endpoints, và nhiều dịch vụ AWS khác. Mỗi data source cung cấp các tương tác cụ thể với nguồn dữ liệu liên quan.

Ưu điểm của AppSync

  • Serverless: AWS AppSync là một dịch vụ serverless, điều này giúp bạn tập trung vào việc phát triển chức năng của ứng dụng mà không cần lo lắng về việc quản lý server. Dịch vụ sẽ tự động mở rộng theo nhu cầu của ứng dụng, đảm bảo hiệu suất tốt ngay cả trong các tình huống nhiều request.
  • GraphQL Schema và Resolvers: AppSync cho phép định nghĩa schema GraphQL và Resolvers một cách dễ dàng, giúp bạn kiểm soát cách dữ liệu được truy vấn và thay đổi.
  • Tích Hợp Dịch Vụ AWS: AppSync tích hợp dễ dàng với các dịch vụ khác của AWS như Amazon DynamoDB, AWS Lambda, Amazon Elasticsearch và nhiều dịch vụ khác. Điều này cho phép bạn tận dụng các dịch vụ khác để xây dựng ứng dụng phức tạp.
  • Bảo Mật và Quản Lý Quyền Truy Cập: AppSync hỗ trợ nhiều cơ chế bảo mật: API key, IAM, OpenID Connect, Lambda, Cognito.

Một vài ứng dụng đặc biệt của AppSync

Real-time subscription

Nguồn ảnh: AWS

Cách Real-time Subscriptions hoạt động:

  • Định nghĩa Subscriptions trong Schema: Trong schema của bạn, bạn có thể định nghĩa các subscriptions cho các trường dữ liệu mà bạn muốn ứng dụng có khả năng theo dõi thay đổi. Ví dụ: bạn có thể định nghĩa một subscription để theo dõi sự thay đổi khi có message mới.
  • Khi Người Dùng Đăng Ký Subscription: Khi người dùng đăng ký một subscription cụ thể, client sẽ thiết lập một kết nối thời gian thực với AWS AppSync.
  • Thay Đổi Dữ Liệu: Khi có sự thay đổi xảy ra trong nguồn dữ liệu liên quan đến subscription, resolver tương ứng với subscription đó sẽ được kích hoạt.
  • Gửi Dữ Liệu cho Client: Resolver sẽ xử lý sự thay đổi và gửi thông tin tới client thông qua kết nối thời gian thực đã được thiết lập.

Appsync Offline

Nguồn ảnh: AWS

Cách Offline Data hoạt động:

  • Khi ứng dụng có kết nối mạng, các query và mutation sẽ được thực hiện bình thường và dữ liệu sẽ được đồng bộ hóa với nguồn dữ liệu chính.
  • Khi ứng dụng không có kết nối mạng, các truy vấn và mutations sẽ được lưu trữ tạm thời trong bộ nhớ đệm trên thiết bị.
  • Khi kết nối mạng được khôi phục, AppSync sẽ tự động đồng bộ hóa dữ liệu tạm thời với nguồn dữ liệu chính, đảm bảo rằng dữ liệu mới nhất được cập nhật.

Tổng kết

Trên đây là phần giới thiệu tổng quan về AWS AppSync. Ngoài những tính năng đã đề cập ở trên, AppSync còn rất nhiều ứng dụng nâng cao khác. Nếu như muốn tìm hiểu thêm về Appsync, các bạn có thể tham khảo thêm các đường link sau.

Hy vọng bài viết này sẽ giúp ích với các bạn đang có ý định xây dựng hệ thống sử dụng GraphQL và AWS AppSync.

Bình luận

Bài viết tương tự

- vừa được xem lúc

PDF Export, cẩn thận với những input có thể truyền vào

Giới thiệu. Dạo gần đây mình tình cờ gặp rất nhiều lỗi XSS, tuy nhiên trang đó lại có sử dụng dữ liệu người dùng input vào để export ra PDF.

0 0 66

- vừa được xem lúc

Giới thiệu về AWS Batch

Khi sử dụng hệ thống cloud service, điều chúng ta thường phải quan tâm đến không chỉ là hiệu suất hoạt động (performance) mà còn phải chú ý đến cả chi phí bỏ ra để duy trì hoạt động của hệ thống. Chắn hẳn là hệ thống lớn hay nhỏ nào cũng đã từng phải dùng đến những instance chuyên để chạy batch thực

0 0 143

- vừa được xem lúc

Tìm hiểu về AWS KMS

1. AWS KMS là gì. Ở KMS bạn có thể lựa chọn tạo symetric key (khóa đối xứng) hoặc asymetric key (khóa bất đối xứng) để làm CMK (Customer Master Key). Sau khi tạo key thì có thể thiết đặt key policy để control quyền access và sử dụng key.

0 0 66

- vừa được xem lúc

AWS VPC cho người mới bắt đầu

Tuần này, tôi trình bày lại những gì tôi đã học được về Virtual Private Cloud (VPC) của Amazon. Nếu bạn muốn xem những gì tôi đã học được về AWS, hãy xem Tổng quan về DynamoDB và Tổng quan về S3. VPC là gì. Những điều cần lưu ý:.

0 0 84

- vừa được xem lúc

AWS Essentials (Phần 6): Guildline SNS Basic trên AWS

Tiếp tục với chuỗi bài viết về Basic AWS Setting, chúng ta tiếp tục tìm hiểu tiếp tới SNS (Simple Notification Service). Đây là một service của AWS cho phép người dùng setting thực hiện gửi email, text message hay push notification tự động tới mobile device dựa trên event người dùng setting phía AWS

0 0 145

- vừa được xem lúc

Sử dụng Amazon CloudFront Content Delivery Network với Private S3 Bucket — Signing URLs

Trong nhiều trường hợp, thì việc sử dụng CDN là bắt buộc. Mình đã trải nghiệm với một số CDN nhưng cuối cùng mình lựa chọn sử dụng AWS CloudFront.

0 0 117