# \[Alpha] Go feature server

## Overview

The Go feature server is an HTTP/gRPC endpoint that serves features. It is written in Go.

## Configuration of `feature_store.yaml`

The current Go feature server needs a Python based feature Transformation service support. Please refer to the following code as an example:

```
# -*- coding: utf-8 -*-
from feast.feature_store import FeatureStore


def main():
    # Init the Feature Store
    store = FeatureStore(repo_path="./feature_repo/")

    # Start the feature transformation server
    # default port is 6569
    store.serve_transformations(6569)

if __name__ == "__main__":
    main()
```

At the same time, we need to configure the `feature_store.yaml` as following:

```
...
entity_key_serialization_version: 3
feature_server:
    type: local
    transformation_service_endpoint: "localhost:6569"
...
```

## Supported APIs

Here is the list of supported APIs:

| Method |          API         |                  Comment                  |
| :----: | :------------------: | :---------------------------------------: |
|  POST  | /get-online-features | Retrieve features of one or many entities |
|   GET  |        /health       |      Status of the Go Feature Server      |

## OTEL based Observability

The Go feature server support [OTEL](https://opentelemetry.io/) based Observabilities. To enable it, we need to set the global env `ENABLE_OTEL_TRACING` to `"true"` (as a string type!) in the container or your local OS.

```
export ENABLE_OTEL_TRACING='true'
```

There are example OTEL infra setup under the `/go/infra/docker/otel` folder.

## Demo

Please check the Reference\[2] for a local demo of Go feature server. If you want to see a real world example of applying Go feature server in Production, please check Reference\[1].

## Reference

1. [Expedia Group's Go Feature Server Implementation (in Production)](https://github.com/EXPEbdodla/feast)
2. [A Go Feature server demo from Feast](https://github.com/feast-dev/feast-credit-score-local-tutorial)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.feast.dev/reference/feature-servers/go-feature-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
