I've been experimenting with AppSync and it seems promising. The only thing I hem and haw about is the resolver templates, which are written in VTL (as opposed to JS). I asked the core devs about this on Twitter and they said it's so they can have a deterministic bound on the execution time for resolvers against Dynamo. Still, seems to me like giving the option of lightweight JS resolvers with bounded execution time would be a good feature. I know you have this option with Lambda, but then you run into the "cold start" issues on a per resolver basis.<p>Other than that, it seems like a great stack. It's scalable and has all the right features baked in to build a prod-ready app. I feel really productive when I'm using it.<p>After seeing Cloudflare's superior performance with their service workers at the edge (over AWS Lambda), and seeing both AppSync and Prisma and Apollo, I'm wondering if we couldn't get a stack like:<p>1) Service workers at the edge, globally distributed JS running in V8 isolates, that work as GraphQL resolvers against a globally distributed DB like Cosmos on Azure.
2) Built-in websockets/subscriber support either handled at the edge or from AWS/Azure/etc
3) Global caching via Apollo Engine
4) A cleaner DB abstraction like Prisma offers over Postgres<p>^^ seems to me like we're getting close to this realization of being able to just ship serverless code, have it automatically geo-replicated and cached for low latency, quick response times, and without having to worry about dev ops. These are huge productivity wins for devs.
I've been using AppSync on an iOS project for the past few months. Really loving it so far. Not only does it enable a serverless GraphQL API, but it also makes it super easy to implement offline-first functionality and data syncing
This is great! Thanks! I've built few GraphQL API's with Serverless and have always wondered if AppSync was the best way to handle Subscriptions, and have also never seen a decent implementation like this.