Centralized Feature Engineering & Feature Stores

13 min read
Visas Permits
Centralized Feature Engineering & Feature Stores

After reading this chapter you will be able to:

  • Explain what a feature is, how feature engineering turns raw data into model inputs, and why centralization matters for production ML.
  • Describe the architecture of a modern feature store (registry, offline store, online store, materialization, serving) and how the pieces interact.
  • Identify training-serving skew and point-in-time leakage, and show how a feature store prevents both.
  • Choose between batch, streaming, and on-demand feature computation for a given use case, including latency and cost tradeoffs.
  • Define entities, feature views, and feature services; retrieve historical training datasets and low-latency online features using the same definitions.
  • Compare major platforms (Feast, Tecton/Databricks, Hopsworks, cloud-native stores) and decide when a dedicated feature store is justified versus a lighter dbt + warehouse + cache approach.
  • Apply monitoring, governance, and best practices so features stay fresh, consistent, and reusable across models and teams.
  • Design a practical feature pipeline for common domains (fraud, recommendations, risk) and avoid the most frequent production failures.

Prerequisites

Who this is for

  • Expats, students, career changers, junior professionals, and self-learners moving into ML engineering, data engineering, or MLOps.
  • Data scientists who have trained models in notebooks and now need those models to behave the same way in production.
  • Software engineers who own inference services and want a clean contract for feature data.

Required knowledge

  • Basic machine learning: supervised learning, train/test split, overfitting.
  • Familiarity with tabular data (tables, keys, timestamps) and simple SQL or Python/pandas.
  • High-level idea of batch jobs vs real-time services. No prior feature-store experience is assumed.

Why This Matters

In production ML, models rarely fail because the algorithm is exotic. They fail because the numbers they see at inference time are not the numbers they saw during training. That gap is called training-serving skew. It is one of the most expensive and silent failure modes in deployed systems. mind-forge

A feature is a measurable property used as input to a model—for example, a user’s 7-day transaction count, average order value, or an embedding of recent product views. Feature engineering is the process of creating, transforming, selecting, and managing those inputs from raw structured and unstructured data. medium

When every team builds its own feature pipelines, the same business concept (“recent merchant activity”) is recomputed dozens of times with slightly different SQL, different defaults for missing values, and different time windows. Uber’s Michelangelo platform was created in large part because hundreds of models were recomputing overlapping features inconsistently. Similar stories appear at Airbnb (Zipline), DoorDash, LinkedIn, and Stripe. imsuperintelligence

Experienced practitioners care about centralized feature engineering because it:

  • Guarantees the same transformation logic for offline training and online inference.
  • Enables point-in-time correct joins so training data never leaks future information.
  • Turns features into reusable, versioned assets with lineage and ownership.
  • Cuts time-to-production for new models (DoorDash has reported moving from weeks to days by reusing features) and reduces duplicated compute. mind-forge
  • Extends naturally to embeddings and agent context retrieval in 2026-era AI systems. datarekha

Companies that operate real-time fraud detection, recommendations, pricing, and risk scoring treat the feature layer as critical infrastructure—not a notebook preprocessing step. Cloud platforms (Vertex AI Feature Store, SageMaker Feature Store, Databricks Feature Engineering) and open systems (Feast, Hopsworks) exist precisely to make that layer reliable. youngju

First Principles

What is a feature?

A feature is a single input variable (or a vector of related values) that a model uses to make a prediction. Raw data is rarely usable as-is. A timestamp becomes “hour of day” and “is weekend.” A transaction log becomes “sum of amounts in the last 1 hour” and “count of distinct devices in the last 24 hours.” Text becomes TF-IDF or embeddings. Images become CNN or vision-transformer embeddings. tdwi

Feature engineering includes:

  • Creation — new variables from domain knowledge (BMI, ratios, lags).
  • Transformation — scaling, log transforms, encoding categoricals.
  • Extraction — embeddings, n-grams, aggregates over windows.
  • Selection — keeping only useful signals to reduce noise and cost. tredence

From first principles: models learn mappings from inputs to outputs. If the inputs are noisy, leaky, or inconsistent between train and serve, no amount of hyperparameter tuning fixes the production outcome.

Why “centralized”?

Without centralization:

  1. Data scientist A computes avg_ticket_30d in a Spark job with nulls filled by 0.
  2. Serving engineer B computes the same name in a microservice with nulls filled by the global mean and a slightly different calendar window.
  3. The model’s live accuracy collapses relative to offline metrics.

