This project was developed as part of the Cloud Computing course in the second semester of 2024 at the Federal University of Minas Gerais (UFMG). It implements a playlist recommendation system based on machine learning. The solution is deployed in a Kubernetes environment, using DevOps and MLOps practices for continuous integration and delivery. The system analyzes Spotify datasets, generates association rules, and recommends personalized playlists to users.
The system architecture consists of:
- Machine Learning Backend: Generates association rules and trains models.
- Frontend: Exposes a REST API for recommendation queries.
- Persistent Volume: Stores models and data shared between services.
- Kubernetes: Orchestrates containers and system resources.
- ArgoCD: Manages the continuous deployment of the application.
/cloud_computing
│
├── /assets # Datasets and music lists
│ ├── /datasets # Datasets used to train the recommendation model
│ ├── /musics_list # List of songs used to simulate client-server communication
│ └── /tests # Codes to test de app
│
├── /client # Code to simulate client requests
│ └── client.py # Script to simulate client-server communication
│
├── /config # Kubernetes configuration files for service deployment
│ ├── deployment.yaml # Deployment definitions for Kubernetes
│ └── service.yaml # Service definitions for Kubernetes
│
├── /frontend_container # Container with the frontend and related deployment scripts
│ ├── Dockerfile # Dockerfile for building the frontend container
│ ├── app.py # Main logic of the frontend and REST API
│ └── requirements.txt # Dependencies for the frontend
│
├── /ml_container # Container with the backend and machine learning logic
│ ├── Dockerfile # Dockerfile for building the backend container
│ ├── playlist_recommender.py # Playlist recommendation logic
│ └── requirements.txt # Dependencies for the backend
│
└── README.md # This file
- Languages: Python, Flask
- Tools: Docker, Kubernetes, ArgoCD
- Machine Learning: Association rules (Frequent Itemset Mining)
- Database: Persistent Volume for data storage
Make sure you have the following tools installed:
This project is licensed under the MIT License.