SlideShare a Scribd company logo
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
BENGALURU
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AppSync in the Real World
ADITHYA REDDY | SDE @ BRANCH FINANCIAL
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What is AppSync
• “Build data-driven apps with real-time and offline capabilities”
• Fully managed, serverless GraphQL service
• Client SDKs + Offline programming model
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Clients
iOS
Android
JS
Managed
Datastores
RDS
DynamoDB
Neptune
Middle-Tier
K8s
Docker
VMs
Storage
Streams
Search
Logging
Auth
ETL
Analytics
Validation
Logic
You operate You don’t operate
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Clients
iOS
Android
JS
Managed
Datastores
RDS
DynamoDB
Neptune
Middle-Tier
K8s
Docker
VMs
S3
Kinesis
ES Service
CloudWatch
Cognito
EMR
Athena
Validation
Logic
You operate You don’t operate
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Hub for all your managed services
• Provide a single unified API layer over all your data sources.
• Fetch, shape, transform, and aggregate data into exactly
what the client asked for.
• Replace the middle layer of (most) apps.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• Validating requests and payloads
• Authentication
• Fine-grained permissions
• Access control
What AppSync can do
• Fetching/writing data to/from data sources
• Real-time updates
• Offline with optimistic UI updates
• Resolving data conflicts
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GraphQL
101
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
A strongly typed, declarative
query language for APIs.
graphql.org
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Describe your data with a schema
type Tweet {
id: ID
body: String
date: Date
Author: User
}
type User {
id: ID
username: String
tweets: [Tweet]
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Queries and Mutations
type Query {
getTweet(id: ID): Tweet
allTweets: [Tweet]
}
type Mutation {
newTweet(body: String): Tweet
newUser(username: String): User
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ask for exactly the data you need
query {
getUser(id: "123") {
username
tweets {
body
date
}
}
}
{
"username": "...",
"tweets": [
{
"body": "...",
"date": "..."
},
{
"body": "...",
"date": "..."
},
]
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Subscriptions
type Subscription {
userTweeted(id: ID): Tweet
@aws_subscribe(mutations: ["newTweet"])
}
Subscription {
userTweeted(id: "jdoe123") {
body
}
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• DynamoDB
• Elasticsearch
• Lambda
• HTTP
• Everything else (via Lambda)
Data Sources
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Resolvers
• Translate GraphQL requests to / from formats your data sources understand.
• Request and response mapping templates.
• Apache VTL (Velocity Template Language).
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Request Mapping
Template
Response Mapping
Template
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
{
"version": "2017-02-28",
"operation": "PutItem",
"key": {
"requestId": { "S": $util.autoId() }
},
"attributeValues": {
"timestamp": { "S": $util.time.nowISO8601() },
"requesterName": { "S": $context.args.name },
"requesterPhone": { "S": $context.args.phone }
}
}
mutation {
requestCall(
name: String!,
phone: String!
): Boolean
}
DynamoDB PutItem
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
#set($moistures = [])
#foreach($reading in ${context.args.moisture})
$util.qr($moistures.add($util.dynamodb.toMapValues($reading)))
#end
#set($pHs = [])
#foreach($reading in ${context.args.pH})
$util.qr($pHs.add($util.dynamodb.toMapValues($reading)))
#end
{
"version": "2018-05-29",
"operation": "BatchPutItem",
"tables": {
"moistureReadings": $util.toJson($moistures),
"pHReadings": $util.toJson($pHs)
}
}
input Moisture {
timestamp: String
value: Float
}
input pH {
timestamp: String
value: Float
}
mutation {
record(
moisture: [Moisture],
pH: [pH]
)
}
DynamoDB Multi-Table Batch PutItem
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Field Resolvers
type Post {
id: ID!
text: String
comments: [Comment]
}
type Comment {
postId: ID!
commentId: String!
text: String
}
Posts
id text
Comments
postId commentId text
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Field Resolvers
type Post {
id: ID!
text: String
comments: [Comment]
}
type Comment {
postId: ID!
commentId: String!
text: String
}
{
"version": "2017-02-28",
"operation": "Query",
"query": {
"expression": "postId = :postId",
"expresssionValues": {
":postId": { "S": "$context.source.id" }
}
}
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
More things you can do
• Pagination & Scans (limit, nextToken)
• Multi-table Batch Get / Update / Delete
• Conditional Get / Put / Update / Delete (via Conditional Expressions)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• API Key
• AWS IAM (access key + secret key / Cognito Federated Identities)
• Cognito User Pools
Security
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
context.identity
{
"sub": "...uuid...",
"username": "...",
"claims": { ...x },
"cognitoIdentityId": "...",
"cognitoIdentityPoolId": "..."
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
type Mutation {
addPost(id: ID!, title: String!): Post!
@aws_auth(cognito_groups: [“Bloggers", "Admins"])
}
Using Cognito Groups
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
"condition": {
"expression": “contains(#author, :username)",
"expressionNames": {
"#author": "Author"
},
"expressionValues": {
“:username": { "S": "${context.identity.username}" }
}
}
Proceed only if author field matches username
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
• JavaScript (+ React, Angular, Vue.js)
• React Native
• iOS (Objective-C / Swift)
• Android (Java / Kotlin)
AppSync Client SDKs
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
.NET Clojure
GoElixir PHP Scala
RubyPython
Standards Compliant GraphQL Clients
Unity
Perl
Extras (offline support / optimistic updates) library dependent
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Amplify Apollo
• Auth
• Storage
• Analytics
• Notifications
• Declarative data fetching
• Normalized write-through cache
• Optimistic UI
• Deferred queries
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Online
UI Component
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Offline
UI Component
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Back Online
UI Component
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
React Example
GET_POSTS = gql`
{
posts {
title
publishDate
previewText
}
}
`;
<Query query={GET_POSTS}>
{({ loading, data }) => {
if (loading) return <LoadingSpinner />;
return <PostsList data={data.posts} />;
}}
</Query>
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Optimistic UI
UI Component
message {
timestamp: "2018-09-30T23:43:05+05:30"
text: "Hello",
sent: False
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Optimistic UI
UI Component
message {
timestamp: "2018-09-30T23:43:05+05:30"
text: "Hello",
sent: True
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Branch’s Architecture
Other
services
Customer
Apps
Staff
Staff
AppSync
Customer
AppSync
Customer Auth Staff Auth
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What we love 😍
• Much much much less code!
• No VMs, no containers to orchestrate, no uptime / reliability issues.
• Tightly integrated dev/ops workflow.
• Focus on what sets your business apart, instead of re-inventing the wheel.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
What isn’t so great 😕
• No first-class RDS support (have to go through Lambda).
• HTTP resolvers only work for public APIs — have to go through Lambda for endpoints
inside VPCs.
• Resolver mapping templates are hard to debug.
• Need a Lambda function to index DynamoDB into Elasticsearch (super common).
• Terraform support lagging behind.
• Subscription updates are only triggered by mutations — not by external sources.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Adithya Reddy
@TheTallpants
github.com/tallpants
TheTallpants@gmail.com

More Related Content

What's hot

AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...
AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...
AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...Amazon Web Services
 
Building Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLBuilding Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLAmazon Web Services
 
Non-Relational Revolution: Database Week SF
Non-Relational Revolution: Database Week SFNon-Relational Revolution: Database Week SF
Non-Relational Revolution: Database Week SFAmazon Web Services
 
Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Amazon Web Services
 
Itemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integrationItemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integration{item:foo}
 
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...Amazon Web Services
 
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Amazon Web Services
 
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...Amazon Web Services
 
CData Power BI Connectors
CData Power BI ConnectorsCData Power BI Connectors
CData Power BI ConnectorsJerod Johnson
 
Big Data - EBC on the road Brazil Edition [Portuguese]
Big Data - EBC on the road Brazil Edition [Portuguese]Big Data - EBC on the road Brazil Edition [Portuguese]
Big Data - EBC on the road Brazil Edition [Portuguese]Amazon Web Services
 
SQL for Web APIs - Simplifying Data Access for API Consumers
SQL for Web APIs - Simplifying Data Access for API ConsumersSQL for Web APIs - Simplifying Data Access for API Consumers
SQL for Web APIs - Simplifying Data Access for API ConsumersJerod Johnson
 
Amazon Rekognition: Deep Learning-Based Image and Video Analysis
Amazon Rekognition: Deep Learning-Based Image and Video AnalysisAmazon Rekognition: Deep Learning-Based Image and Video Analysis
Amazon Rekognition: Deep Learning-Based Image and Video AnalysisAmazon Web Services
 
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...Amazon Web Services
 
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018Amazon Web Services
 
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018Amazon Web Services
 
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018Amazon Web Services
 
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...Amazon Web Services
 

What's hot (20)

AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...
AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...
AWS Security Week: Cloud-Scale Authentication & Advanced Authorization with A...
 
Building Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLBuilding Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQL
 
Neptune webinar AWS
Neptune webinar AWS Neptune webinar AWS
Neptune webinar AWS
 
Non-Relational Revolution: Database Week SF
Non-Relational Revolution: Database Week SFNon-Relational Revolution: Database Week SF
Non-Relational Revolution: Database Week SF
 
Non-Relational Revolution
Non-Relational RevolutionNon-Relational Revolution
Non-Relational Revolution
 
Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28Neptune, the Graph Database | AWS Floor28
Neptune, the Graph Database | AWS Floor28
 
Itemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integrationItemscript, a specification for RESTful JSON integration
Itemscript, a specification for RESTful JSON integration
 
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...
Searching Your Data with Amazon Elasticsearch Service (ANT384) - AWS re:Inven...
 
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
Debugging Gluon and Apache MXNet (AIM423) - AWS re:Invent 2018
 
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...
[NEW LAUNCH!] How do I know I need a ledger database? An Introduction to Amaz...
 
CData Power BI Connectors
CData Power BI ConnectorsCData Power BI Connectors
CData Power BI Connectors
 
Big Data - EBC on the road Brazil Edition [Portuguese]
Big Data - EBC on the road Brazil Edition [Portuguese]Big Data - EBC on the road Brazil Edition [Portuguese]
Big Data - EBC on the road Brazil Edition [Portuguese]
 
SQL for Web APIs - Simplifying Data Access for API Consumers
SQL for Web APIs - Simplifying Data Access for API ConsumersSQL for Web APIs - Simplifying Data Access for API Consumers
SQL for Web APIs - Simplifying Data Access for API Consumers
 
Amazon Rekognition: Deep Learning-Based Image and Video Analysis
Amazon Rekognition: Deep Learning-Based Image and Video AnalysisAmazon Rekognition: Deep Learning-Based Image and Video Analysis
Amazon Rekognition: Deep Learning-Based Image and Video Analysis
 
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...
[NEW LAUNCH!] How to build and deploy Windows file system in AWS using Amazon...
 
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018
Business Process Automation Using Crowdsourcing (AIM352) - AWS re:Invent 2018
 
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
 
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018
Building IoT Devices for Regulated Industries (LFS304-i) - AWS re:Invent 2018
 
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...
Leadership Session: Accelerating Transformation in the Life Sciences (LFS201-...
 
Accelerated Data Lakes Webinar
Accelerated Data Lakes WebinarAccelerated Data Lakes Webinar
Accelerated Data Lakes Webinar
 

Similar to AppSync in real world - pitfalls, unexpected benefits & lessons learnt

Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Amazon Web Services
 
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdfMonetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdfAmazon Web Services
 
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify Amazon Web Services
 
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018Amazon Web Services
 
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...Amazon Web Services
 
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Amazon Web Services
 
Building Real-time Serverless Backends with GraphQL
Building Real-time Serverless Backends with GraphQLBuilding Real-time Serverless Backends with GraphQL
Building Real-time Serverless Backends with GraphQLAmazon Web Services
 
Introduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSIntroduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSAmazon Web Services
 
Building Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLBuilding Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLAmazon Web Services
 
Build your APPs in Lean and Agile Way using AWS Amplify
Build your APPs in Lean and Agile Way using AWS AmplifyBuild your APPs in Lean and Agile Way using AWS Amplify
Build your APPs in Lean and Agile Way using AWS AmplifyAmazon Web Services
 
Building mobile apps that can automatically scale globally to millions of use...
Building mobile apps that can automatically scale globally to millions of use...Building mobile apps that can automatically scale globally to millions of use...
Building mobile apps that can automatically scale globally to millions of use...AWS Germany
 
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...Amazon Web Services
 
Building Real-time Serverless Backends
Building Real-time Serverless BackendsBuilding Real-time Serverless Backends
Building Real-time Serverless BackendsAmazon Web Services
 
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...Amazon Web Services
 
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...Amazon Web Services
 
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Amazon Web Services
 
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018Amazon Web Services
 
Advanced Serverless application architecture and design considerations
Advanced Serverless application architecture and design considerationsAdvanced Serverless application architecture and design considerations
Advanced Serverless application architecture and design considerationsDilip Kola
 
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018Amazon Web Services
 
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAmazon Web Services
 

Similar to AppSync in real world - pitfalls, unexpected benefits & lessons learnt (20)

Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
Ten Tips And Tricks for Improving Your GraphQL API with AWS AppSync (MOB401) ...
 
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdfMonetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
Monetize Your Mobile App with Amazon Mobile Ads (MOB311) - AWS reInvent 2018.pdf
 
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
 
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018
Developing Well-Architected Android Apps with AWS (MOB302) - AWS re:Invent 2018
 
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...
Develop Cross-Platform Mobile Apps with React Native, GraphQL, & AWS (MOB324)...
 
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
Optimize Your SaaS Offering with Serverless Microservices (GPSTEC405) - AWS r...
 
Building Real-time Serverless Backends with GraphQL
Building Real-time Serverless Backends with GraphQLBuilding Real-time Serverless Backends with GraphQL
Building Real-time Serverless Backends with GraphQL
 
Introduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOSIntroduction to GraphQL and AWS Appsync on AWS - iOS
Introduction to GraphQL and AWS Appsync on AWS - iOS
 
Building Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQLBuilding Real-Time Serverless Backends with GraphQL
Building Real-Time Serverless Backends with GraphQL
 
Build your APPs in Lean and Agile Way using AWS Amplify
Build your APPs in Lean and Agile Way using AWS AmplifyBuild your APPs in Lean and Agile Way using AWS Amplify
Build your APPs in Lean and Agile Way using AWS Amplify
 
Building mobile apps that can automatically scale globally to millions of use...
Building mobile apps that can automatically scale globally to millions of use...Building mobile apps that can automatically scale globally to millions of use...
Building mobile apps that can automatically scale globally to millions of use...
 
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...
The Theory and Math Behind Data Privacy and Security Assurance (SEC301) - AWS...
 
Building Real-time Serverless Backends
Building Real-time Serverless BackendsBuilding Real-time Serverless Backends
Building Real-time Serverless Backends
 
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...
Authentication & Authorization in GraphQL with AWS AppSync (MOB402) - AWS re:...
 
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...
Build, Deploy, and Serve Machine Learning Models on Streaming Data (ANT345-R1...
 
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
Build a Searchable Media Library & Moderate Content at Scale Using Machine Le...
 
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018
 
Advanced Serverless application architecture and design considerations
Advanced Serverless application architecture and design considerationsAdvanced Serverless application architecture and design considerations
Advanced Serverless application architecture and design considerations
 
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018
Executing a Large Scale Migration to AWS (ENT337-R2) - AWS re:Invent 2018
 
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the CloudAWS Neptune - A Fast and reliable Graph Database Built for the Cloud
AWS Neptune - A Fast and reliable Graph Database Built for the Cloud
 

More from AWS User Group Bengaluru

Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3AWS User Group Bengaluru
 
Building Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSBuilding Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSAWS User Group Bengaluru
 
Exploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerExploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerAWS User Group Bengaluru
 
Slack's transition away from a single AWS account
Slack's transition away from a single AWS accountSlack's transition away from a single AWS account
Slack's transition away from a single AWS accountAWS User Group Bengaluru
 
Building Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSBuilding Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSAWS User Group Bengaluru
 
Medlife's journey with AWS from 0(zero) orders to 6 digit mark
Medlife's journey with AWS from 0(zero) orders to 6 digit markMedlife's journey with AWS from 0(zero) orders to 6 digit mark
Medlife's journey with AWS from 0(zero) orders to 6 digit markAWS User Group Bengaluru
 
Exploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerExploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerAWS User Group Bengaluru
 
Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3AWS User Group Bengaluru
 

More from AWS User Group Bengaluru (20)

Demystifying identity on AWS
Demystifying identity on AWSDemystifying identity on AWS
Demystifying identity on AWS
 
AWS Secrets for Best Practices
AWS Secrets for Best PracticesAWS Secrets for Best Practices
AWS Secrets for Best Practices
 
Cloud Security
Cloud SecurityCloud Security
Cloud Security
 
Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3
 
Medlife journey with AWS
Medlife journey with AWSMedlife journey with AWS
Medlife journey with AWS
 
Building Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSBuilding Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWS
 
Exploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerExploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful career
 
Slack's transition away from a single AWS account
Slack's transition away from a single AWS accountSlack's transition away from a single AWS account
Slack's transition away from a single AWS account
 
Log analytics with ELK stack
Log analytics with ELK stackLog analytics with ELK stack
Log analytics with ELK stack
 
Serverless Culture
Serverless CultureServerless Culture
Serverless Culture
 
Refactoring to serverless
Refactoring to serverlessRefactoring to serverless
Refactoring to serverless
 
Amazon EC2 Spot Instances Workshop
Amazon EC2 Spot Instances WorkshopAmazon EC2 Spot Instances Workshop
Amazon EC2 Spot Instances Workshop
 
Building Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWSBuilding Efficient, Scalable and Resilient Front-end logging service with AWS
Building Efficient, Scalable and Resilient Front-end logging service with AWS
 
Medlife's journey with AWS from 0(zero) orders to 6 digit mark
Medlife's journey with AWS from 0(zero) orders to 6 digit markMedlife's journey with AWS from 0(zero) orders to 6 digit mark
Medlife's journey with AWS from 0(zero) orders to 6 digit mark
 
AWS Secrets for Best Practices
AWS Secrets for Best PracticesAWS Secrets for Best Practices
AWS Secrets for Best Practices
 
Exploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful careerExploring opportunities with communities for a successful career
Exploring opportunities with communities for a successful career
 
Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3Lessons learnt building a Distributed Linked List on S3
Lessons learnt building a Distributed Linked List on S3
 
Cloud Security
Cloud SecurityCloud Security
Cloud Security
 
Amazon EC2 Spot Instances
Amazon EC2 Spot InstancesAmazon EC2 Spot Instances
Amazon EC2 Spot Instances
 
Cost Optimization in AWS
Cost Optimization in AWSCost Optimization in AWS
Cost Optimization in AWS
 

Recently uploaded

GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Alison B. Lowndes
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...Product School
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 

Recently uploaded (20)

GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 

AppSync in real world - pitfalls, unexpected benefits & lessons learnt

  • 1. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. BENGALURU
  • 2. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AppSync in the Real World ADITHYA REDDY | SDE @ BRANCH FINANCIAL
  • 3. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What is AppSync • “Build data-driven apps with real-time and offline capabilities” • Fully managed, serverless GraphQL service • Client SDKs + Offline programming model
  • 4. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Clients iOS Android JS Managed Datastores RDS DynamoDB Neptune Middle-Tier K8s Docker VMs Storage Streams Search Logging Auth ETL Analytics Validation Logic You operate You don’t operate
  • 5. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Clients iOS Android JS Managed Datastores RDS DynamoDB Neptune Middle-Tier K8s Docker VMs S3 Kinesis ES Service CloudWatch Cognito EMR Athena Validation Logic You operate You don’t operate
  • 6. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Hub for all your managed services • Provide a single unified API layer over all your data sources. • Fetch, shape, transform, and aggregate data into exactly what the client asked for. • Replace the middle layer of (most) apps.
  • 7. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • Validating requests and payloads • Authentication • Fine-grained permissions • Access control What AppSync can do • Fetching/writing data to/from data sources • Real-time updates • Offline with optimistic UI updates • Resolving data conflicts
  • 8. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GraphQL 101
  • 9. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. A strongly typed, declarative query language for APIs. graphql.org
  • 10. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Describe your data with a schema type Tweet { id: ID body: String date: Date Author: User } type User { id: ID username: String tweets: [Tweet] }
  • 11. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Queries and Mutations type Query { getTweet(id: ID): Tweet allTweets: [Tweet] } type Mutation { newTweet(body: String): Tweet newUser(username: String): User }
  • 12. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ask for exactly the data you need query { getUser(id: "123") { username tweets { body date } } } { "username": "...", "tweets": [ { "body": "...", "date": "..." }, { "body": "...", "date": "..." }, ] }
  • 13. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Subscriptions type Subscription { userTweeted(id: ID): Tweet @aws_subscribe(mutations: ["newTweet"]) } Subscription { userTweeted(id: "jdoe123") { body } }
  • 14. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
  • 15. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • DynamoDB • Elasticsearch • Lambda • HTTP • Everything else (via Lambda) Data Sources
  • 16. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Resolvers • Translate GraphQL requests to / from formats your data sources understand. • Request and response mapping templates. • Apache VTL (Velocity Template Language).
  • 17. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Request Mapping Template Response Mapping Template
  • 18. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. { "version": "2017-02-28", "operation": "PutItem", "key": { "requestId": { "S": $util.autoId() } }, "attributeValues": { "timestamp": { "S": $util.time.nowISO8601() }, "requesterName": { "S": $context.args.name }, "requesterPhone": { "S": $context.args.phone } } } mutation { requestCall( name: String!, phone: String! ): Boolean } DynamoDB PutItem
  • 19. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. #set($moistures = []) #foreach($reading in ${context.args.moisture}) $util.qr($moistures.add($util.dynamodb.toMapValues($reading))) #end #set($pHs = []) #foreach($reading in ${context.args.pH}) $util.qr($pHs.add($util.dynamodb.toMapValues($reading))) #end { "version": "2018-05-29", "operation": "BatchPutItem", "tables": { "moistureReadings": $util.toJson($moistures), "pHReadings": $util.toJson($pHs) } } input Moisture { timestamp: String value: Float } input pH { timestamp: String value: Float } mutation { record( moisture: [Moisture], pH: [pH] ) } DynamoDB Multi-Table Batch PutItem
  • 20. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Field Resolvers type Post { id: ID! text: String comments: [Comment] } type Comment { postId: ID! commentId: String! text: String } Posts id text Comments postId commentId text
  • 21. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Field Resolvers type Post { id: ID! text: String comments: [Comment] } type Comment { postId: ID! commentId: String! text: String } { "version": "2017-02-28", "operation": "Query", "query": { "expression": "postId = :postId", "expresssionValues": { ":postId": { "S": "$context.source.id" } } } }
  • 22. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. More things you can do • Pagination & Scans (limit, nextToken) • Multi-table Batch Get / Update / Delete • Conditional Get / Put / Update / Delete (via Conditional Expressions)
  • 23. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • API Key • AWS IAM (access key + secret key / Cognito Federated Identities) • Cognito User Pools Security
  • 24. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. context.identity { "sub": "...uuid...", "username": "...", "claims": { ...x }, "cognitoIdentityId": "...", "cognitoIdentityPoolId": "..." }
  • 25. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. type Mutation { addPost(id: ID!, title: String!): Post! @aws_auth(cognito_groups: [“Bloggers", "Admins"]) } Using Cognito Groups
  • 26. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. "condition": { "expression": “contains(#author, :username)", "expressionNames": { "#author": "Author" }, "expressionValues": { “:username": { "S": "${context.identity.username}" } } } Proceed only if author field matches username
  • 27. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. • JavaScript (+ React, Angular, Vue.js) • React Native • iOS (Objective-C / Swift) • Android (Java / Kotlin) AppSync Client SDKs
  • 28. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. .NET Clojure GoElixir PHP Scala RubyPython Standards Compliant GraphQL Clients Unity Perl Extras (offline support / optimistic updates) library dependent
  • 29. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Amplify Apollo • Auth • Storage • Analytics • Notifications • Declarative data fetching • Normalized write-through cache • Optimistic UI • Deferred queries
  • 30. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Online UI Component
  • 31. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Offline UI Component
  • 32. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Back Online UI Component
  • 33. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. React Example GET_POSTS = gql` { posts { title publishDate previewText } } `; <Query query={GET_POSTS}> {({ loading, data }) => { if (loading) return <LoadingSpinner />; return <PostsList data={data.posts} />; }} </Query>
  • 34. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Optimistic UI UI Component message { timestamp: "2018-09-30T23:43:05+05:30" text: "Hello", sent: False }
  • 35. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Optimistic UI UI Component message { timestamp: "2018-09-30T23:43:05+05:30" text: "Hello", sent: True }
  • 36. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Branch’s Architecture Other services Customer Apps Staff Staff AppSync Customer AppSync Customer Auth Staff Auth
  • 37. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What we love 😍 • Much much much less code! • No VMs, no containers to orchestrate, no uptime / reliability issues. • Tightly integrated dev/ops workflow. • Focus on what sets your business apart, instead of re-inventing the wheel.
  • 38. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What isn’t so great 😕 • No first-class RDS support (have to go through Lambda). • HTTP resolvers only work for public APIs — have to go through Lambda for endpoints inside VPCs. • Resolver mapping templates are hard to debug. • Need a Lambda function to index DynamoDB into Elasticsearch (super common). • Terraform support lagging behind. • Subscription updates are only triggered by mutations — not by external sources.
  • 39. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Adithya Reddy @TheTallpants github.com/tallpants TheTallpants@gmail.com