# Overview

![Feast Architecture Diagram](https://2576622532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4xQFsWt9TUD0u3wQqWy8%2Fuploads%2Fgit-blob-9f7df7c01969608f5a8b1d48b21f20ddeaed5590%2Ffeast_marchitecture.png?alt=media)

Feast's architecture is designed to be flexible and scalable. It is composed of several components that work together to provide a feature store that can be used to serve features for training and inference.

* Feast uses a [Push Model](https://docs.feast.dev/v0.42-branch/getting-started/architecture/push-vs-pull-model) to ingest data from different sources and store feature values in the online store. This allows Feast to serve features in real-time with low latency.
* Feast supports [feature transformation](https://docs.feast.dev/v0.42-branch/getting-started/architecture/feature-transformation) for On Demand and Streaming data sources and will support Batch transformations in the future. For Streaming and Batch data sources, Feast requires a separate [Feature Transformation Engine](https://docs.feast.dev/v0.42-branch/getting-started/feature-transformation#feature-transformation-engines) (in the batch case, this is typically your Offline Store). We are exploring adding a default streaming engine to Feast.
* Domain expertise is recommended when integrating a data source with Feast understand the [tradeoffs from different write patterns](https://docs.feast.dev/v0.42-branch/getting-started/architecture/write-patterns) to your application
* We recommend [using Python](https://docs.feast.dev/v0.42-branch/getting-started/architecture/language) for your Feature Store microservice. As mentioned in the document, precomputing features is the recommended optimal path to ensure low latency performance. Reducing feature serving to a lightweight database lookup is the ideal pattern, which means the marginal overhead of Python should be tolerable. Because of this we believe the pros of Python outweigh the costs, as reimplementing feature logic is undesirable. Java and Go Clients are also available for online feature retrieval.
* [Role-Based Access Control (RBAC)](https://docs.feast.dev/v0.42-branch/getting-started/architecture/rbac) is a security mechanism that restricts access to resources based on the roles of individual users within an organization. In the context of the Feast, RBAC ensures that only authorized users or groups can access or modify specific resources, thereby maintaining data security and operational integrity.


---

# 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/v0.42-branch/getting-started/architecture/overview.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.
