Repository navigation
Closed
Labels
Milestone
Description
This issue is created to compile the feedbacks from users regarding Feature set versioning in Feast.
Feedback
- Some users do not care about feature versioning at all and would like to use latest feature set all the time. The current workaround is to make an API call to retrieve the latest version of a feature set, then use it to construct the correct feature id string.
- Bumping up feature set version might be redundant in the case of backward compatible changes, as neither the ingestion and retrieval workflow should be affected.
Potential solution and associated complexity
- We can make feature set version optional for feature id. In the case where feature set version is not specified, we should use the latest version. However, this begs the question on whether this should be handled on the SDK side or the server side. Either way, the parsing of the feature id string will become significantly more complicated.
- We can scrap feature set versioning, and in return, does not allow any changes in Feature Set that is not backward incompatible. For example, there should not be any change in data type nor column drops. A column can be marked as deprecated, however, and will be filtered out during ingestion and retrieval. The risk of removing feature set versioning, is that there might be legitimate use case for versioning, such as when multiple teams are sharing feature set and not all the team might want to use the latest feature set.
Comments from more Feast users will be useful to determine which direction should we pursue for future version of Feast. In particular, it will be good to know if how are the existing users utilizing the feature set versioning.
Activity
woop commentedon Jan 4, 2020
One of the motivations for versions was to allow for a Feast Serving deployment to subscribe to specific feature sets which dont change over time. It would then decouple the users that modify feature sets from production systems.
The fear was that if we didnt have versions then users would implement their own versioning strategies in the feature set name itself, which would result in loads of feature sets in the global namespace.
My thoughts on the current state of Feast as it relates to versions:
To get back to your proposals above, which I will number (1) and (2).
woop commentedon Jan 4, 2020
Below is a straw-man proposal for us to attack. Let's assume that we remove versions entirely. The functionality is then as follows
Terminology:
Functionality:
Implementation:
updatingstate. Batch ingestions cannot be started until these changes are applied. Once the changes are applied, batch ingestion can function again and will use the latest schema. Any ingestion that has already been running will still continue to run, including streaming ingestion.zhilingc commentedon Mar 18, 2020
I've drafted a quick RFC for this, in hopes of picking this up soon (hopefully after the storage refactor).
https://docs.google.com/document/d/1P44LHd724JloQtpn10naAg5MlzcrkeOlN3QzAn9O8uY