Centralized feature engineering means one definition, one computation path (or carefully equivalent paths), and two access patterns: historical (offline) for training and latest (online) for inference. appliedaiprep

Offline vs online: two consumers, one truth

Access pattern Purpose Typical store Latency Data shape
Offline Training, batch scoring, backfills Warehouse / lake (BigQuery, Snowflake, Iceberg, Delta, Parquet) Seconds–minutes Full history, time-travel joins
Online Real-time inference KV store (Redis, DynamoDB, Cassandra, RonDB, Bigtable) Sub-10 ms to tens of ms p99 Latest value per entity key

docs.feast

The feature store’s job is to keep these two views consistent with the same definitions.

Point-in-time correctness

When you build a training row labeled at time tt, every feature value must reflect only information that was knowable at or before tt. A naive “join latest feature value” pulls future data into the past and produces optimistic offline metrics that evaporate in production. This is label leakage (temporal leakage). Feature stores implement as-of / point-in-time joins so each label joins features with event_ts <= label_ts. appliedaiprep

Training-serving skew

Skew appears when:

  • Training and serving use different code or SQL.
  • Windows, defaults, or filters differ.
  • Freshness differs (training sees full history; serving sees a stale cache).
  • Schemas drift on one path only. archman

A feature store attacks skew by materializing offline and online data from shared definitions and by serving both paths through one API surface. docs.feast

Core Concepts

Entities

An entity is the primary key (or composite key) that features describe: user_id, driver_id, merchant_id, (user_id, product_id). Features are almost always looked up by entity. In Feast, entities are first-class objects with join keys and types. rtd.feast

Intuition: Think of an entity as the “row identity” of the world your model reasons about.

Real-world example: Fraud model entity = customer_id (and sometimes device_id). Recommendation model entities = user_id and item_id.

Common misconception: “Entity = table name.” No—entity is the join key semantics, not the storage table.

Feature views (and feature groups)

A feature view (Feast) or feature group (Hopsworks / SageMaker) is a logical grouping of related features that share a source, entities, schema, and TTL. It points at a data source (Parquet, warehouse table, stream) and declares which columns are features. youngju

Intuition: A feature view is a versioned “recipe + table slice” for a domain concept (e.g., driver_hourly_stats).

Visual explanation: Registry stores the recipe; offline store holds historical rows; online store holds the latest row per entity from that view.

Common misconception: Feature views must contain only pre-aggregated numbers. They can also hold embeddings and support on-demand transforms. feast

Feature services

A feature service is a named bundle of features (from one or more views) retrieved together for a model. It is the contract between the model and the feature platform: “this model needs these columns.” rtd.feast

Registry

The registry is the metadata catalog: definitions, schemas, ownership, versions, and pointers to sources. Feast commonly stores it in object storage or SQL. Without a registry, teams cannot discover or safely reuse features. docs.feast

Materialization

Materialization copies (or computes) feature values from the offline path into the online store so inference can do fast key lookups. Feast exposes materialize and materialize_incremental. Streaming and push APIs can also write directly online. docs.feast

Batch, streaming, and on-demand computation

Mode When computed Typical tech Best for Freshness
Batch Scheduled jobs Spark, SQL, dbt Stable aggregates, daily profiles Hours–days
Streaming Continuous Flink, Spark Streaming, Kafka consumers Velocity, session counters Seconds–minutes
On-demand At request time Python UDFs, serving-side transforms Context that only exists at inference (current cart, request geo) Immediate

neelmishra.github

When to use each: Fraud often needs all three—batch history, streaming velocity, on-demand transaction context. Churn models may need only batch. mind-forge

When not to use streaming: If business decisions tolerate daily refresh, streaming cost and operational load are usually unjustified. youngju

Offline store and online store (deeper)

  • Offline store: Optimized for scans and time-range joins. Feast does not replace the warehouse; it queries it. docs.feast
  • Online store: Optimized for point lookups by entity key; typically only the latest values. docs.feast

Feast uses a push model for online serving: values are pushed into the online store ahead of time so retrieval stays fast, rather than pulling and computing everything on the critical path. docs.feast

Consistency properties that matter

  1. Parity — same definition → same logical value offline and online. appliedaiprep
  2. Point-in-time correctness — no future leakage in training sets. appliedaiprep
  3. Freshness SLOs — how old a feature may be before it is considered stale. mind-forge
  4. Schema and lineage — who owns the feature, what upstream tables feed it, which models consume it. datarekha

