Skip to content
This repository has been archived by the owner on May 30, 2023. It is now read-only.

graph-quilt/graph-quilt-gateway

Repository files navigation

graphql-gateway

 Master Build and Publish codecov Apache 2

This repo is deprecated. Please see graphql-gateway-java

Overview

Graph Quilt Gateway exposes data from various graph microservices using a single unified GraphQL schema. These microservices can be dynamically registered with the Gateway using the /register endpoint. It uses graphql orchestrator library for federating schemas from various data providers.

Top Highlights include

  • Dynamic registration so that the gateway is loosely coupled with the provider development lifecycle.
  • Registering REST endpoints using the @adapter directive and Service DSL
  • Attribute Based Access Control using the graphql-authorization-java library.

Pre-requisites

Make sure you have the following installed on your machine

  • jdk 1.8
  • maven
  • docker
  • awscli

Running the graph-quilt gateway locally

When running the application locally, localstack is used to mock AWS S3. Follow this steps to start the application.

  • Build the project

    mvn clean install
    
  • Run aws configure. Enter any value to the prompts presented. Since localstack is used, a real AWS credential is not needed.

    aws configure
    
  • Start Docker daemon if not running.

  • Start the local registry. This starts a localstack docker container.

    ./local_registry/start.sh
    
  • Set up the local registry. This will initialize the registry with example service providers in local_registry folder.

    ./local_registry/setup.sh --empty-registry
    
  • Start the application. Once started, it listens on port 7000

    ./run.sh
    

    OR

    Run the class GraphqlGatewayApplication as Spring Application using IntelliJ. Set the active profile as local.

No need to restart the application when new you register a new provider service.

Run with docker compose

The docker compose will start both localstack and graphql gateway. To start, run the command

$ docker compose -f docker-compose-local-registry.yml up

This will start with the example service providers from ./local_registry/dev/registrations/1.0.0. However, there's no actual backend service yet so if you query, you'll get "Connection Refused error.". We will add these example services as part of docker compose in the near future so that and end to end call can be made.

You should see the Spring Boot Logo and a message "Started GraphQLGatewayApplication ..."

Test using GraphiQL

Documentation

graphql-gateway-documentation

Intellij development

Contributing

Please see our contribution guide