Feast Feature Store — Real-Time ML Feature Management at Scale
Feast is the industry-standard open-source feature store for ML with 8,000+ GitHub stars. Online/offline feature serving, point-in-time joins, and seamless integration with all ML frameworks.
- ⭐ 8000
- Python
- Apache-2.0
- Updated 2026-08-27
Introduction: The 200ms Feature Engineering Crisis #
A fintech startup running real-time fraud detection discovered their inference latency spiking to 800ms during peak hours. The culprit wasn’t the model — it was the feature retrieval pipeline. Every prediction triggered 7 separate database queries, 2 API calls to external services, and instant-computed real-time aggregations. Train-serving skew caused a 12% accuracy drop between offline evaluation and real-time predictions.
This is the feature engineering crisis that silently destroys production ML systems. Without a centralized feature store, every team builds custom feature pipelines, features diverge between training and serving, and real-time inference becomes a latency nightmare.
Feast solves this. With 7,000+ GitHub stars, 361 contributors, and the latest release v0.63.0 (May 2026), it is the most widely adopted open-source feature store. Originally developed by GO-JEK and now a Linux Foundation project under Apache-2.0, Feast provides a unified layer for defining, storing, and serving ML features at sub-second latency.
What Is Feast? #
Feast is an open-source feature store that provides a unified interface for defining, registering, storing, and serving ML features. It splits feature storage into two layers: offline storage for training data generation (batch, historical queries) and online storage for real-time feature serving (sub-second lookups). A central feature registry tracks all feature definitions, metadata, and lineage.
Key capabilities:
- Feature registry: central catalog of feature definitions, versioned in code, searchable and reusable across teams
- Point-in-time correct joins: training datasets without label leakage
- Online serving: sub-second feature lookups via Redis, DynamoDB, or Firestore
- Offline serving: batch features for training via BigQuery, Snowflake, Redshift, or local Parquet
- Streaming ingestion: real-time feature updates via Kafka
- Framework agnostic: works with TensorFlow, PyTorch, XGBoost, and scikit-learn
Architecture #
┌─────────────────────────────────────────────────────┐
│ Feature Registry │
│ (versioned feature definitions, SQL) │
└──────────┬──────────────────────────┬───────────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Offline Store │ │ Online Store │
│ (BigQuery/Snowflake │ │ (Redis/DynamoDB) │
│ /Redshift/Parquet) │ │ │
│ → Training data │ │ → Sub-second │
│ with PIT joins │ │ feature serving │
└──────────────────────┘ └──────────────────────┘
Quick Start #
1. Install #
pip install feast
feast init my_feature_repo
cd my_feature_repo
2. Define Features #
# features.py
from feast import Entity, FeatureView, Field
from feast.types import Float32, Int64
from feast.infra.offline_stores.bigquery_source import BigQuerySource
user = Entity(name="user", join_keys=["user_id"])
transaction_stats = BigQuerySource(
table="project.dataset.transaction_stats",
timestamp_field="event_timestamp",
)
transaction_features = FeatureView(
name="user_transaction_features",
entities=[user],
schema=[
Field(name="avg_transaction_amount", dtype=Float32),
Field(name="transaction_count_7d", dtype=Int64),
],
source=transaction_stats,
ttl="24h",
)
3. Apply and Materialize #
feast apply # register features
feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S") # load online store
4. Serve Features Online #
from feast import FeatureStore
store = FeatureStore(repo_path=".")
features = store.get_online_features(
features=[
"user_transaction_features:avg_transaction_amount",
"user_transaction_features:transaction_count_7d",
],
entity_rows=[{"user_id": 12345}],
).to_dict()
5. Generate Training Data #
training_df = store.get_historical_features(
entity_df=entity_df, # pandas DataFrame with user_id + event_timestamp
features=[
"user_transaction_features:avg_transaction_amount",
],
).to_df()
Multi-Team Configuration #
Feast supports shared infrastructure across teams with per-project registries:
# feature_store_team_b.yaml
project: team_b_recommendations
registry:
path: s3://shared-bucket/registry_team_b.db
online_store:
type: redis
connection_string: "redis://shared-redis:6379/1"
offline_store:
type: bigquery
project: my-gcp-project
dataset: team_b_features
Best Practices #
- Version your features: tag feature views with version, model, and owner metadata for lineage
- Set TTLs: prevent stale features from serving outdated values
- Monitor freshness: track materialization lag between offline and online stores
- Use point-in-time joins: always generate training data with
event_timestampto avoid leakage - Start with a few features: don’t over-engineer; add streaming only when batch latency isn’t enough
Conclusion #
Feast turns feature engineering from an ad-hoc mess into a managed, versioned, and consistent process. For teams running ML in production — fraud detection, recommendations, real-time pricing — the train-serve consistency Feast provides is not a nice-to-have; it is what separates reliable ML systems from fragile prototypes. Start with the quick start above, and you’ll have a working feature store in under 30 minutes.
💬 Discussion