An enterprise-grade MLOps platform for Dota 2 match prediction, meta analysis, and data-driven insights. Built with production-ready infrastructure patterns including automated CI/CD, multi-environment deployments, and comprehensive observability.
┌─────────────────────────────────────────────────────────────────┐
│ Dota2 Meta Lab Platform │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Data Fetcher │ │ ML Trainer │ │ API Service │ │
│ │ (Python) │ │ (PyTorch) │ │ (FastAPI) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └──────────────────┼──────────────────┘ │
│ │ │
│ ┌──────────────────┴──────────────────┐ │
│ │ │ │
│ ┌──────▼───────┐ ┌────────▼────────┐ │
│ │ MongoDB │ │ Redis │ │
│ │ (Database) │ │ (Cache) │ │
│ └──────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
- 🔄 Automated Data Pipeline - Real-time Dota 2 match data fetching and processing
- 🤖 ML Training Pipeline - Automated model training and versioning with MLflow
- ⚡ REST API - FastAPI-based inference service with async support
- 📊 Interactive Analysis - Jupyter notebooks for data exploration
- ☸️ Kubernetes Native - Helm charts for declarative deployments
- 🔀 Multi-Environment - Separate dev, staging, and production environments
- 🔄 GitOps Workflows - Automated CI/CD with GitHub Actions and Jenkins
- 📦 Container Registry - Multi-stage Docker builds optimized for production
- 🔍 Observability - Comprehensive monitoring and alerting setup
- 🛡️ High Availability - Replicated services with auto-scaling
- 💾 Persistent Storage - StatefulSets for databases with backup strategies
- 🔐 Security - RBAC, secrets management, and network policies
- 📈 Scalability - Horizontal pod autoscaling based on metrics
| Layer | Technology |
|---|---|
| Orchestration | Kubernetes (Kind for local, EKS/GKE for cloud) |
| Package Manager | Helm 3 |
| Container Runtime | Docker with BuildKit |
| CI/CD | GitHub Actions (dev/staging), Jenkins (production) |
| Database | MongoDB 7.0 |
| Cache | Redis 7.2 |
| ML Framework | PyTorch, Scikit-learn |
| API Framework | FastAPI |
| Monitoring | Prometheus + Grafana (optional) |
Namespaces:
- data # Production workloads
- data-dev # Development environment
- data-staging # Staging environment
Services:
- dota2-fetcher # Data ingestion service
- dota2-trainer # ML training jobs
- dota2-api # REST API service
- mongodb # Primary database
- redis # Caching layer
- jupyter # Analysis notebooks (dev only)| Environment | Branch | Namespace | Trigger | Approval |
|---|---|---|---|---|
| Development | dev |
data-dev |
Auto on push | ❌ None |
| Staging | staging |
data-staging |
Auto on push | ❌ None |
| Production | main |
data |
Jenkins | ✅ Manual |
- Docker Desktop or Kind
- kubectl
- Helm 3
- Python 3.11+
- Git
# Create MongoDB credentials
kubectl create secret generic mongodb-secret \
--from-literal=username=admin \
--from-literal=password=your-secure-password \
-n data-dev
# Create Docker registry credentials (for private images)
kubectl create secret docker-registry dockerhub-secret \
--docker-server=docker.io \
--docker-username=your-username \
--docker-password=your-token \
-n data-devThe platform sends automated notifications to Slack:
| Channel | Purpose | Trigger |
|---|---|---|
#github-deployments |
Dev/Staging deployments | GitHub Actions |
#jenkins-builds |
Production builds | Jenkins CI |
Notifications include:
- ✅ Deployment status (success/failure)
- ⏱️ Build duration
- 🏷️ Image tags (current & previous)
- 🔄 Rollback commands
- 📊 Monitoring dashboard links
- 👤 Author and commit information
# API health endpoint
curl http://api-service:8000/health
# MongoDB connection
kubectl exec -it mongodb-0 -n data-dev -- mongosh --eval "db.adminCommand('ping')"
# Redis connection
kubectl exec -it redis-0 -n data-dev -- redis-cli pingTriggers: Push to dev or staging branches
Pipeline Steps:
- 🔍 Checkout code
- 🔐 Docker Hub login
- 🐳 Build multi-stage Docker images (parallel)
- Data Fetcher
- ML Trainer
- API Service
- 📤 Push images with version tags +
:latest - ⚓ Deploy to Kubernetes with Helm
- 📢 Send Slack notification
Image Tagging Strategy:
Format: {env}-{run_number}-{git_sha}
Example: dev-42-a3f9c2d1
Also tagged as: dev-latest
Triggers: Push to main branch
Pipeline Steps:
- 📦 Initialize build metadata
- 🔔 Notify build start
- 📥 Checkout code
- 🧪 Run tests (pytest, flake8)
- 🔐 Docker Hub login
- 🐳 Build images (parallel)
- 📤 Push with version +
:latesttags - ⏸️ Manual approval required
- 🚀 Deploy to production
- ✅ Verify deployment
- 📢 Send success/failure notification