Deep Dive

Historical context

Uber’s Michelangelo (public write-ups from 2017 onward) popularized the internal feature store pattern: shared features across many models, dual offline/online access, and platform ownership of consistency. The category boomed around 2020–2021 (Feast open-sourced from Gojek-era work, Tecton founded by ex-Michelangelo engineers, cloud feature stores launched). By 2023 many teams questioned whether dbt + Redis was enough. By 2025–2026 the pattern re-emerged as the data layer for AI agents and RAG: structured features + embeddings + governed low-latency context. Databricks acquired Tecton in 2025 to strengthen that layer. Hopsworks repositioned around an “AI lakehouse” (offline lake tables + online store + vector index). Feast remains the main open-source baseline. datarekha

Internal architecture (reference model)

A complete deployment typically includes:

  1. Feature definitions (Python SDK / declarative code in Git).
  2. Registry (metadata).
  3. Compute / pipelines (batch jobs, stream processors, on-demand transforms).
  4. Offline store (historical features).
  5. Online store (latest features).
  6. Materialization / sync engine.
  7. Feature server (HTTP/gRPC for non-Python clients).
  8. AuthZ, monitoring, lineage. imsuperintelligence

Point-in-time joins: mechanism

Conceptually the offline retrieval runs an as-of join:

sql
SELECT
  l.entity_id,
  l.event_ts,
  l.label,
  f.feature_value
FROM labels l
LEFT JOIN LATERAL (
  SELECT feature_value
  FROM feature_table f
  WHERE f.entity_id = l.entity_id
    AND f.event_ts <= l.event_ts
  ORDER BY f.event_ts DESC
  LIMIT 1
) f ON TRUE;

Hand-rolling this at scale is error-prone (wrong inequality, wrong dedupe by created_timestamp, timezone bugs). Feature stores encapsulate it in APIs such as Feast’s get_historical_features. rtd.feast

TTL on a feature view bounds how far back the join may search; too short yields nulls, too long raises cost. rtd.feast

Performance and capacity

  • Online p99 targets often sit under 10 ms for fraud/ads; some platforms advertise sub-millisecond with specialized KV stores (e.g., RonDB in Hopsworks benchmarks). hopsworks
  • Storage cost grows with cardinality × feature width × retention. Online stores usually keep only latest values; offline keeps history. imsuperintelligence
  • Materialization bandwidth and stream write throughput become bottlenecks at high entity churn.
  • Embeddings increase payload size; hybrid vector + structured retrieval is a first-class 2026 pattern. datarekha

Design decisions and tradeoffs

Decision Option A Option B Tradeoff
Build vs buy Feast / DIY Tecton, Hopsworks, cloud FS Control and cost vs speed and ops burden youngju
Transformation location Upstream dbt/Spark only Feature-store transforms Clarity vs convenience; Feast is not a full ETL tool docs.feast
Online population Batch materialize Stream push Simplicity vs freshness docs.feast
On-demand features Precompute everything Compute at request Latency/cost vs flexibility mind-forge
Lakehouse-native Databricks UC / Snowflake FS Standalone FS Integration vs specialized latency/streaming youngju

When a full feature store is overkill: few models, mostly batch, little feature reuse, light compliance needs—well-owned dbt models plus a cache may suffice. youngju

When it is justified: many models, shared features, streaming freshness, regulated lineage, millisecond online path, or agent context serving. datarekha

Industry best practices (synthesis)

  • Define features once; generate both training and serving from that definition. msphere
  • Enforce point-in-time joins for every training set. appliedaiprep
  • Set explicit freshness SLOs and alert on staleness. mind-forge
  • Monitor distribution drift (e.g., PSI) separately from model metrics. mind-forge
  • Treat the registry as product surface: owners, descriptions, tags, deprecation. imsuperintelligence
  • Prefer Git-versioned definitions and CI that validates schemas. youngju
  • Do not use the feature store as a general data warehouse or orchestrator. docs.feast

Practical Examples

Beginner — conceptual pipeline for churn

Goal: Predict 30-day churn for a subscription app.

  1. Entity: user_id.
  2. Batch features (daily): days_since_last_login, sessions_7d, support_tickets_30d, plan_tier (encoded).
  3. Offline: join labels (churned_by_date) to features with point-in-time correctness.
  4. Train gradient-boosted trees.
  5. Online: materialize latest user features daily; inference service calls online store by user_id.
  6. Same feature names and transforms in both paths—no second SQL dialect in the app server.

