Introducing the Inngest CLI: build, test, and ship serverless functions locally
Join our Discord
Sign up for free

High-level Architecture

Featured image

At a very high level, the Inngest platform is simple to understand. The system is primarily composed of 4 main components: the event stream, the event store, an executor engine and a secure compute layer.

Event stream

The event stream is composed of a high volume API and and internal data stream that categorizes, transforms, and filters events in real time. The event stream is isolated by unique sources, which allows us to keep user data separated and secure. You can create any number of sources, each with a unique source key, or use built in integrations which are all powered by the same source infrastructure.

Event store

As event data is ingested, all events and their payload data are stored in our event store. We store all events for up to six months, or beyond if needed. This provides a full history of all events payloads which powers features like retries, historical replays, testing your functions with real historical data, and automatic payload type/schema generation.

Executor engine

The executor engine is built to ensure that your functions run reliably and timely. When new events are ingested our executor schedules what functions to run for that particular event. Each function can be triggered by n number of events and an Inngest account may have n number of functions triggered by a given event. The executor engine handles all of this logic deciding exactly what needs to be run.

The executor engine also handles logging information to creates audit trails and retries the functions for when things may fail if an external service you communicate with is down.

Secure computer layer

This is where your function code runs.

The executor engine passes off jobs to our compute layer which runs every function securely within it's own container. We've configured our system to ensure the complete isolation between functions.

If you're interested in us supporting alternative runtimes or additional sources, drop us a line in #feature-requests in our Discord community or shoot us a note here.