Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mutating Meetup with GraphQL

Annyce D.
September 19, 2023

Mutating Meetup with GraphQL

Over the past three years, Meetup has undergone a transformation from relying on REST APIs to fully embracing GraphQL. Despite the many benefits, it hasn't been without its challenges.

In this talk, I'll cover the benefits of using GraphQL in production, such as how it can streamline API development and improve data retrieval. I'll also discuss common challenges that arise when implementing GraphQL in production and share best practices for addressing them. Specifically, I'll touch on:

* Schema design considerations
* Caching strategies
* Monitoring and performance optimization
* Tools and frameworks for implementing GraphQL in production

Look forward to gaining valuable insights and practical advice for implementing GraphQL in production!

Annyce D.

September 19, 2023
Tweet

More Decks by Annyce D.

Other Decks in Technology

Transcript

  1. @brwngrldev 01 Key challenges we’ve faced 03 02 Poor architecture

    setup Insufficient to no caching Steep learning curve
  2. @brwngrldev $29k savings each month on AWS bill Get rid

    of the middle-man We’ve seen increased performance and lower costs
  3. @brwngrldev Adding appropriate caching at each layer Hitting the database

    for each request is not ideal. Caching helps to reduce the database I/O from: aws.amazon.com/aws-cost-management/aws-cost-explorer/features
  4. @brwngrldev request promise #1 promise #2 promise #n data data

    data member data loader group data loader
  5. @brwngrldev query member($id: ID!) { member(id: $id) { __typename id

    name email } } 01 02 query member($id: ID!) { member(id: $id) { __typename id name } }
  6. @brwngrldev Caching won’t work if the queries and mutations aren’t

    set up right Wait, shouldn’t I know about this?!
  7. @brwngrldev Reducing duplicate data in the cache // Apollo Kotlin

    extend type Query @ fi eldPolicy(forField: "group", keyArgs: "id") // Apollo React group: { read(_, { args, toReference }) { return toReference({ __typename: 'Group', id: args.id }); } }
  8. @brwngrldev Automate what you can add_tags: needs: fi lterChanges steps:

    - name: Add GraphQL label to PR if: ${{ needs. fi lterChanges.outputs.graphql == 'true' }} run: | PAYLOAD='{"labels":["graphql"]}' LABEL_URL=${{github.event.pull_request.issue_url}}/labels curl … Use GitHub Actions to label a PR as including GraphQL changes