(DevBlog) Розробка dota2.ua: Як побудувана екосистема для кібер-спільноти
Ділюся досвідом створення Dota2.ua.
Dota2.ua — це повноцінний full-stack проєкт, який об'єднує в собі соціальні мережеві функції, розширену статистику та глибоку інтеграцію зі Steam Game Coordinator. Щоб забезпечити надійність, гнучкість та готовність до навантажень, я розділив архітектуру на три незалежні частини, ізолювавши критично важливі вузли.
Технологічний стек та Архітектура
1. Frontend (Клієнтська частина)
Інтерфейс побудований з акцентом на швидкість та сучасний UI. Стек: Vue 3, Vite, Tailwind CSS v4, Pinia, Vue Router. Взаємодія: Axios, Socket.IO Client. Редактор контенту: Quill.
2. Backend (Основне API та бізнес-логіка)
Надійне ядро, яке відповідає за роботу з базою даних, безпеку, обробку медіа та власні соціальні фічі (форум, профілі, новини). У цій архітектурі Node.js також виступає проксі-сервером між клієнтом та Go-мікросервісом. Стек: Node.js, Express 5, MongoDB + Mongoose. Безпека та авторизація: JWT, bcrypt, Helmet, express-rate-limit, sanitize-html / DOMPurify. Обробка даних: Multer, Socket.IO.
3. Go-мікросервіс (Серце інтеграції зі Steam)
Найцікавіше рішення — винесення роботи зі Steam GC в окремий мікросервіс на Go. Використовуючи бібліотеки go-steam та go-dota2, сервіс спілкується з бекендом через внутрішній HTTP API. Що реалізовано через Go: Створення та повне керування ігровими лобі. Пряма взаємодія зі Steam Game Coordinator. Моніторинг ігрової активності в реальному часі. Авторизація Steam через TOTP.
Інтеграції та Зовнішні сервіси
Для забезпечення платформи актуальними даними я під'єднав низку API:
Статистика та кіберспорт:
PandaScore API (турніри та матчі), OpenDota / dotaconstants (база героїв, патчів та предметів), Stratz API (детальна ігрова статистика через потужний GraphQL).
Медіа та Контент:
Twitch API, YouTube API / Gmail API (фетчинг тематичних відео та розсилки). Інфраструктура:
Valve CDN (старий, але надійний спосіб доставки ігрових ресурсів).
ML та Безпека:
Google Cloud Vision (автоматична модерація завантажених зображень на NSFW).
Інсайти розробки та Інструменти
Під час роботи над проєктом відкрив для себе кілька геймченджерів:
Source2Viewer: Незамінна річ для витягування UI/UX елементів гри. Термінальна версія для Mac - просто топ для експорту та пошуку, хоча попередньо краще ознайомитися з файлами через графічний інтерфейс.
Cloudflare R2 Object Storage: Залишився в абсолютному захваті від їхнього підходу до зберігання та доставки зображень/відео.
Google Cloud Run: Справжній "головний бос" інфраструктури, працювати з gcloud — суцільне задоволення.