We're building WunderGraph Cosmo, the open-source GraphQL Federation solution. Probably the most important component of Cosmo is the Cosmo Router, which - simply put - connects all API endpoints and handles the GraphQL requests and responses whilst applying the Federation protocol (among other magical things, like normalization, execution planning etc.). Fully written in Go, it's the fastest GraphQL Router available and a quite potent (and complex) piece of cutting-edge open-source software. How about joining our team to make it even better and strap the rocket boosters onto GraphQL Federation?
We need you as a full-time, fully remote
As a Golang Engineer at WunderGraph, you will:
- Develop, refactor and maintain GraphQL Go Tools' (Router) open-source code base in Golang (low GC code)
- Work closely with your engineering team mates on new Router capabilities (e.g. Open Federation, new data sources)
- Focus on performance, security and stability of the Router
- Review Router telemetry to identify areas of improvement
- Run internal penetration tests of the Router
- Troubleshoot Router issues, potentially together with our customers' engineers
- Analyze and accept up open-source contributions on Github
The "Engine" is essentially a Golang application which translates GraphQL requests into any other protocol, like OpenAPI, SOAP, gRPC, GraphQL, Apollo Federation, etc... You could consider the Engine as a "GraphQL Compiler" or Transpiler. The Engine is responsible for parsing, normalization, execution planning, execution runtime, etc... If you are interested in working with ASTs, AST transformations, etc... you will love this kind of work. We have performance requirements, so you should be proficient in writing performant and low GC code in Golang.
Some of your tasks will take more than a few weeks to complete, Ideally, you're someone who likes to go deep on one topic instead of going wide and shallow on many different topics.
Here's a list of things you might be working on:
- Extend the Compiler "backend" to support Apollo Federation v2
- Extend the Compiler "backend" to support gRPC
- Implement a native Go-based data source for SOAP and OpenAPI, currently we're using a Node.js based solution with a bridge
- Improve the batching-implementation of the Engine
- Improve the performance of the Engine in general, driven by feedback from our customers
If I (the CEO) had more time, I'd do all of this on my own, just because I enjoy this kind of work. Unfortunately, my role requires me to focus on Marketing, Sales, Product, and other aspects of the company. That's why we're looking to expand our "Engine Team" with you!
What you bring to the table
- At least 5 year of proven Golang development experience in a leading / ownership role (must have)
- Self-starter with a clear sense of priorities - no hand-holding needed
- You must be willing and able to work out solutions on your own. This requires you to dig into hard problems and stay on target until you have solved an issue in a robust way.
- Experience in working with ASTs, AST transformations etc.
- Experience in writing performant and low GC code in Golang, and knowledge of how to benchmark Go code
- Experience with GraphQL, API Gateways, Proxies, and Networking in general is a plus
- Experience with OpenAPI, SOAP, gRPC, GraphQL, Apollo Federation is a plus
- Open-source contributions are a benefit, too
- You are able to work and thrive in a fully remote environment
- Excellent communicator (important for a remote team) in English
Why WunderGraph?
- We hate overhead as much as you do, so we keep it at an absolute minimum - no distractions!
- Pick your preferred work hardware
- We ship stuff and get sh*t done
- International team with a sometimes weird sense of humour
- You can make a real difference and find lots of opportunities to grow together with us
- Build something you love
- Discretionary PTO
- Competitive compensation
- Quarterly team retreats
Note: This is a full-time, fully remote position. We are looking for someone who is available to work during European (CET) business hours.