Amazon AppSync uses GraphQL, a data language that enables client apps to fetch, change and subscribe to data from servers. In a GraphQL query, the client specifies how the data is to be structured when it is returned by the server. This makes it possible for the client to query only for the data it needs, in the format that it needs it in. GraphQL also includes a feature called “introspection” which lets new developers on a project discover the data available without requiring knowledge of the backend.
Real-time data access and updates
Amazon AppSync lets you specify which portions of your data should be available in a real-time manner using GraphQL Subscriptions. GraphQL Subscriptions are simple statements in the application code that tell the service what data should be updated in real-time.
Offline data synchronization
The Amplify DataStore provides a queryable on-device DataStore for web, mobile and IoT developers with a local-first and familiar programming model to interact with data seamlessly whether you’re online or offline. When combined with Amazon AppSync the DataStore can leverage advanced versioning, conflict detection and resolution in the cloud allowing to automatically merge data from different clients as well as providing data consistency and integrity.
Data querying, filtering, and search in apps
Amazon AppSync gives client applications the ability to specify data requirements with GraphQL so that only the needed data is fetched, allowing for both server and client filtering. Since Amazon AppSync supports Amazon Lambda, Amazon DynamoDB and Amazon Elasticsearch, the GraphQL operations can be simple lookups, complex queries & mappings, full text searches, fuzzy/keyword searches or geo lookups.
Amazon AppSync’s server-side data caching capabilities reduce the need to directly access data sources by making data available in high speed in-memory managed caches, delivering data at low latency. Being fully managed, it eliminates the operational overhead of managing cache clusters. By providing the flexibility to selectively cache data fields and operations defined in the GraphQL schema with customizable expiration, data caching further enables developers to configure optimal performance for their business needs.
Enterprise security and fine-grained access control
Amazon AppSync allows several levels of data access and authorization depending on the needs of an application. Simple access can be protected by a key and more restrictive permission can be done with Amazon Identity and Access Management using Roles. Additionally, Amazon AppSync integrates with Amazon Cognito User Pools for email and password functionality, social providers (Facebook, Google+, and Login with Amazon), and enterprise federation with SAML. Customers can use the Group functionality for logical organization of users and roles as well as OAuth features for application access.