.circleci | ||
.devcontainer | ||
.github/workflows | ||
bazel | ||
cache | ||
cargo | ||
common | ||
config | ||
docs | ||
gateway | ||
novactl | ||
rest | ||
webhook | ||
.bazelrc | ||
.gitattributes | ||
.gitignore | ||
BUILD | ||
Cargo.lock | ||
Cargo.toml | ||
deps.bzl | ||
docker-compose.yaml | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
Makefile | ||
README.md | ||
WORKSPACE |
Introduction
What is nova ?
Nova is a complete framework for building reliable and stable discord bots using a services based system to operate all the components needed to operate a discord such as the discord gateway, new discord webhooks for receiving interactions. Using a traditional infrastructure (sharder / process), we can quickly reach bottlenecks when we scale to multiple thousands of shards. Nova is a way to avoid these problems by building a scale-first discord framework that creates an environment that allow better testing, reliability and operations easier.
Advantages
With the help of Nova, you can achieve a number of things, such as
- Scaling of workers independent of the number of shards
- zero-login updates
- Automatic shards scaling
- Shared cache for the whole bot (without broadcastEval and other unsafe methods)
- Stateless workers, easier to test
- Distributed rest rate-limiting
- Easier fine-tuned monitoring using cloud-native technologies
- Languages agnostic apis
How did we solve this ?
Nova separates the gateway into multiple smaller components corresponding to each discord apis