Featureform runs on Kubernetes. We use it to run our services, and to spin up worker pods. Kubernetes allows us to be cloud-agnostic, it also makes it easy to deploy us. It’s just a one-line helm install. Note that even though Featureform requires Kubernetes, your infrastructure providers do not have to be running on Kubernetes.
The metadata contains all of the definitions a user creates via the Python interface. It is the source of truth and is strongly consistent. It acts as the “desired” state for the system, and the coordinator’s job is to achieve that state.
The coordinator service listens for changes in metadata and then creates worker pods to interact with the infrastructure providers. The workers actually perform work like copying data between places, whereas the coordinator handles failure, retries, and other distributed system logic. It also makes sure that operations are performed atomically. Finally, it handles scheduling for transformations that run on a cadence.
Serving directly interacts with infrastructure providers. It maps the Featureform abstraction to the underlying tables that physically make up each feature and training set. It aims to be as lightweight as possible to add as little latency as possible.
Prometheus is configured to monitor Featureform itself as well as the infrastructure providers. This information is used directly in the dashboard and can be queried directly.
The dashboard provides a read-only view of metadata and metrics. It interacts with a dashboard API that wraps metadata and communicates directly with Prometheus for monitoring data. The dashboard itself is written in React.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Featureform","colors":{"primary":"#F7195C","light":"#FF487F","dark":"#F7195C"},"favicon":"/favicon.svg","logo":{"light":"https://mintcdn.com/featureform/ge8yI-LRr4sD_ybq/logo.svg?fit=max\u0026auto=format\u0026n=ge8yI-LRr4sD_ybq\u0026q=85\u0026s=5c92640b0314272fdcf5f4061e3d2ae9","dark":"https://mintcdn.com/featureform/ge8yI-LRr4sD_ybq/logo.svg?fit=max\u0026auto=format\u0026n=ge8yI-LRr4sD_ybq\u0026q=85\u0026s=5c92640b0314272fdcf5f4061e3d2ae9"},"navbar":{"links":[{"label":"Schedule a Demo","href":"https://calendly.com/d/y5h-jpf-gj7/featureform-intro-call-intro-call"}],"primary":{"type":"button","label":"Quickstart","href":"https://docs.featureform.com/"}},"footer":{"socials":{"twitter":"https://twitter.com/FeatureformML","linkedin":"https://www.linkedin.com/company/featureform-ml"}},"navigation":{"global":{"tabs":[{"tab":"Python SDK","href":"https://sdk.featureform.com/"}],"anchors":[{"anchor":"Community","href":"https://join.slack.com/t/featureform-community/shared_invite/zt-xhqp2m4i-JOCaN1vRN2NDXSVif10aQg","icon":"slack"},{"anchor":"Github","href":"https://github.com/featureform","icon":"github"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"featureform","hasAudioNarration":false,"actualSubdomain":"featureform","customDomains":["docs.featureform.com"],"gitSource":{"type":"github","owner":"featureform","repo":"featureform","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21e60d4c43fec466d7927a","collectionId":"2efa229a-a369-473e-ab0d-8a6bc8ff186b","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae91d2a5d9fe27156016933:success","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"Documentation","count":69},{"language":"default","tag":"Supported Infrastructure Providers","count":26},{"language":"default","tag":"Overview","count":13},{"language":"default","tag":"Concepts","count":12},{"language":"default","tag":"Using Featureform","count":10},{"language":"default","tag":"Offline Stores","count":10},{"language":"default","tag":"Featureform Resource Types","count":9},{"language":"default","tag":"Deployment","count":7},{"language":"default","tag":"Inference Stores","count":5},{"language":"default","tag":"Object and File Stores","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"system-architecture","slug":"/system-architecture","pageMetadata":{"title":"System Architecture","description":null,"href":"/system-architecture"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={p:`p`,..._provideComponents(),...props.components},{Heading,OptimizedImage}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(OptimizedImage,{src:`https://mintlify.s3.us-west-1.amazonaws.com/featureform/images`,alt:``}),`\n`,_jsx(_components.p,{children:`A map of the Featureform services and the components that they interface with.`}),`\n`,_jsx(Heading,{level:`2`,id:`kubernetes`,children:`Kubernetes`}),`\n`,_jsx(_components.p,{children:`Featureform runs on Kubernetes. We use it to run our services, and to spin up worker pods. Kubernetes allows us to be cloud-agnostic, it also makes it easy to deploy us. It’s just a one-line helm install. Note that even though Featureform requires Kubernetes, your infrastructure providers do not have to be running on Kubernetes.`}),`\n`,_jsx(Heading,{level:`2`,id:`metadata`,children:`Metadata`}),`\n`,_jsx(_components.p,{children:`The metadata contains all of the definitions a user creates via the Python interface. It is the source of truth and is strongly consistent. It acts as the “desired” state for the system, and the coordinator’s job is to achieve that state.`}),`\n`,_jsx(Heading,{level:`2`,id:`coordinator`,children:`Coordinator`}),`\n`,_jsx(_components.p,{children:`The coordinator service listens for changes in metadata and then creates worker pods to interact with the infrastructure providers. The workers actually perform work like copying data between places, whereas the coordinator handles failure, retries, and other distributed system logic. It also makes sure that operations are performed atomically. Finally, it handles scheduling for transformations that run on a cadence.`}),`\n`,_jsx(Heading,{level:`2`,id:`serving`,children:`Serving`}),`\n`,_jsx(_components.p,{children:`Serving directly interacts with infrastructure providers. It maps the Featureform abstraction to the underlying tables that physically make up each feature and training set. It aims to be as lightweight as possible to add as little latency as possible.`}),`\n`,_jsx(Heading,{level:`2`,id:`monitoring`,children:`Monitoring`}),`\n`,_jsx(_components.p,{children:`Prometheus is configured to monitor Featureform itself as well as the infrastructure providers. This information is used directly in the dashboard and can be queried directly.`}),`\n`,_jsx(Heading,{level:`2`,id:`dashboard`,children:`Dashboard`}),`\n`,_jsx(_components.p,{children:`The dashboard provides a read-only view of metadata and metrics. It interacts with a dashboard API that wraps metadata and communicates directly with Prometheus for monitoring data. The dashboard itself is written in React.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"System Architecture","description":null,"href":"/system-architecture"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Kubernetes","slug":"kubernetes","depth":2,"children":[]},{"title":"Metadata","slug":"metadata","depth":2,"children":[]},{"title":"Coordinator","slug":"coordinator","depth":2,"children":[]},{"title":"Serving","slug":"serving","depth":2,"children":[]},{"title":"Monitoring","slug":"monitoring","depth":2,"children":[]},{"title":"Dashboard","slug":"dashboard","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"featureform","siteName":"Featureform","title":"System Architecture - Featureform","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-06T23:45:41.323Z","originalFileLocation":"system-architecture.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Featureform\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"System Architecture - Featureform\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Featureform\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.featureform.com/system-architecture\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://featureform.mintlify.site/_mintlify/api/og/v2?division=Deployment\u0026amp;title=System+Architecture\u0026amp;theme=e5c0967714b515882258126f\u0026amp;signature=d1c3de81f2243090cd09e5c994627e947fa56be06651e4abfc03801734f00ec8\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"System Architecture - Featureform\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://featureform.mintlify.site/_mintlify/api/og/v2?division=Deployment\u0026amp;title=System+Architecture\u0026amp;theme=e5c0967714b515882258126f\u0026amp;signature=d1c3de81f2243090cd09e5c994627e947fa56be06651e4abfc03801734f00ec8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/featureform/v0loGK3GrZwZX3jL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Featureform\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F7195C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.featureform.com/system-architecture\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/system-architecture.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.featureform.com/#organization\",\"name\":\"Featureform\",\"url\":\"https://docs.featureform.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/featureform/ge8yI-LRr4sD_ybq/logo.svg?fit=max\u0026auto=format\u0026n=ge8yI-LRr4sD_ybq\u0026q=85\u0026s=5c92640b0314272fdcf5f4061e3d2ae9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.featureform.com#website\",\"name\":\"Featureform\",\"url\":\"https://docs.featureform.com\",\"publisher\":{\"@id\":\"https://docs.featureform.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.featureform.com/system-architecture#webpage\",\"url\":\"https://docs.featureform.com/system-architecture\",\"name\":\"System Architecture\",\"dateModified\":\"2026-01-06T23:45:41.323Z\",\"isPartOf\":{\"@id\":\"https://docs.featureform.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.featureform.com/system-architecture#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.featureform.com/system-architecture#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deployment\",\"item\":\"https://docs.featureform.com/deployment/local-mode\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"System Architecture\",\"item\":\"https://docs.featureform.com/system-architecture\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.featureform.com/system-architecture#article\",\"headline\":\"System Architecture\",\"name\":\"System Architecture\",\"url\":\"https://docs.featureform.com/system-architecture\",\"mainEntityOfPage\":{\"@id\":\"https://docs.featureform.com/system-architecture#webpage\"},\"dateModified\":\"2026-01-06T23:45:41.323Z\",\"publisher\":{\"@id\":\"https://docs.featureform.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.featureform.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Featureform\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Featureform","nav":{"global":{"tabs":[{"tab":"Python SDK","href":"https://sdk.featureform.com/"}],"anchors":[{"anchor":"Community","href":"https://join.slack.com/t/featureform-community/shared_invite/zt-xhqp2m4i-JOCaN1vRN2NDXSVif10aQg","icon":"slack"},{"anchor":"Github","href":"https://github.com/featureform","icon":"github"}]},"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Overview","pages":[{"title":"What is Featureform?","href":"/introduction"},{"title":"Quickstart","href":"/deployment/quickstart-docker"},{"group":"Concepts","pages":[{"title":"Immutability, Lineage, and Directed Acyclic Graphs (DAGs)","href":"/concepts/immutability-lineage-and-dags"},{"title":"Versioning and Variants","href":"/concepts/versioning-and-variants"},{"title":"Setting Custom Tags and Properties","href":"/concepts/tags-and-properties"},{"title":"Streaming Data: Real-time Updates","href":"/concepts/streaming"},{"title":"Exploring Resources with Dataframes","href":"/concepts/dataframes"},{"title":"Dataframe and SQL Transformation Support","href":"/concepts/dataframe-sql-transformation"},{"title":"The LLM Workflow with Featureform","href":"/concepts/rag-vector-db-llms"},{"title":"Calculating On-Demand Features at Request Time","href":"/concepts/on-demand-features-request-time"},{"title":"Search and Discover Features and Transformations","href":"/concepts/search-and-discovery-features"},{"title":"Achieving Point-in-Time Correctness and Handling Historical Features with Time Series Data","href":"/concepts/point-in-time-correctness-historical-features-timeseries-data"},{"title":"Governance and Access Control: Ensuring Compliance","href":"/concepts/governance-and-access-control"},{"title":"Open-Source vs. Enterprise Featureform: What Sets Them Apart","href":"/concepts/enterprise-vs-open-source-feature-store"}]}]},{"group":"Using Featureform","pages":[{"title":"Featureform Workflow","href":"/getting-started/featureform-workflow"},{"title":"Architecture and Components","href":"/getting-started/architecture-and-components"},{"title":"Registering Infrastructure Providers","href":"/getting-started/connecting-your-data-infrastructure"},{"group":"Register, Transform, and Interact with Data Sets","pages":[{"title":"Transforming Data Sets","sidebarTitle":"Overview","href":"/getting-started/registering-transforming-and-interacting-with-data-sets"},{"title":"Scheduling Resources","href":"/getting-started/scheduling-resources"},{"title":"Streaming Data: Real-time Updates","href":"/getting-started/streaming-features"},{"title":"Calculating On-Demand Features at Request Time","href":"/getting-started/on-demand-features-request-time"}]},{"group":"Register and Serve Features and Training Sets","pages":[{"title":"Register and Serve Features, Labels, and Training Sets","sidebarTitle":"Overview","href":"/getting-started/register-and-serve-features-training-sets"},{"title":"Model to Feature Lineage","href":"/getting-started/model-to-feature-lineage"},{"title":"Calculating On-Demand Features at Request Time","href":"/getting-started/on-demand-features-request-time"},{"title":"Streaming Data: Real-time Updates","href":"/getting-started/streaming-features"}]},{"title":"Exploring the Feature Registry","href":"/getting-started/search-monitor-discovery-feature-registry-ui-cli"}]},{"group":"Featureform Resource Types","pages":[{"title":"Abstractions","href":"/abstractions/abstractions"},{"title":"Data Infrastructure Provider","href":"/abstractions/data-infrastructure-providers"},{"title":"Primary Data Sets","href":"/abstractions/primary-data-sets"},{"title":"Transforming Data Sets","href":"/abstractions/transforming-data-sets"},{"title":"Entities","href":"/abstractions/entity"},{"title":"Features","href":"/abstractions/feature"},{"title":"Embeddings","href":"/abstractions/embedding"},{"title":"Labels","href":"/abstractions/label"},{"title":"Training Sets","href":"/abstractions/training-set"}]},{"group":"LLMs, Embeddings, and Vector Databases","pages":[{"title":"LLM Workflow","href":"/llms-embeddings-and-vector-databases/llm-workflow-with-featureform"},{"title":"Building a Chatbot with OpenAI and a Vector Database","href":"/llms-embeddings-and-vector-databases/building-a-chatbot-with-openai-and-a-vector-database"}]},{"group":"Common Use Cases and Examples","pages":[{"title":"Fraud Detection and Featureform","href":"/use-cases/fraud-detection"},{"title":"Retrieval Augmented Generation (RAG) Workflow for Chatbots with Featureform","href":"/use-cases/llm-chatbot-rag"}]},{"group":"Supported Infrastructure Providers","pages":[{"title":"Overview of Infrastructure Providers","href":"/providers/overview"},{"group":"Offline Stores","pages":[{"title":"Offline Store","sidebarTitle":"Overview","href":"/providers/offline-store"},{"title":"Snowflake","href":"/providers/snowflake"},{"title":"Spark","href":"/providers/spark"},{"title":"Spark with Databricks","href":"/providers/spark_databricks"},{"title":"Spark with EMR","href":"/providers/spark_emr"},{"title":"Kubernetes","href":"/providers/kubernetes"},{"title":"BigQuery","href":"/providers/bigquery"},{"title":"Postgres","href":"/providers/postgres"},{"title":"Redshift","href":"/providers/redshift"},{"title":"ClickHouse","href":"/providers/clickhouse"}]},{"group":"Object and File Stores","pages":[{"title":"Object and File Stores","sidebarTitle":"Overview","href":"/providers/object-and-file-stores"},{"title":"S3","href":"/providers/aws-s3"},{"title":"Azure Blobs","href":"/providers/azure-blob-store"},{"title":"Google Cloud (GCS)","href":"/providers/google-cloud-gcs"},{"title":"HDFS","href":"/providers/hdfs"}]},{"group":"Inference Stores","pages":[{"title":"Cassandra","href":"/inference-online-stores/cassandra"},{"title":"DynamoDB","href":"/inference-online-stores/dynamodb"},{"title":"Firestore","href":"/inference-online-stores/firestore"},{"title":"MongoDB","href":"/inference-online-stores/mongodb"},{"title":"Redis","href":"/inference-online-stores/redis"}]},{"group":"Vector Databases","pages":[{"title":"Vector Database","sidebarTitle":"Overview","href":"/providers/vector-db"},{"title":"Redis","href":"/providers/redis"},{"title":"Pinecone","href":"/providers/pinecone"},{"title":"Weaviate","href":"/providers/weaviate"}]},{"title":"Extending Featureform with Custom Providers and Requesting New Providers","href":"/providers/custom-providers"}]},{"group":"Deployment","pages":[{"title":"Local mode","href":"/deployment/local-mode"},{"title":"Quickstart","href":"/deployment/quickstart-docker"},{"title":"Kubernetes","href":"/deployment/kubernetes"},{"title":"AWS","href":"/deployment/quickstart-aws"},{"title":"Azure","href":"/deployment/quickstart-azure"},{"title":"Google Cloud","description":"This quickstart will walk through creating a few simple features, labels, and a training set using BigQuery and Firestore. We will use a transaction fraud training set.","href":"/deployment/quickstart-gcp"},{"title":"System Architecture","href":"/system-architecture"},{"title":"Backup and Restore","description":"Featureform can be configured to take periodic snapshots of itself that are backed up to your specified cloud storage. In case of an incident, this snapshot can be pulled and reloaded to restore Featureform to a previous state.","href":"/deployment/backup-and-restore"}]}]}]},"basePath":"","title":"System Architecture - Featureform","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CLQdF-Ar.js","lightbox-handle-r17bVUz3.js"]}