Multi-Team Feature Store Setup

A multi-team feature store architecture (sometimes called a "federated" feature store) allows multiple teams to collaborate on a shared Feast registry while maintaining clear ownership boundaries. This pattern is particularly useful for organizations with multiple teams or projects that need to share features while preserving autonomy.

Overview

In a multi-team setup, you typically have:

  • Platform Repository (Central): A single repository managed by the platform team that acts as the source of truth for core infrastructure objects like entities, data sources, and batch/stream feature views.

  • Team Repositories (Distributed): Team-owned repositories for training pipelines and inference services. Teams define their own FeatureServices and On-Demand Feature Views (ODFVs) and apply them safely without affecting objects they don't own.

Key Concept: Understanding partial=True vs partial=False

The partial parameter in FeatureStore.apply() controls how Feast handles object deletions:

  • partial=True (default): Only adds or updates the specified objects. Does NOT delete any existing objects in the registry. This is safe for teams to use when they only want to manage a subset of objects.

  • partial=False: Performs a full synchronization - adds, updates, AND deletes objects. Objects not in the provided list (but tracked by Feast) will be removed from the registry. This should only be used by the platform team with full control.

# Team repository - safe partial apply
# Only adds/updates the specified FeatureService
# Does NOT delete any other objects
store.apply([my_feature_service], partial=True)

# Platform repository - full sync with deletion capability
# Syncs all objects and can remove objects via objects_to_delete
store.apply(all_objects, objects_to_delete=objects_to_remove, partial=False)

Architecture Diagram

Setting Up the Platform Repository

The platform repository maintains full control over core Feast objects.

1. Platform feature_store.yaml

2. Platform Repository Structure

3. Platform Object Definitions

entities.py

data_sources.py

feature_views.py

4. Platform Apply Script

apply.py

Setting Up Team Repositories

Team repositories add their own FeatureServices and ODFVs without interfering with platform-managed objects.

1. Team feature_store.yaml

Teams use the same registry configuration as the platform:

2. Team Repository Structure

3. Team Object Definitions

on_demand_views.py

feature_services.py

4. Team Apply Script

apply.py

Ownership Boundaries

Object Type
Platform Repository
Team Repositories

Entities

✅ Yes

❌ No

Data Sources

✅ Yes

❌ No

Feature Views

✅ Yes

❌ No

Stream Feature Views

✅ Yes

❌ No

Feature Services

Optional

✅ Yes

On-Demand Feature Views

Optional

✅ Yes

Strategies for Avoiding Registry Drift

1. Naming Conventions

Establish clear naming conventions to prevent collisions:

2. CI/CD Integration

Use CI/CD pipelines to automate applies and catch errors early:

3. Registry Validation

Implement validation to check for ownership violations:

4. Read-Only Access for Teams

Configure infrastructure permissions so teams have:

  • Read access to the registry (to get platform objects)

  • Write access only for their specific object types

  • No delete permissions on registry objects

Multi-Tenant Configuration with Schema Isolation

For stronger isolation, use separate database schemas per team:

Platform Configuration

Team Configuration with Custom Schema

This approach allows teams to materialize features to their own schemas while sharing the central registry.

Complete Working Example

Here's a complete example showing both platform and team repositories in action:

Platform Repository

Team Repository

Using the Features

Best Practices

  1. Platform Team Responsibilities:

    • Maintain core entities and data sources

    • Define and manage batch/stream feature views

    • Use partial=False to maintain full control

    • Document available features for teams to use

  2. Team Responsibilities:

    • Always use partial=True when applying objects

    • Follow naming conventions (prefix with team name)

    • Only create FeatureServices and ODFVs

    • Reference platform feature views by name, don't redefine them

  3. Registry Management:

    • Use a centralized remote registry (S3, GCS, SQL)

    • Implement access controls at the infrastructure level

    • Set up monitoring for registry changes

    • Regular backups of registry state

  4. Testing Strategy:

    • Use staging registries for testing changes

    • Validate team applies don't modify platform objects

    • Test feature retrieval end-to-end before production deployment

  5. Documentation:

    • Maintain a catalog of available platform features

    • Document team ownership of FeatureServices and ODFVs

    • Keep architecture diagrams up to date

Troubleshooting

Problem: Team accidentally deleted platform objects

Cause: Team used partial=False instead of partial=True.

Solution:

  • Restore from registry backup

  • Add validation in team CI/CD to prevent partial=False

  • Set registry permissions to prevent teams from deleting objects

Problem: Feature service references unknown feature view

Cause: Feature view not yet applied by platform team.

Solution:

  • Ensure platform applies are run before team applies

  • Use CI/CD dependencies to enforce ordering

  • Add validation to check that referenced feature views exist

Problem: Registry conflicts between teams

Cause: Teams using same object names.

Solution:

  • Enforce naming conventions with prefixes

  • Add validation to check for name collisions

  • Consider using separate projects per team (advanced)

Summary

A multi-team feature store architecture enables scalable collaboration across multiple teams:

  • The platform team maintains core objects (entities, sources, views) with partial=False

  • Individual teams safely add their FeatureServices and ODFVs with partial=True

  • Clear ownership boundaries prevent accidental deletions and conflicts

  • Proper CI/CD, naming conventions, and validation ensure smooth operation

This pattern (sometimes referred to as "federated" feature stores) allows organizations to scale Feast usage across many teams while maintaining a consistent, well-governed feature store.

Last updated

Was this helpful?