# Learning by example

This workshop aims to teach users about Feast.

We explain concepts & best practices by example, and also showcase how to address common use cases.

### Pre-requisites

This workshop assumes you have the following installed:

* A local development environment that supports running Jupyter notebooks (e.g. VSCode with Jupyter plugin)
* Python 3.7+
* Java 11 (for Spark, e.g. `brew install java11`)
* pip
* Docker & Docker Compose (e.g. `brew install docker docker-compose`)
* Terraform ([docs](https://learn.hashicorp.com/tutorials/terraform/install-cli#install-terraform))
* AWS CLI
* An AWS account setup with credentials via `aws configure` (e.g see [AWS credentials quickstart](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds))

Since we'll be learning how to leverage Feast in CI/CD, you'll also need to fork this workshop repository.

#### **Caveats**

* M1 Macbook development is untested with this flow. See also [How to run / develop for Feast on M1 Macs](https://github.com/feast-dev/feast/issues/2105).
* Windows development has only been tested with WSL. You will need to follow this [guide](https://docs.docker.com/desktop/windows/wsl/) to have Docker play nicely.

### Modules

*See also:* [*Feast quickstart*](https://docs.feast.dev/getting-started/quickstart)*,* [*Feast x Great Expectations tutorial*](https://docs.feast.dev/tutorials/validating-historical-features)

These are meant mostly to be done in order, with examples building on previous concepts.

<table><thead><tr><th width="150" align="center">Time (min)</th><th width="302.0996784565916">Description</th><th>Module</th></tr></thead><tbody><tr><td align="center">30-45</td><td>Setting up Feast projects &#x26; CI/CD + powering batch predictions</td><td><a href="https://github.com/feast-dev/feast-workshop/tree/main/module_0">Module 0</a></td></tr><tr><td align="center">15-20</td><td>Streaming ingestion &#x26; online feature retrieval with Kafka, Spark, Redis</td><td><a href="https://github.com/feast-dev/feast-workshop/tree/main/module_1">Module 1</a></td></tr><tr><td align="center">10-15</td><td>Real-time feature engineering with on demand transformations</td><td><a href="https://github.com/feast-dev/feast-workshop/tree/main/module_2">Module 2</a></td></tr><tr><td align="center">TBD</td><td>Feature server deployment (embed, as a service, AWS Lambda)</td><td>TBD</td></tr><tr><td align="center">TBD</td><td>Versioning features / models in Feast</td><td>TBD</td></tr><tr><td align="center">TBD</td><td>Data quality monitoring in Feast</td><td>TBD</td></tr><tr><td align="center">TBD</td><td>Batch transformations</td><td>TBD</td></tr><tr><td align="center">TBD</td><td>Stream transformations</td><td>TBD</td></tr></tbody></table>
