Skip to content

Spike: Can GraphQL be used to build the retrieval layer better than REST API? #436

Description

@lsulak

Background

Some of our users are saying that working with Atum Service's REST API layer (those who cannot or don't want to use Atum Reader) is a bit complicated for measurement retrieval.

Mmaybe GraphQL could be used on Atum Service for convenience. The REST API of the Atum service is not simple and the requests might 'underfetch' or 'overfetch' a lot. And there can be multiple queries needed to obtain a desired result.

Questions To Answer

  1. Come up with few common usecases that could be done better in GraphQL. Maybe something like 'get me last 5 [input] checkpoints related to specific partitioning Additional Data [input]. Sure, we can build rest API and DB functions for everything, but that's maybe much more costly
  2. We have Postgres, DB functions, Scala & Scala DTO models, and REST API - how, if so, can GraphQL be used? Any OSS libraries to use?
  3. How could the implementation look like - what needs to be done, how much effort it would take, what about security model (think about the current DB function level also)?

Business Value

Adoption of Atum is much higher, thus its value is higher - we are capturing control metrics, but not acting on them (this is fine, never was in Atum's scope). But in the end of the day, we don't want to gather data for the sake of gathering, someone or something needs to consume and build DQ related stuff with it. So the convenience of metric consumption is important. If it's 'system' written in Scala, then this can just use Reader. Outside of that, users might struggle.

Desired Outcome

The list of desired outcomes of this spike ticket.

Tasks

  • Questions have been answered or we have a clearer idea of how to get to our goal
  • Discussion with the team
  • Documentation
  • Create recommendations and new implementation tickets

Additional Info/Resources

  1. https://www.moesif.com/blog/graphql/technical/Ways-To-Add-GraphQL-To-Your-Postgres-Database-Comparing-Hasura-Prisma-and-Others/
  2. https://github.com/sangria-graphql/sangria
  3. https://www.howtographql.com/graphql-scala/0-introduction/

Metadata

Metadata

Assignees

No one assigned

    Labels

    spikeProof of concept, research and investigation tasks

    Type

    Projects

    Status
    🆕 To groom

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions