All pages
Powered by GitBook
1 of 1

Loading...

Development guide

Overview

This guide is targeted at developers looking to contribute to Feast:

  • Project Structure

Learn How the Feast works.

Project Structure

Feast is composed of distributed into multiple repositories:

Making a Pull Request

See also the CONTRIBUTING.md in the corresponding GitHub repository (e.g. )

Incorporating upstream changes from master

Our preference is the use of git rebase instead of git merge : git pull -r

Signing commits

Commits have to be signed before they are allowed to be merged into the Feast codebase:

Good practices to keep in mind

  • Fill in the description based on the default template configured when you first open the PR

    • What this PR does/why we need it

    • Which issue(s) this PR fixes

Managing CI-test failures

  • GitHub runner tests

    • Click checks tab to analyse failed tests

  • Prow tests

Feast Data Storage Format

Feast data storage contracts are documented in the following locations:

  • : Used by BigQuery, Snowflake (Future), Redshift (Future).

  • : Used by Redis, Google Datastore.

Feast Protobuf API

Feast Protobuf API defines the common API used by Feast's Components:

  • Feast Protobuf API specifications are written in in the Main Feast Repository.

  • Changes to the API should be proposed via a for discussion first.

Generating Language Bindings

The language specific bindings have to be regenerated when changes are made to the Feast Protobuf API:

  • Helm Chart

Does this PR introduce a user-facing change
  • Include kind label when opening the PR

  • Add WIP: to PR name if more work needs to be done prior to review

  • Avoid force-pushing as it makes reviewing difficult

  • Visit Prow status page to analyse failed tests

    Repository

    Description

    Component(s)

    Main Feast Repository

    Hosts all required code to run Feast. This includes the Feast Python SDK and Protobuf definitions. For legacy reasons this repository still contains Terraform config and a Go Client for Feast.

    • Python SDK / CLI

    • Protobuf APIs

    • Documentation

    • Go Client

    • Terraform

    Feast Java

    Java-specific Feast components. Includes the Feast Core Registry, Feast Serving for serving online feature values, and the Feast Java Client for retrieving feature values.

    • Core

    • Serving

    • Java Client

    Feast Spark

    Feast Spark SDK & Feast Job Service for launching ingestion jobs and for building training datasets with Spark

    • Spark SDK

    • Job Service

    Feast Helm Chart

    Repository

    Language

    Regenerating Language Bindings

    Main Feast Repository

    Python

    Run make compile-protos-python to generate bindings

    Main Feast Repository

    Golang

    Run make compile-protos-go to generate bindings

    Feast Java

    Java

    No action required: bindings are generated automatically during compilation.

    Making a Pull Request
    Feast Data Storage Format
    Feast Protobuf API
    Contributing Process
    multiple components
    main repo doc
    Feast Offline Storage Format
    Feast Online Storage Format
    proto3
    GitHub Issue

    Helm Chart for deploying Feast on Kubernetes & Spark.

    # Include -s flag to signoff
    git commit -s -m "My first commit"