# techiescamp/mlops-for-devops architecture

> Architecture diagram of the GitHub repository techiescamp/mlops-for-devops, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/techiescamp/mlops-for-devops
- Repository: https://github.com/techiescamp/mlops-for-devops

## Overview

This repository is a hands-on MLOps learning project, not one unified runtime: it demonstrates local employee-attrition modeling and serving, then enterprise alternatives for data versioning, feature management, orchestration, training, experiment tracking, deployment, and monitoring. The principal user path is browser input through the Flask frontend to the FastAPI prediction service and back. The README documents broader enterprise capabilities, but several implementations were not sampled, so their internal wiring is intentionally omitted.

Main entry points: [`phase-1-local-dev/frontend/app.py`](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/frontend/app.py) (Prediction frontend), [`phase-2-enterprise-setup/airflow/dags/dataset-pipeline.py`](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/airflow/dags/dataset-pipeline.py) (DVC data pipeline), [`phase-2-enterprise-setup/kubeflow-pipeline/pipeline.py`](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/kubeflow-pipeline/pipeline.py) (Kubeflow pipeline), [`phase-1-local-dev/datasets/employee_attrition.csv`](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/datasets/employee_attrition.csv) (Attrition dataset)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_local["Local ML workflow"]
  node_dataset["Attrition dataset"]
  node_ingestion["Data ingestion<br/>[01_ingestion.py]"]
  node_validation["Data validation<br/>[02_validation.py]"]
  node_eda["Data exploration<br/>[03_eda.py]"]
  node_cleaning["Data cleaning<br/>[04_cleaning.py]"]
  node_features["Feature engineering<br/>[05_feature_engg.py]"]
  node_preprocessing["Preprocessing"]
  node_training["Model training<br/>[01_training.py]"]
  node_tuning["Model tuning<br/>[04_tuning.py]"]
end

subgraph group_serve["Prediction serving"]
  node_frontend["Prediction frontend<br/>[app.py]"]
  node_inference["Inference API<br/>[app.py]"]
  node_predictor["Model predictor<br/>[predictor.py]"]
  node_model["Serialized model<br/>[model.pkl]"]
end

subgraph group_enterprise["Enterprise workflows"]
  node_dvc_pipeline["DVC data pipeline"]
  node_feast_convert["Feature conversion<br/>[csv_to_parquet.py]"]
  node_feast_defs["Feature definitions"]
  node_kfp["Kubeflow pipeline<br/>[pipeline.py]"]
  node_kfp_components["Pipeline components"]
  node_distributed_train["Distributed training<br/>[sdk_train.py]"]
  node_mlflow_train["Tracked training"]
end

subgraph group_platform["Platform operations"]
  node_monitoring["Model monitoring"]
end

node_user(("Prediction user"))
node_browser(("Web browser"))
node_dvc_storage[("DVC remote storage")]
node_git_remote["Git remote"]
node_mlflow_server["MLflow tracking server"]
node_evidently_workspace[("Evidently workspace")]

node_dataset -->|"reads CSV"| node_ingestion
node_browser -->|"submits features"| node_frontend
node_frontend -->|"posts prediction"| node_inference
node_inference -->|"calls predictor"| node_predictor
node_predictor -->|"loads model"| node_model
node_frontend -->|"returns result"| node_browser
node_dvc_pipeline -->|"pushes data"| node_dvc_storage
node_dvc_pipeline -->|"commits version"| node_git_remote
node_feast_convert -->|"reads CSV"| node_dataset
node_kfp -->|"invokes stages"| node_kfp_components
node_kfp -.->|"none"| node_mlflow_server
node_mlflow_train -->|"logs run"| node_mlflow_server
node_monitoring -->|"pushes snapshots"| node_evidently_workspace

