I just want to avoid use of custom/manual resolvers in appsync completely. So I’m using Amplify to setup GraphQL appsync API in my app. I’m doing all the stuffs by changing schema.graphql
and amplify push
.
I have 2 questions :
1. What are the limitations and what problems I’m going to face in future?
2. Can graphql subscriptions get update when app is not running(like user should be notified)?
2
Answers
Just to preamble these answers, the fact that you use an amplify generated graphQL and resolvers doesn’t stop you from later including custom resolvers and pipeline functions – it’s just that you need to learn quite a bit about where to include them in the backend file structure of amplify.
This depends on how well your applications use-case matches the graphQL schema design and if your application is relatively self-contained. Amplify becomes more complex when your application needs to talk to other back-end systems, you’ll need to start using DynamoDB triggers to notify other state machines/event bridge/SNS or similar services.
As mentioned none of these problems are crippling, you can deal with them later but it will be a step up in the AWS knowledge required to implement them.
For small high-volume/availability apps Amplify and DynamoDB as-it-comes is great. If your application matures into many micro-services and sites then you’ll need to learn quite a bit more AWS to make them play together well. Amplify does determine your DynamoDB on a table per object basis and you’ll probably be stuck with (paying for) that. Think hard about if you ever might want to go to a different optimised data source (RDS or single dynamo table) to reduce the number of queries required to fulfil your graphQL requests.
No. Anurag mentions SNS which would be a good option to out-app notify users, best to blend subscriptions and another service.