The feature server is an HTTP endpoint that serves features with JSON I/O. This enables users to write + read features from Feast online stores using any programming language that can make HTTP requests.
CLI
There is a CLI command that starts the server: feast serve. By default, Feast uses port 6566; the port be overridden by a --port flag.
Deploying as a service
One can also deploy a feature server by building a docker image that bundles in the project's feature_store.yaml. See helm chart for example.
A remote feature server on AWS Lambda is available. A remote feature server on GCP Cloud Run is currently being developed.
Example
Initializing a feature server
Here's the local feature server usage example with the local template:
$feastinitfeature_repoCreatinganewFeastrepositoryin/home/tsotne/feast/feature_repo.$cdfeature_repo$feastapplyRegisteredentitydriver_idRegisteredfeatureviewdriver_hourly_statsDeployinginfrastructurefordriver_hourly_stats$feastmaterialize-incremental $(date+%Y-%m-%d)Materializing1featureviewsto2021-09-0917:00:00-07:00intothesqliteonlinestore.driver_hourly_statsfrom2021-09-0916:51:08-07:00to2021-09-0917:00:00-07:00:100%|████████████████████████████████████████████████████████████████|5/5 [00:00<00:00, 295.24it/s]$feastserveThis is an experimental feature. It's intended for early testing and feedback, and could change without warnings in future releases.
INFO:Startedserverprocess [8889]09/10/202110:42:11AMINFO:Startedserverprocess [8889]INFO:Waitingforapplicationstartup.09/10/202110:42:11AMINFO:Waitingforapplicationstartup.INFO:Applicationstartupcomplete.09/10/202110:42:11AMINFO:Applicationstartupcomplete.INFO:Uvicornrunningonhttp://127.0.0.1:6566 (Press CTRL+Ctoquit)09/10/202110:42:11AMINFO:Uvicornrunningonhttp://127.0.0.1:6566 (Press CTRL+Ctoquit)
Retrieving features from the online store
After the server starts, we can execute cURL commands from another terminal tab:
You can push data corresponding to a push source to the online and offline stores (note that timestamps need to be strings):
You can also define a pushmode to push stream or batch data, either to the online store, offline store, or both. The feature server will throw an error if the online/offline store doesn't support the push api functionality.
The request definition for pushmode is a string parameter to where the options are: ["online", "offline", "online_and_offline"].