Why this works: Churn rarely needs sub-minute freshness; batch + daily materialize is enough and cheap.

Intermediate — e-commerce recommendations

Entities: user_id, item_id.

Features:

  • User: category affinity 30d, average order value, recency.
  • Item: popularity 7d, price, embedding of title/description.
  • Cross: user-item affinity score (batch), “items in current session” (on-demand).

Serving: Online store returns user and item vectors; model or ANN index ranks candidates. Training uses historical interactions with as-of joins so popularity features never include the label event itself.

Tradeoff: Item popularity is leaky if computed including the click you are predicting—point-in-time joins prevent that.

Advanced — real-time fraud

Throughput example shape: thousands of transactions per second; mix of batch, stream, and on-demand features (illustrative of production designs discussed in industry write-ups). datarekha

Feature mix:

  • Batch: 90-day spend by merchant category, historical chargeback rate.
  • Streaming: transaction count and sum in 10-minute and 1-hour windows (Flink/Kafka → online store).
  • On-demand: amount deviation from user average, geo-distance from last transaction, device fingerprint match.
  • Embedding: merchant embedding distance to user’s typical merchants. datarekha

Consistency controls:

  • One definition for “10-minute sum.”
  • Freshness monitors on stream lag.
  • Shadow comparison: sample entities, compare offline recompute vs online served values.

Failure mode without FS: three code paths for “recent merchant” → measurable precision drop in production (anonymized fintech case studies report multi-point precision recovery after unification). datarekha

Code Examples

The following examples follow Feast’s public API patterns (open-source feature store). Adjust provider and store types to your environment. feast

Project layout and definitions

python
# entities.py
from feast import Entity
from feast.types import ValueType

user = Entity(
    name="user",
    join_keys=["user_id"],
    description="End user of the product",
    value_type=ValueType.STRING,
)
python
# feature_views.py
from datetime import timedelta
from feast import FeatureView, Field, FileSource
from feast.types import Float32, Int64
from entities import user

user_stats_source = FileSource(
    name="user_stats_source",
    path="data/user_stats.parquet",
    timestamp_field="event_timestamp",
    created_timestamp_column="created",
)

user_stats_fv = FeatureView(
    name="user_stats",
    entities=[user],
    ttl=timedelta(days=7),
    schema=[
        Field(name="txn_count_7d", dtype=Int64),
        Field(name="txn_sum_7d", dtype=Float32),
        Field(name="avg_ticket_30d", dtype=Float32),
    ],
    source=user_stats_source,
    online=True,
)
yaml
# feature_store.yaml (illustrative)
project: demo_fraud
registry: data/registry.db
provider: local
online_store:
  type: sqlite
  path: data/online_store.db
offline_store:
  type: file
entity_key_serialization_version: 2

Apply, materialize, historical retrieval, online retrieval

python
from datetime import datetime, timedelta
import pandas as pd
from feast import FeatureStore

store = FeatureStore(repo_path=".")

# Register definitions (also: feast apply)
store.apply([])  # normally pass entity + feature view objects or rely on repo apply

# Point-in-time training set
entity_df = pd.DataFrame(
    {
        "user_id": ["U1", "U2", "U1"],
        "event_timestamp": [
            datetime(2026, 6, 1, 12, 0, 0),
            datetime(2026, 6, 1, 13, 0, 0),
            datetime(2026, 6, 2, 9, 30, 0),
        ],
        "label_fraud": [0, 1, 0],
    }
)

training_job = store.get_historical_features(
    entity_df=entity_df,
    features=[
        "user_stats:txn_count_7d",
        "user_stats:txn_sum_7d",
        "user_stats:avg_ticket_30d",
    ],
)
training_df = training_job.to_df()
# Each row's features are as-of event_timestamp — no future leakage.

# Load latest values into online store
store.materialize(
    start_date=datetime.utcnow() - timedelta(days=2),
    end_date=datetime.utcnow(),
)

# Low-latency online path used by the model server
online = store.get_online_features(
    features=[
        "user_stats:txn_count_7d",
        "user_stats:txn_sum_7d",
        "user_stats:avg_ticket_30d",
    ],
    entity_rows=[{"user_id": "U1"}, {"user_id": "U2"}],
).to_dict()

