# muhammad-ahmad2511/telco-churn-mlops architecture

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

- Interactive diagram: https://gitdiagram.com/muhammad-ahmad2511/telco-churn-mlops
- Repository: https://github.com/muhammad-ahmad2511/telco-churn-mlops

## Overview

This repository is presented as an end-to-end Telco churn MLOps product: data preparation and feature materialization lead conceptually to model development, deployment for inference, and operational monitoring. The tree identifies those stages and the README names DVC, MLflow, Airflow, Kubeflow, Flask, BentoML, Docker, Kubernetes, AWS, and Prometheus/Grafana. Source excerpts are empty, so internal calls and concrete orchestration links cannot be verified; dashed, un evidenced edges indicate only the broad documented workflow.

Main entry points: [`src/models/train.py`](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/train.py) (Model training), [`src/serving/app.py`](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/app.py) (Flask API), [`src/data/ingestion.py`](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/ingestion.py) (Data ingestion), [`src/data/validation.py`](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/validation.py) (Data validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data and features"]
  node_ingestion["Data ingestion<br/>[ingestion.py]"]
  node_validation["Data validation<br/>[validation.py]"]
  node_preprocessing["Preprocessing<br/>[preprocessing.py]"]
  node_feature_store["Feature materialization<br/>[materialize.py]"]
end

subgraph group_models["Model development"]
  node_tuning["Hyperparameter tuning<br/>[tune.py]"]
  node_training["Model training<br/>[train.py]"]
  node_evaluation["Model evaluation<br/>[evaluate.py]"]
end

subgraph group_serving["Inference"]
  node_flask_api["Flask API<br/>[app.py]"]
  node_bento_service["BentoML service<br/>[bentoml_service.py]"]
  node_model_loader["Model loading<br/>[model_loader.py]"]
end

subgraph group_operations["MLOps operations"]
  node_mlflow[("MLflow")]
  node_dvc["DVC pipeline<br/>[dvc.yaml]"]
  node_airflow["Airflow orchestration"]
  node_kubeflow["Kubeflow pipelines"]
  node_monitoring["Monitoring<br/>[monitor.py]"]
  node_prometheus_grafana["Prometheus/Grafana"]
  node_docker["Docker runtime<br/>[docker-compose.yml]"]
  node_kubernetes["Kubernetes deployment"]
  node_aws["AWS"]
end

node_client(("Prediction client"))

node_client -.->|"requests predictions"| node_flask_api
node_ingestion -.->|"validate data"| node_validation
node_validation -.->|"prepare features"| node_preprocessing
node_preprocessing -.->|"materialize features"| node_feature_store
node_training -.->|"tune model"| node_tuning
node_training -.->|"evaluate model"| node_evaluation
node_training -.->|"track experiments"| node_mlflow
node_dvc -.->|"orchestrates pipeline"| node_ingestion
node_airflow -.->|"orchestrates"| node_training
node_kubeflow -.->|"orchestrates"| node_training
node_flask_api -.->|"loads model"| node_model_loader
node_bento_service -.->|"loads model"| node_model_loader
node_monitoring -.->|"exports metrics"| node_prometheus_grafana
node_docker -.->|"packages service"| node_flask_api
node_kubernetes -.->|"deploys runtime"| node_docker
node_aws -.->|"hosts deployment"| node_kubernetes

click node_ingestion "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/ingestion.py"
click node_validation "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/validation.py"
click node_preprocessing "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/features/preprocessing.py"
click node_feature_store "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/feature_store/materialize.py"
click node_tuning "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/tune.py"
click node_training "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/train.py"
click node_evaluation "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/evaluate.py"
click node_dvc "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/dvc.yaml"
click node_airflow "https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/pipelines/airflow"
click node_kubeflow "https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/pipelines/kubeflow"
click node_flask_api "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/app.py"
click node_bento_service "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/bentoml_service.py"
click node_model_loader "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/model_loader.py"
click node_monitoring "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/monitoring/monitor.py"
click node_docker "https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/docker/docker-compose.yml"
click node_kubernetes "https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/k8s"

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_ingestion,node_validation,node_preprocessing,node_feature_store,node_client toneBlue
class node_tuning,node_training,node_evaluation toneAmber
class node_flask_api,node_bento_service,node_model_loader toneMint
class node_mlflow,node_dvc,node_airflow,node_kubeflow,node_monitoring,node_prometheus_grafana,node_docker,node_kubernetes,node_aws toneRose
```

## Components

### Data and features

- [Data ingestion](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/ingestion.py): `src/data/ingestion.py`
- [Data validation](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/data/validation.py): `src/data/validation.py`
- [Preprocessing](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/features/preprocessing.py): `src/features/preprocessing.py`
- [Feature materialization](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/feature_store/materialize.py): `feature_store/materialize.py`

### Model development

- [Hyperparameter tuning](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/tune.py): `src/models/tune.py`
- [Model training](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/train.py): `src/models/train.py`
- [Model evaluation](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/models/evaluate.py): `src/models/evaluate.py`

### Inference

- [Flask API](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/app.py): `src/serving/app.py`
- [BentoML service](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/bentoml_service.py): `src/serving/bentoml_service.py`
- [Model loading](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/serving/model_loader.py): `src/serving/model_loader.py`

### MLOps operations

- **MLflow**
- [DVC pipeline](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/dvc.yaml): `dvc.yaml`
- [Airflow orchestration](https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/pipelines/airflow): `pipelines/airflow`
- [Kubeflow pipelines](https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/pipelines/kubeflow): `pipelines/kubeflow`
- [Monitoring](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/src/monitoring/monitor.py): `src/monitoring/monitor.py`
- **Prometheus/Grafana**
- [Docker runtime](https://github.com/muhammad-ahmad2511/telco-churn-mlops/blob/main/docker/docker-compose.yml): `docker/docker-compose.yml`
- [Kubernetes deployment](https://github.com/muhammad-ahmad2511/telco-churn-mlops/tree/main/k8s): `k8s`
- **AWS**

### Other components

- **Prediction client**

## Connections

- Prediction client → Flask API: requests predictions
- Data ingestion → Data validation: validate data
- Data validation → Preprocessing: prepare features
- Preprocessing → Feature materialization: materialize features
- Model training → Hyperparameter tuning: tune model
- Model training → Model evaluation: evaluate model
- Model training → MLflow: track experiments
- DVC pipeline → Data ingestion: orchestrates pipeline
- Airflow orchestration → Model training: orchestrates
- Kubeflow pipelines → Model training: orchestrates
- Flask API → Model loading: loads model
- BentoML service → Model loading: loads model
- Monitoring → Prometheus/Grafana: exports metrics
- Docker runtime → Flask API: packages service
- Kubernetes deployment → Docker runtime: deploys runtime
- AWS → Kubernetes deployment: hosts deployment