click node_dataset "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/datasets/employee_attrition.csv"
click node_ingestion "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/01_ingestion.py"
click node_validation "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/02_validation.py"
click node_eda "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/03_eda.py"
click node_cleaning "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/04_cleaning.py"
click node_features "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/05_feature_engg.py"
click node_preprocessing "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/06_preprocessing.py"
click node_training "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/model_training/01_training.py"
click node_tuning "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/model_training/04_tuning.py"
click node_frontend "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/frontend/app.py"
click node_inference "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/src/app.py"
click node_predictor "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/src/predictor.py"
click node_model "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/artifacts/model.pkl"
click node_dvc_pipeline "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/airflow/dags/dataset-pipeline.py"
click node_feast_convert "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/feast/csv_to_parquet.py"
click node_feast_defs "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/feast/feature_definitions.py"
click node_kfp "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/kubeflow-pipeline/pipeline.py"
click node_kfp_components "https://github.com/techiescamp/mlops-for-devops/tree/main/phase-2-enterprise-setup/kubeflow-pipeline/components"
click node_distributed_train "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/kubeflow-trainer/sdk_train.py"
click node_mlflow_train "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/mlflow/train_and_log_model.py"
click node_monitoring "https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/evidently-ai/model-monitoring.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dataset,node_ingestion,node_validation,node_eda,node_cleaning,node_features,node_preprocessing,node_training,node_tuning,node_user,node_browser toneBlue
class node_frontend,node_inference,node_predictor,node_model,node_dvc_storage,node_evidently_workspace toneAmber
class node_dvc_pipeline,node_feast_convert,node_feast_defs,node_kfp,node_kfp_components,node_distributed_train,node_mlflow_train,node_mlflow_server toneMint
class node_monitoring toneRose
class node_git_remote toneIndigo
```

## Components

### Local ML workflow

- [Attrition dataset](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/datasets/employee_attrition.csv): `phase-1-local-dev/datasets/employee_attrition.csv`
- [Data ingestion](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/01_ingestion.py): `phase-1-local-dev/src/data_preparation/01_ingestion.py`
- [Data validation](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/02_validation.py): `phase-1-local-dev/src/data_preparation/02_validation.py`
- [Data exploration](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/03_eda.py): `phase-1-local-dev/src/data_preparation/03_eda.py`
- [Data cleaning](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/04_cleaning.py): `phase-1-local-dev/src/data_preparation/04_cleaning.py`
- [Feature engineering](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/05_feature_engg.py): `phase-1-local-dev/src/data_preparation/05_feature_engg.py`
- [Preprocessing](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/data_preparation/06_preprocessing.py): `phase-1-local-dev/src/data_preparation/06_preprocessing.py`
- [Model training](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/model_training/01_training.py): `phase-1-local-dev/src/model_training/01_training.py`
- [Model tuning](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/src/model_training/04_tuning.py): `phase-1-local-dev/src/model_training/04_tuning.py`

### Prediction serving

- [Prediction frontend](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/frontend/app.py): `phase-1-local-dev/frontend/app.py`
- [Inference API](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/src/app.py): `phase-1-local-dev/inference/src/app.py`
- [Model predictor](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/src/predictor.py): `phase-1-local-dev/inference/src/predictor.py`
- [Serialized model](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-1-local-dev/inference/artifacts/model.pkl): `phase-1-local-dev/inference/artifacts/model.pkl`

### Enterprise workflows

- [DVC data pipeline](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/airflow/dags/dataset-pipeline.py): `phase-2-enterprise-setup/airflow/dags/dataset-pipeline.py`
- [Feature conversion](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/feast/csv_to_parquet.py): `phase-2-enterprise-setup/feast/csv_to_parquet.py`
- [Feature definitions](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/feast/feature_definitions.py): `phase-2-enterprise-setup/feast/feature_definitions.py`
- [Kubeflow pipeline](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/kubeflow-pipeline/pipeline.py): `phase-2-enterprise-setup/kubeflow-pipeline/pipeline.py`
- [Pipeline components](https://github.com/techiescamp/mlops-for-devops/tree/main/phase-2-enterprise-setup/kubeflow-pipeline/components): `phase-2-enterprise-setup/kubeflow-pipeline/components`
- [Distributed training](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/kubeflow-trainer/sdk_train.py): `phase-2-enterprise-setup/kubeflow-trainer/sdk_train.py`
- [Tracked training](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/mlflow/train_and_log_model.py): `phase-2-enterprise-setup/mlflow/train_and_log_model.py`

### Platform operations

- [Model monitoring](https://github.com/techiescamp/mlops-for-devops/blob/main/phase-2-enterprise-setup/evidently-ai/model-monitoring.py): `phase-2-enterprise-setup/evidently-ai/model-monitoring.py`

### Other components

- **Prediction user**
- **Web browser**
- **DVC remote storage**
- **Git remote**
- **MLflow tracking server**
- **Evidently workspace**

## Connections

- Attrition dataset → Data ingestion: reads CSV
- Web browser → Prediction frontend: submits features
- Prediction frontend → Inference API: posts prediction
- Inference API → Model predictor: calls predictor
- Model predictor → Serialized model: loads model
- Prediction frontend → Web browser: returns result
- DVC data pipeline → DVC remote storage: pushes data
- DVC data pipeline → Git remote: commits version
- Feature conversion → Attrition dataset: reads CSV
- Kubeflow pipeline → Pipeline components: invokes stages
- Kubeflow pipeline → MLflow tracking server: none
- Tracked training → MLflow tracking server: logs run
- Model monitoring → Evidently workspace: pushes snapshots
