GraphQL Spike

Goals

  • Build institutional knowledge about GraphQL
  • Better understand adoption requirements
    • Code complexity
    • Configuration changes
    • Performance
    • What API conventions will help us be forwards compatible?
    • How should we structure front end state/logic code to be forwards compatible?

Plan

Developers involved in the spike will regularly share updates with the rest of the arch squad and pull in additional muscle as necessary. When the spike is completed, folks involved on the spike will present their findings to the squad and the squad will make an assessment as to whether GraphQL is worth adopting. The squad will present this assessment to the organization at large via arch lunch and eng demo/all hands.

Server

Create a DONTMERGE PR against an existing Python service. Discovery is a good candidate for this.

Implement:

  • A single endpoint from which to READ data (query)
  • Time allowing, an endpoint to which to WRITE data (mutation)

Assess:

Document:

  • Graphene assessment (and comparison with competing tools, if applicable)
  • Complexity of GraphQL/Python integration

Client

Create a DONTMERGE PR against an existing frontend.

Implement:

  • Visible chunk of UI that READS from the GraphQL endpoint
  • Time allowing, UI that WRITES to the GraphQL endpoint

Assess and compare:

Document:

  • Apollo/Relay comparison
  • Complexity of read/writes from client side

Resourcing

Ideally this spike should be completed within 2 weeks using two developers at ~70% capacity.

External