What the outputs mean

  • training_df has one row per entity event with feature columns joined correctly in time.
  • online returns the latest materialized values keyed by entity for scoring. feast

On-demand feature view (request-time transform)

python
from feast import on_demand_feature_view, RequestSource, Field
from feast.types import Float32
import pandas as pd

request_source = RequestSource(
    name="txn_request",
    schema=[Field(name="amount", dtype=Float32)],
)

@on_demand_feature_view(
    sources=[user_stats_fv, request_source],
    schema=[Field(name="amount_to_avg_ratio", dtype=Float32)],
)
def amount_ratio(features_df: pd.DataFrame) -> pd.DataFrame:
    df = pd.DataFrame()
    df["amount_to_avg_ratio"] = features_df["amount"] / features_df["avg_ticket_30d"].replace(0, 1.0)
    return df

On-demand views combine precomputed values with request payload fields—ideal when the raw event only exists at inference. rtd.feast

Streaming / push pattern (conceptual)

Production systems often compute window aggregates in Flink/Spark Streaming or a streaming SQL engine, then push rows into the online store (Feast Push API or direct write). The offline store still holds historical snapshots for training. docs.feast

Diagrams

Decision tree: do you need a feature store?

Sequence: online inference with feature store

Tables

Platform comparison (2026 landscape)

Capability Feast Tecton (Databricks) Hopsworks Cloud-native (Vertex / SageMaker / Databricks UC)
License / model OSS, self-host Commercial / platform OSS + commercial Managed cloud
Offline BYO warehouse/lake Managed + warehouse Lakehouse / external Native warehouse/lake
Online Redis, DynamoDB, etc. DynamoDB/Redis-class RonDB / external Bigtable, DynamoDB, Online Tables
Streaming Push / external engines Strong first-class Medium–strong Varies by cloud
Governance Basic + plugins Strong Strong Strong inside ecosystem
Best fit Flexible baseline Enterprise real-time + agents AI lakehouse, EU-friendly Teams standardized on one cloud

omeronal

Pros and cons of centralized feature stores

Pros Cons
Eliminates a whole class of train/serve bugs Operational complexity and learning curve
Feature reuse across models Cost if adopted too early
Point-in-time training sets Another platform to secure and monitor
Clear ownership and discovery Poor fit as general ETL
Path to embeddings + agent context Latency SLOs require careful online store design

appliedaiprep

Common Mistakes

  1. Two code paths for the “same” feature
    Why: Notebook SQL diverges from service code.
    Avoid: Single definition materialized to both stores; automated parity tests. msphere

  2. Latest-value joins for training
    Why: Easy in pandas; leaks the future.
    Avoid: Always use point-in-time retrieval APIs. appliedaiprep

  3. Adopting a feature store before you have the problem
    Why: Hype.
    Avoid: Adopt when skew, reuse, or freshness pain is real. youngju

  4. No freshness monitoring
    Why: Silent staleness; model looks “randomly” worse.
    Avoid: SLOs + alerts on materialize lag and stream delay. mind-forge

  5. Empty ownership metadata
    Why: Nobody can change or deprecate safely.
    Avoid: Require owner, description, and consumer list in registry. youngju

  6. Using the feature store as a warehouse or Airflow replacement
    Why: Wrong abstraction.
    Avoid: Keep heavy ETL upstream; FS for ML feature lifecycle. docs.feast

  7. Ignoring on-demand vs precompute tradeoffs
    Why: Everything precomputed explodes cardinality; everything on-demand explodes latency.
    Avoid: Precompute stable aggregates; on-demand for request-only context. mind-forge

  8. Skipping drift monitoring on features
    Why: Teams retrain models when the data pipeline broke.
    Avoid: PSI/distribution monitors on served features. mind-forge

Real Industry Examples

Uber (Michelangelo)
Early industrial feature store: shared features across large numbers of models, dual access patterns, platform ownership of consistency. Seeded the category vocabulary. datarekha

DoorDash
Public discussions of feature stores emphasize reuse: large compute savings by not recomputing the same Spark features per team, and faster path from idea to production model when features already exist. mind-forge

Stripe
Real-time fraud-style serving often described with streaming pipelines into low-latency stores (Kafka + Redis patterns; later ecosystem includes specialized transactional feature systems such as Fennel, acquired into Stripe’s stack per 2026 industry reporting). Latency targets for payment-scale scoring are extremely tight. youngju

