S-viper – это сервис для подбора и организации плейлистов и сетов с интерактивным интерфейсом свайпов
Этот репозиторий служит точкой входа для всех компонентов проекта. Ниже перечислены основные модули, участвующие в разработке.
- Backend: Go (Gin, REST API, gRPC), MongoDB
- Infrastructure: Docker, Docker Compose, Kubernetes, Terraform, Nginx, CI/CD (GitHub Actions)
- Cloud & DevOps: VK Cloud (IaaS), GitHub Container Registry, Git submodules, многорепозитной структуры, управление артефактами и окружениями, GitHub Relesase
- Mobile: Kotlin, Jetpack Compose
- Project Management: проектирование архитектуры сервисов и инфраструктуры, настройка окружений, документация и организация GitHub Projects/Issues
- Docker Compose окружение для быстрого развёртывания всех сервисов локально.
- Terraform конфиги для деплоя backend части сервиса на одной VM.
- k8s и terrafrom конфиги для деплоя backend части сервиса на кластере.
Включает backend, mongo-db, nginx-api-gateway через git submodules
- Основная серверная часть проекта. Реализует бизнес-логику, REST API и взаимодействие с базой данных.
- Включает небольшой скрипт на go для заполнения БД.
Артефакты CI: backend image, seeder image.
Мобильное Android приложение клиента. Предоставляет интерфейс для пользователей и взаимодействует с backend через API.
Конфигурация MongoDB.
Reverse-proxy и шлюз для всех API. Обеспечивает маршрутизацию, а также статическое хранилище для mp3 файлов.
Компоненты инфраструктуры:
- Mobile: Android-приложение (клиент)
- API Gateway: Nginx (раздача треков по пути
/tracks/{id}+ перенаправление на API) - Tracks/Playlists API: сервис на Go + Gin (обслуживание API для метаданных и управления)
- MongoDB: БД для метаданных
- Seeder job: сервис для заполнения БД метаданными треков
☁️ Сам кластер разворачивается через Terraform в VK Cloud. Конфиги в репозитории compose-env/k8s/terraform.
Кластер состоит из 2 worker node на VM STD2-1-2 и ControlPlane на VM STD2-2-6.
В результате применения конфигурационных файлов появится kubeconfig.yaml, который нужен для взаимодействия с кластером через kubectl.
Имеющиеся ресурсы:
- Глобальный namespace для приложения
- Service ClusterIP: Music API, MongoDB
- Service LoadBalancer: API Gateway
- Deployments: Nginx (как Gateway), backend, mongoDB
- PVC: MongoDB, Nginx
- PersistentVolume: локальное хранилище на нодах.
- Secrets: GitHub Container Registry, MongoDB credentials
- Job: Seeder для заполнения MongoDB
Backend, seeder images подтягиваются из приватного CR, остальные из DockerHub.
Деплой приложений и подробные инструкции по CI/CD и командам находятся в соответствующих репозиториях сервисов.
-
Drawio диаграммы
Инфраструктура будущего решения, MVP инфраструктура и схема БД -
SQL и NoSQL схемы
Схема NoSQL БД (MongoDB) и SQL(пока не используется)
- Клонируйте репозиторий и перейдите в
compose-env - Запустите все сервисы:
docker-compose up --build
- Клонируйте репозиторий mobile
- Соберите apk

