Propeller is an opinionated platform that enables realtime and bidirectional communication between frontend and backend clients.
While polling and REST-style request-response have been the dominant paradigms for client-server communication, they inherently come with limitations that can impact performance, scalability, and user experience.
- Increased Latency: Polling intervals often dictate the minimum latency for receiving updates, limiting real-time responsiveness.
- Resource Consumption: Each polling request requires server resources to process, even if there's no new data.
- Retry Storms: In case of widespread failures or degradations, a large number of clients may initiate retries simultaneously, overwhelming the server.
- Scalability Constraints: As the number of clients and polling frequency increase, server load can become a significant bottleneck.
- Frontend Client can create a persistent channel with the backend.
- Backend services can send events to the frontend clients.
- Support for multiple devices for a client.
- Support for custom topics between frontend and backend.
- Easy integration with legacy REST based services.
Propeller is built on top of the following battle-tested technologies to power realtime experiences:
- bi-directional gRPC: Propeller uses bi-directional streaming gRPC to establish a stream between the client and the server.
- Redis and NATS: Propeller supports Redis and NATS as brokers for the communication.
- Golang: Propeller uses the power of Golang to achieve high number of concurrent clients being connected.
Please refer https://cred-club.github.io/propeller/ for further documentation on getting started, testing, design etc.