Airbnb (Zipline)
Batch and streaming features on one platform for pricing and fraud-related workloads—classic dual-mode design. mind-forge

LinkedIn
Large shared feature sets for recommendations and ranking illustrate registry-scale governance needs (hundreds of features consumed by multiple products). mind-forge

Meta-scale reuse pattern
Industry commentary around Hopsworks and large platforms notes that top features are reused across many models—centralization amortizes engineering. hopsworks

2026 agent/RAG shift
Databricks’ acquisition of Tecton was framed around reliable real-time context for AI agents—the same primitives as classical feature serving, extended with embeddings and prompt/tool context. datarekha

Only treat vendor marketing numbers as directional; validate latency and cost on your workload.

Best Practices

  1. GitOps for feature definitions — review changes like code; run CI schema checks. youngju
  2. One definition, two stores — never reimplement transforms in the model server. msphere
  3. Explicit TTLs and freshness SLOs — document “feature X must be < N minutes old.” mind-forge
  4. Point-in-time everything — training, backtests, batch scores. appliedaiprep
  5. Parity tests in CI/CD — sample entities; compare offline vs online values within tolerance. appliedaiprep
  6. Start upstream transforms in the warehouse when possible — use the feature store for serving consistency, not as a second transformation kingdom. docs.feast
  7. Separate batch, stream, and on-demand deliberately — match mode to freshness need. mind-forge
  8. Monitor features as products — null rates, volume, PSI, materialize success, serve latency. imsuperintelligence
  9. Design entities carefully — wrong grain makes joins impossible or leaky.
  10. Plan embedding + structured hybrid access if you build RAG/agents on the same platform. datarekha
  11. Deprecate ruthlessly — unused features still cost storage and cognitive load.
  12. Security and compliance — PII features need access control and audit trails; lineage is not optional in regulated environments. datarekha

Interview Questions

Beginner

Q: What is a feature store?
A: A system to define, store, and serve ML features for both historical training and low-latency inference from shared definitions, reducing training-serving skew. docs.feast

Q: What is training-serving skew?
A: When feature values or logic differ between training and production inference, so the model sees a different input distribution live than it learned from. appliedaiprep

Q: Offline vs online store?
A: Offline holds historical data for training joins; online holds latest values for fast lookups at inference. docs.feast

Intermediate

Q: How do point-in-time joins prevent leakage?
A: For a label at time tt, only feature rows with timestamps ≤ tt are joined, matching what would have been available at prediction time. appliedaiprep

Q: When would you use on-demand features?
A: When part of the signal exists only at request time (current transaction amount, cart contents) or should not be precomputed for all entities. mind-forge

Q: How does materialization work?
A: A job reads recent offline (or source) values and writes latest per-entity values into the online store for serving. docs.feast

Senior

Q: How would you guarantee offline/online parity?
A: Shared definitions; single compute graph or proven-equivalent engines; automated comparison tests; careful null/timezone/type handling; monitoring. msphere

Q: Design freshness monitoring for fraud features.
A: Track event-time vs processing-time lag per stream feature; alert on materialize failures; PSI on key distributions; kill-switch or fallback defaults when SLO breached; page on sustained staleness. mind-forge

Q: Feature store vs dbt + Redis—how do you choose?
A: Prefer lightweight stack for few batch models with strong ownership; choose a feature store when reuse, PIT joins, streaming, governance, or multi-model online serving dominate. youngju

Exercises

Easy

  1. Take a public tabular dataset with a timestamp and entity id. Manually create three features (count, sum, recency). Write both a “correct” as-of join and an incorrect latest join; compare model AUC to see leakage impact.
  2. Draw your own diagram of registry, offline, online, and materialize using a domain you know (campus housing, delivery, fintech).

Medium

  1. Install Feast locally; define an entity and feature view on a Parquet file; run get_historical_features and get_online_features. docs.feast
  2. Add an on-demand feature that ratios a request amount to a precomputed average; document latency vs precompute tradeoff.

Hard

  1. Design a feature list for marketplace fraud with batch/stream/on-demand tags, freshness SLOs, and owners.
  2. Specify parity tests and a drift dashboard for five critical features.
  3. Compare cost: daily batch materialize of 50M entities × 100 features vs streaming updates for 5 hot features only.

STAY CONNECTED WITH THE EXPAT COMMUNITY

Subscribe to get expat tips, local insights, and connect with professionals around the world.