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
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
Platform Team Responsibilities:
Maintain core entities and data sources
Define and manage batch/stream feature views
Use
partial=Falseto maintain full controlDocument available features for teams to use
Team Responsibilities:
Always use
partial=Truewhen applying objectsFollow naming conventions (prefix with team name)
Only create FeatureServices and ODFVs
Reference platform feature views by name, don't redefine them
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
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
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=FalseSet 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)
Related Resources
Structuring Feature Repos - Multi-environment setup patterns
Remote Registry - Remote registry configuration
Registry Server - Registry server setup
Feature Store API Reference -
apply()method documentation
Summary
A multi-team feature store architecture enables scalable collaboration across multiple teams:
The platform team maintains core objects (entities, sources, views) with
partial=FalseIndividual teams safely add their FeatureServices and ODFVs with
partial=TrueClear 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?