docs/adr/ADR-0002-component-refactor.md
Accepted
The Feast project originally existed as a single monolithic repository containing many tightly coupled components: Core Registry, Serving Service, Job Service, Client Libraries, Spark ingestion code, Helm charts, and Terraform configurations.
Two distinct user groups were identified:
Delivering a viable minimal product to solution teams required a lighter-weight approach. However, the monolithic codebase made this difficult due to tight coupling between components.
Adopt a staged approach to decouple the Feast codebase into modular, composable components:
Split the monorepo into focused repositories:
Document all component-level contracts (I/O), API specifications (Protobuf), data contracts, and architecture diagrams.
Remove unnecessary coupling between components, keeping only service contracts (Protobuf), data contracts, and integration tests as shared dependencies.
Reverse the relationship so the main Feast SDK can use Spark-related code as a specific compute provider, rather than requiring it.