...
going to get any previous messages. Purpose of this will be to provide offline enabled data synchronization platform on top of GraphQL, Debezium and Apache Kafka .
Project references
Candidates are going to work closely with the JBoss community by contributing to the following projects:
...
Associated JBoss community project(s): AeroGear
AeroGear - A GraphQL Engine on top of Knative and Node.js
Summary of idea:
The purpose of this project is to be able to port functional Node.js based GraphQL applications into Knative.
The biggest challenge for that is an implementation of GraphQL Subscriptions.
GraphQL subscriptions work with websockets or some other persistent connection. When a mutation happens in the GraphQL engine, a subscribed client receives the event of that mutation over that persistent connection.
In the current case, the piece of software that sends the subscription events runs all the time.
How about scaling to zero if there are no subscribed clients?
This project will need some level of research in these areas, before the implementation:
- How to use Websockets with Knative
- How to scale resources with regards to Websocket connections
- See if KEDA could be used to scale the subscription manager
Possible tasks for this project :
- A prototype of simple GraphQL Node.js server on top of Knative
- Research Graphback Runtime to be used on top of Knative
Required knowledge
- Kubernetes
- Node.js/TypeScript
- Knative
- Containers and tooling (e.g. Docker)
- GraphQL
- Websockets
NOTE: all the skills listed above are big things. We don't expect students to be experts in any of these. However, we expect students to have experimented with these technologies and have experience in majority of them.
Github repo: https://github.com/aerogear/graphback (separate Knative repository might be created)
Contact / potential mentors: Wojciech Trocki (wtrocki@redhat.com) Ali Ok (aliok@redhat.com)
Associated JBoss community project: Aerogear
EAT - Testing Infinite Software Project Versions
...