The Go Feature Server is a high-performance implementation of Feast's online feature serving component, written in Go. It provides low-latency gRPC-based feature retrieval for real-time model inference workloads. The Go Feature Server is currently in alpha status and serves as a performance-focused alternative to the Python and Java feature servers.
This document covers the Go Feature Server's architecture, deployment patterns, configuration, and integration points within the Feast ecosystem. For information about other feature serving options, see:
The Go Feature Server operates as part of Feast's multi-language service layer, providing an optimized path for online feature retrieval in production environments.
Architecture Overview
Sources: docs/SUMMARY.md157 README.md230 CHANGELOG.md99-103
The Go Feature Server fits into Feast's overall architecture as shown below:
Multi-Language Feature Server Comparison
Sources: README.md226-230 docs/roadmap.md60-65 infra/charts/feast/README.md1-11
The Go Feature Server provides the following core capabilities:
| Feature | Status | Description |
|---|---|---|
| gRPC API | ✅ Stable | High-performance feature retrieval via Protocol Buffers |
| Entity Serialization v3 | ✅ Supported | Compatible entity key generation with Python/Java servers |
| File Registry | ✅ Supported | Local file-based registry for feature definitions |
| S3 Registry Store | ✅ Supported | AWS S3-backed registry storage |
| GCS Registry Store | ✅ Supported | Google Cloud Storage-backed registry storage |
| HDFS Registry Support | ✅ Supported | Hadoop Distributed File System registry integration |
| OpenTelemetry | ✅ Supported | Observability and distributed tracing |
| Transformation Service | ✅ Supported | Integration with Python-based on-demand transformations |
| HTTP API | ❌ Not Available | Only gRPC is supported (unlike Python server) |
Sources: CHANGELOG.md25-135 docs/reference/registries/metadata.md1-29
The Go Feature Server is optimized for:
Typical use cases include:
Sources: README.md34 docs/getting-started/quickstart.md136
The Go Feature Server can be deployed on Kubernetes using the Feast Operator. While the Python and Java feature servers have explicit helm chart support, the Go Feature Server deployment follows a similar pattern through the FeatureStore Custom Resource.
Kubernetes Deployment Architecture
Sources: infra/feast-operator/README.md1-143 docs/how-to-guides/feast-on-kubernetes.md1-72
The Go Feature Server deployment is configured through the feature_store.yaml file, which includes a transformation service endpoint for on-demand feature support:
feature_store.yaml structure for Go Feature Server:
| Configuration Key | Required | Description |
|---|---|---|
project | Yes | Feast project name |
registry.path | Yes | Registry URI (file://, s3://, gs://, hdfs://) |
registry.cache_ttl_seconds | No | Registry cache refresh interval |
online_store | Yes | Online store configuration |
offline_store | Yes | Offline store configuration (for metadata) |
entity_key_serialization_version | Recommended | Set to 3 for compatibility |
feature_server.transformation_service_endpoint | Optional | Python transformation server endpoint |
Example feature_store.yaml:
Sources: docs/reference/registries/metadata.md1-29 docs/getting-started/quickstart.md106-117
The Go Feature Server is available as a Docker image and can be deployed as a standalone container:
Docker Container Deployment
Sources: infra/charts/feast/charts/feature-server/values.yaml1-141 infra/charts/feast/README.md1-82
The Go Feature Server supports multiple registry backend implementations for storing and retrieving feature definitions.
Registry Backend Options
Sources: CHANGELOG.md25-256 docs/reference/registries/hdfs.md1-42
Each registry store implementation provides the same interface for reading feature definitions:
| Registry Type | Protocol | Path Format | Authentication |
|---|---|---|---|
| File | Local I/O | file:///path/to/registry.pb or relative path | File system permissions |
| S3 | AWS SDK | s3://bucket-name/path/to/registry.pb | AWS credentials (IAM, env vars) |
| GCS | Google Cloud SDK | gs://bucket-name/path/to/registry.pb | GCP credentials (service account, env vars) |
| HDFS | Hadoop Client | hdfs://namenode:port/path/to/registry.pb | Hadoop config (HADOOP_HOME, Kerberos) |
The Go Feature Server maintains an in-memory cache of registry data to minimize latency:
registry.cache_ttl_seconds, the cache is periodically refreshedSources: sdk/python/tests/unit/infra/registry/test_sql_registry.py1-59 docs/reference/registries/metadata.md12-13
The Go Feature Server implements the Feast gRPC protocol for online feature retrieval. This protocol is defined in Protocol Buffer (.proto) files and is shared across all Feast feature server implementations.
gRPC Feature Retrieval Flow
The Go Feature Server implements Entity Key Serialization Version 3, which is the current standard for entity key generation in Feast:
The serialization logic ensures that:
Sources: CHANGELOG.md49-135 infra/charts/feast/values.yaml46
The primary gRPC endpoint accepts requests with:
feature_view_name:feature_name)The response includes:
Sources: docs/getting-started/quickstart.md136-164
The Go Feature Server can integrate with the Python-based Transformation Service for on-demand feature computations. This is necessary because on-demand transformations are typically defined in Python and cannot be executed natively in Go.
Transformation Service Integration Architecture
To enable on-demand feature transformation support in the Go Feature Server, configure the transformation service endpoint:
When deployed via Helm charts or the Feast Operator, the transformation service is automatically deployed alongside the Go Feature Server if on-demand feature views are defined.
Sources: infra/charts/feast/charts/transformation-service/README.md1-28 docs/reference/registries/metadata.md27-28 infra/charts/feast/charts/feature-server/values.yaml13-15
GetOnlineFeatures requestSources: infra/charts/feast/requirements.yaml1-15 infra/charts/feast/charts/transformation-service/Chart.yaml1-10
The Go Feature Server includes OpenTelemetry integration for distributed tracing and metrics collection.
OpenTelemetry Integration
The observability features include:
Sources: CHANGELOG.md103
| Feature | Python Feature Server | Java Feature Server | Go Feature Server |
|---|---|---|---|
| Protocol | HTTP + gRPC | gRPC | gRPC only |
| Language | Python (FastAPI) | Java (Spring Boot) | Go |
| Performance | Moderate (GIL limits) | Good (JVM optimized) | Excellent (native, concurrent) |
| Memory | High (Python runtime) | High (JVM heap) | Low (native binary) |
| Startup Time | Fast | Slow (JVM warmup) | Very fast |
| ODFV Execution | Native | Via Python service | Via Python service |
| Deployment Size | Medium | Large (JVM + deps) | Small (single binary) |
| Ecosystem | Rich Python ML libs | Enterprise Java tools | Cloud-native Go tooling |
| Use Case | Development, prototyping | Enterprise JVM environments | High-performance production |
| Status | Stable | Alpha | Alpha |
| HTTP REST API | ✅ Yes | ✅ Yes | ❌ No |
| Helm Charts | ✅ Available | ✅ Available | 🔄 Via Operator |
Sources: README.md226-232 docs/roadmap.md60-67 infra/charts/feast/README.md1-11
The Go Feature Server respects standard Feast environment variables for configuration:
| Environment Variable | Description | Example |
|---|---|---|
FEAST_REPO_PATH | Path to feature repository | /etc/feast/ |
FEAST_PROJECT | Feast project name | my_project |
AWS_ACCESS_KEY_ID | AWS credentials for S3 registry | (from AWS config) |
AWS_SECRET_ACCESS_KEY | AWS secret key | (from AWS config) |
GOOGLE_APPLICATION_CREDENTIALS | GCP service account file | /etc/gcp/sa.json |
HADOOP_HOME | Hadoop installation directory (for HDFS) | /usr/local/hadoop |
Required minimal configuration:
Production configuration with remote stores:
Sources: docs/reference/registries/metadata.md1-29 docs/getting-started/quickstart.md106-117 docs/reference/registries/hdfs.md29-42
When deploying via the Feast Operator, follow these patterns:
Sources: docs/how-to-guides/running-feast-in-production.md1-240 docs/how-to-guides/feast-on-kubernetes.md1-72
Current limitations of the Go Feature Server (alpha status):
The Go Feature Server is under active development with contributions from organizations like Expedia. Future enhancements may include native transformation support and additional registry backend options.
Sources: CHANGELOG.md99-135 docs/roadmap.md65
Refresh this wiki
This wiki was recently refreshed. Please wait 2 days to refresh again.