Why capacity and latency collide
Feature capacity multiplies along several axes at once: entity count, feature width, freshness windows, and concurrently served model versions. The active population can shift faster than a small hot set can stabilize, particularly during launches or broad candidate retrieval.
Moving less-used features to a storage tier saves memory, but one late lookup can hold up an inference request. Measure the distribution of complete feature-vector assembly time, including cold entities and missing features; a store-wide average is not the model's serving budget.
DESIGN FOR THIS DATA PATH
Where Lavik fits
Use Lavik as the online key-value serving layer for application-prepared features. NVMe SSD holds the value capacity, while the in-memory key index supports lookups. Keep feature computation, event-time correctness, schema management, and offline training datasets in their existing systems.
Strongest evaluation fit: Precomputed, reconstructable feature values with substantial payload per entity and a clear materialization pipeline.
Design decisions that determine the outcome
Make the serving contract versioned
Choose packed strings or hashes based on the operations your client actually uses. Include schema/model version and an as-of timestamp in the record. Define defaults for absent fields and a freshness cutoff independently of storage expiry.
Account for the entire lookup fan-out
Budget entity reads, feature decoding, joins, and inference separately. Benchmark bounded HMGET/MGET requests with the real feature width. Atomic writes to a record do not by themselves provide an event-time-consistent snapshot across all entities.
Test your connector, not just its command names
Map connector initialization, Lua calls, pipelines, field expiry, and serialization to the versioned command reference. The verified client examples are useful starting points; they do not certify Feast or another feature-store connector. Plan backfill throttling and reconciliation after lag.
A command example executed on Lavik
Docker check passedA functional check using example data, an isolated instance, and actual replies. It verifies the command sequence shown; it is not a performance or end-to-end correctness test of the industry workload.
Inspect actual requests and replies
> HSET features:model7:user42 schema 7 as_of 2026-09-21T00:00:00Z visits_7d 12
3
> HMGET features:model7:user42 schema visits_7d missing_feature
["7","12",null]
> HGET features:model7:user42 as_of
"2026-09-21T00:00:00Z"
> EXPIRE features:model7:user42 600
1Version and verification scope
lavik 0.1.0-beta.1 · Minimal package · aarch64 · 2026-09-21
Offline container with a read-only root, temporary data, and a reset between scenarios. Examples use an authenticated local connection. TTL ranges and exact arguments are preserved in the execution receipt.
Execution receipt ↗What should decide the migration?
Write down the application budgets before replaying traffic. Validate these criteria in your own system; published benchmarks are a starting point.
Cold-entity inference
Replay production entity distributions plus a uniform-access stress case at full feature width.
Feature-assembly p99 fits its portion of the inference budget; missing/stale feature rates remain acceptable.
Backfill during serving
Read while refreshing or backfilling a second model version; retain application timestamps.
Read deadlines and freshness objectives hold together; the publisher cannot overwrite a newer version with an older event.
Connector correctness
Exercise actual connector calls, partial records, absent entities, reconnects, and deserialization failures.
Returned values and fallback decisions match the existing serving contract before routing inference traffic.
This is a key-value serving design, not a built-in feature platform, vector index, or point-in-time training join. A tiny high-contention counter is a different workload from the published 1 KiB GET/SET benchmark.
Translate business scale into capacity
Value payload ≈ entities × serialized feature bytes × simultaneously served versions
lower value-capacity cost
When DRAM costs 20 times as much per GiB as NVMe SSD, the same value payload costs one twentieth as much for media capacity: 95% less. Include index memory, CPU, replicas, storage amplification, and recovery headroom in the complete deployment.
Calculate with your capacity prices →