GrAMPS — Composable, Shareable Data Sources for GraphQL
An easier way to manage the data sources powering your GraphQL server.
GrAMPS (short for GraphQL Apollo Microservice Pattern Server) is a thin layer of helper tools designed for the Apollo GraphQL server that allows independent data sources — a schema, resolvers, and data access model — to be composed into a single GraphQL schema, while keeping the code within each data source isolated, independently testable, and completely decoupled from the rest of your application.
Developer Quickstart
To get a GrAMPS+Apollo gateway up and running, start by installing the required packages:
yarn add @gramps/gramps apollo-server graphql
Next, create a file called index.js
and put the following inside:
const gramps = require('@gramps/gramps').default;
const { ApolloServer } = require('apollo-server');
const getGraphQLServer = async () => {
const GraphQLOptions = await gramps();
const server = new ApolloServer({...GraphQLOptions});
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`)
});
};
getGraphQLServer();
Start the server with node index.js
, then open http://localhost:4000/graphql to see the GraphQL Playground user interface.
For a more in-depth starter, see the 5-minute quickstart in our documentation.
Why Does GrAMPS Exist?
GrAMPS is an attempt to create a standard for organizing GraphQL data source repositories, which allows for multiple data sources to be composed together in a plugin-like architecture.
The ability to combine independently managed data sources into a single GraphQL server is a core requirement for IBM Cloud’s microservice architecture. We have dozens of teams who expose data, so a single codebase with all GraphQL data sources inside was not an option; we needed a way to give each team control of their data while still maintaining the ability to unify and expose our data layer under a single GraphQL microservice.
GrAMPS solves this problem by splitting each data source into independent packages that are composed together into a single GraphQL server.
Contributors
Thanks goes to these wonderful people (emoji key):
Jason Lengstorf |
Eric Wyne |
Cory Cook |
Michael Fix |
Ryan Mackey |
Mostafa Sholkamy |
---|
This project follows the all-contributors specification. Contributions of any kind welcome!