DEV Community

Ben Johnson
Ben Johnson

Posted on Originally published at particle41.com

What Is a Feature Store, and Does Your Team Actually Need One?

What Is a Feature Store, and Does Your Team Actually Need One?

Someone on your team read a post from a company running hundreds of models and now wants to stand up a feature store. The pattern traces back to Uber's Michelangelo platform, whose shared "Feature Store" held roughly 10,000 features used to accelerate machine learning projects across the company. The pitch sounds compelling: a central place for all your machine learning features, reusable across teams, consistent between training and production. Who wouldn't want that?

Here's the question worth asking before you commit: do you actually have the problems a feature store solves, or are you about to buy enterprise-grade infrastructure to serve three features to one model?

Feature stores solve two specific, genuinely painful problems. If you have those problems, a feature store is one of the best investments you can make in your ML stack. If you don't have them yet, it's operational overhead pretending to be progress. Let's get precise about what it does, when it's worth it, and what to do before you reach for it.

First, What a Feature Store Actually Is

A feature is an input to a machine learning model, a computed signal about something. "Number of logins in the last 30 days." "Average order value." "Days since last support ticket." Models are fed features, not raw data.

A feature store is a system that does three jobs:

The crucial trick is that the same feature definition powers both the offline training path and the online serving path. That single property is the whole point, and it's what solves the first big problem.

Problem One: Training/Serving Skew

This is the failure mode that makes feature stores worth their weight.

You train a model on historical data. To do it, an engineer writes a query that computes "average order value over the last 90 days." The model trains, validates beautifully, everyone's happy. Then you deploy it. In production, a different engineer, or the same one months later, writes a different piece of code to compute that same feature in real time. Maybe it handles nulls differently. Maybe it uses a slightly different time window. Maybe it rounds.

Now the model is being fed production data that's subtly different from what it trained on. Accuracy quietly degrades. And this is brutal to debug, because both code paths look correct in isolation. The model just performs worse in the wild than it did in testing, and nobody can say why.

This is training/serving skew — which Google's Rules of Machine Learning defines as "a difference between performance during training and performance during serving," often caused by a discrepancy in how data is handled between the two pipelines — and it's one of the most common and most insidious problems in production ML. A feature store eliminates it by construction: there's one definition of the feature, and both training and serving read from it. No drift, because there's nothing to drift between. This is exactly the approach Uber took on Michelangelo, where the same feature-transformation DSL expressions are "applied at training time and at prediction time" so the identical features reach the model in both cases.

If you're already feeling this pain, models that test well and underperform in production with no obvious cause, a feature store is pointing right at your problem.

Problem Two: Feature Reuse and Consistency

The second problem shows up as you scale teams and models.

Your fraud team builds a "customer lifetime value" feature. Your marketing team builds one too. So does your churn team. Three definitions, three slightly different sets of assumptions, three places to maintain, and inevitably three different answers to "what's this customer worth?" Multiply across dozens of features and several teams and you get duplicated work, wasted compute, and a quiet erosion of trust, because no two models agree on the underlying numbers.

A feature store gives you a shared, documented catalog. Define "customer lifetime value" once, correctly, and every team consumes the same version. New models get built faster because half the features they need already exist. Governance improves because there's one definition to audit.

This is a real benefit, but notice it's fundamentally a scale benefit. With one or two teams and a handful of models, you don't have a reuse problem. You have a documentation problem, which is much cheaper to fix.

When a Feature Store Is Overkill

Here's the part the vendor decks skip. A feature store is infrastructure. It has to be deployed, monitored, kept available, paid for, and learned by your team. That cost is justified only when the problems above are biting.

You almost certainly don't need a feature store yet if:

  • You have one or two models in production. Skew is manageable when there's one of everything to coordinate.
  • Your features are mostly batch, recomputed nightly, with no hard low-latency serving requirement. Half the value of a feature store is the online serving path; if you don't need it, you're paying for capability you won't use.
  • You have a single ML team. The reuse problem barely exists when everyone already talks to each other.
  • Your features are simple and stable. If a feature is just a column in a table that already updates correctly, wrapping it in a platform adds ceremony, not safety.

In these cases, adopting a feature store is how you end up maintaining a platform that serves three features to one model, while the actual work, building things that move the business, waits.

What to Do First: The Simpler Stack

Before you buy or build a feature store, get the cheaper version of its discipline in place. It solves most of the same problems at a fraction of the operational cost.

  • Define features once in your transformation layer. A shared dbt model (or equivalent) that computes "customer lifetime value" in exactly one place, that every model reads from, gives you most of the consistency benefit with zero new infrastructure.
  • Write a feature catalog. A documented table, owner, definition, refresh cadence, gets you reuse and governance without a platform. Boring, effective.
  • Make training and serving read the same source. If both your training pipeline and your live model query the same materialized feature table, you've eliminated skew without a feature store. The skew problem is really a "two sources of truth" problem; collapse it to one.
  • Standardize your serving path. If you do need low-latency reads, a well-designed cache or key-value store in front of your feature tables may be all the "online store" you need at your scale.

This stack handles a real ML practice running a handful of models. It's the right answer for far more teams than the feature store evangelists admit.

The Honest Decision Framework

So, do you need one? Walk these questions in order:

  1. Are models that test well underperforming in production for no clear reason? If yes, you likely have skew, and a feature store directly addresses it.
  2. Do you have low-latency serving needs that your current setup can't meet? If yes, the online-store half of a feature store earns its keep.
  3. Are multiple teams rebuilding the same features and disagreeing on the answers? If yes, you have a reuse problem at a scale where a catalog alone may no longer cut it.
  4. Do you have the operational maturity to run another piece of always-on infrastructure? If no, fix that before adding it.

If you answered yes to two or more of the first three and yes to the fourth, a feature store is probably the right next investment, look hard at managed options like Tecton, or open-source Feast, before building your own. If you didn't, the simpler stack above will serve you better and longer than you'd guess.

Buy the Aspirin When You Have the Headache

The pattern we see repeatedly: teams adopt heavyweight ML infrastructure based on where they hope to be, then spend their scarce engineering capacity maintaining a platform their actual workload doesn't justify. A feature store is a fine answer to a problem you have. It's an expensive answer to a problem you might have someday.

At Particle41, we help teams make exactly this call, right-sizing the data and ML platform to the problems actually in front of them, then scaling it deliberately as those problems grow real. Sometimes that means standing up a feature store. More often, at least at first, it means a clean transformation layer, a shared catalog, and one source of truth, the simpler stack that quietly solves the same problems without the operational tax. The goal isn't the most impressive architecture. It's the one your team will still be glad they have in a year.

Sources

  1. Mike Del Balso and Jeremy Hermann, "Meet Michelangelo: Uber's Machine Learning Platform," Uber Engineering (2017) — the shared Feature Store (~10,000 features), the feature-transformation DSL applied identically at training and prediction time, and sub-10ms P95 online serving latency.
  2. Martin Zinkevich, "Rules of Machine Learning: Best Practices for ML Engineering," Google for Developers — defines training-serving skew and why it should be explicitly monitored.

Originally published at particle41.com

Top comments (0)