P Pulse by EFFOMA
Architecture

Every choice is a trade-off, made on purpose

Pulse doesn't pick one tool for everything. Each layer is chosen against the specific failure mode a live event can't afford.

router
Venue devices

Greengrass-managed edge hardware, on-device ONNX inference

arrow_forward
memory
Edge inference & pre-gen

On-device ONNX for the critical path, hybrid pre-generation for economics

arrow_forward
stream
Streaming ingest

Kinesis Data Streams (live ops) + Firehose (analytics), in parallel

arrow_forward
dns
Region compute

ECS Fargate default, EKS for GPU-backed workloads

arrow_forward
bolt
Hot-path state

DynamoDB+DAX (durable) / ElastiCache Redis (ephemeral)

arrow_forward
groups
Delivery

Pre-provisioned capacity serves attendees at doors-open

router

Edge layer

Where inference actually runs on venue hardware, and how fleets of that hardware get managed.

IoT Greengrass v2 DEFAULT

Fleet management and OTA updates across multiple venues — the right call once Pulse is a repeatable, multi-event platform.

Plain Docker on venue hardware

Simpler for a true one-off event with a single venue and no ongoing fleet to manage.

Outposts

Only justified for a permanent venue installation, not a touring event footprint.

! Greengrass's fleet-management overhead pays off only across repeat events — for a single 3-week engagement, it's dead weight.
memory

Inference placement

No single inference strategy covers both "must survive a dropped connection" and "can tolerate a couple seconds of latency."

On-device ONNX CRITICAL PATH

Survives dropped connectivity entirely. Capped by whatever compute the venue hardware has, and can't be updated mid-event.

Hybrid pre-generation ECONOMICS

Moves most generative work out of the "must happen live" bucket entirely — the unlock that makes the economics work.

SageMaker real-time endpoints

Elastic, but needs connectivity — a real constraint at venues like White Night's.

Bedrock generative content

Used only where 1-2s latency is tolerable, not on the hard real-time path.

i Hybrid pre-generation isn't a fallback — it's what makes generative content affordable at event scale at all.
stream

Streaming

Two Kinesis services run in parallel, on purpose — they are not interchangeable.

Kinesis Data Streams LIVE OPS

Low-latency, multi-consumer fan-out feeding the live ops dashboard in real time.

Kinesis Firehose ANALYTICS

Zero-ops, delivery-only landing for post-event analytics — no real-time consumption needed here.

! Data Streams optimizes for low-latency multi-consumer fan-out, Firehose for zero-ops storage delivery — running both in parallel is deliberate, not redundant.
dns

Compute

Default to the lighter-ops option; escalate only when the workload demands it.

ECS Fargate DEFAULT

Stateless APIs, less ops overhead — the default posture for most of Pulse's services.

EKS

Reserved for GPU node pools and custom scheduling — used only when that's a genuine requirement, not a default.

trending_up

Capacity posture

A one-night event doesn't get a second chance if scaling lags behind the actual crowd surge.

Pre-provisioned capacity DEFAULT

Sized ahead of the known event-time spike, in place before doors open.

Reactive autoscaling

Deliberately not the default here — scale-up delay during the actual surge is the failure mode Pulse is built to avoid.

! Event traffic isn't gradual — it's a step function at doors-open, and reactive autoscaling can't react fast enough to matter.
bolt

Hot-path state

Split by durability need, not a single blanket choice.

DynamoDB + DAX DURABLE

Used where state must survive a Lambda restart — durability matters more than shaving off the last few milliseconds.

ElastiCache Redis EPHEMERAL

Used where raw speed matters more than durability and losing the cache on restart is acceptable.

i Durability-critical state goes to DynamoDB+DAX; everything that just needs speed goes to Redis — no single store wins outright.