Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Створення бекенду для Skyeng — це не про «зробити сайт». Це про будівництво цифрового міста, яке працює 24/7. Моя задача — спроектувати і звести всю його невидиму інфраструктуру: движок, який дозволяє тисячам людей одночасно зустрічатися, вчитися і спілкуватися в реальному часі.

Архітектура: Прощавай, моноліт
Одразу було вирішено відмовитися від моноліту на користь мікросервісів. Такий складний проект повинен бути гнучким і відмовостійким. Я розбив всю логіку на незалежні служби:

Auth Service: Контроль доступу (JWT, ролі).

Scheduler Service: Мозок платформи. Жонглює тисячами уроків, враховуючи часові пояси викладачів з Бразилії та студентів з Владивостока.

Matching Service: Інтелектуальний підбір ідеальної пари «учень-викладач».

Billing Service: Управління підписками, платежами і зарплатами. Максимальна надійність.

Classroom Service: Диригент уроку, що працює в реальному часі.

Зв'язок між ними — через асинхронну шину повідомлень (на зразок RabbitMQ), щоб падіння одного сервісу не вплинуло на всю систему.

Серце системи: Віртуальний клас
Інтерактивний клас Vimbox — це найскладніше і найцікавіше. Це stateful-додаток, де затримка недопустима.

Тут я зробив ставку на WebSockets. Коли викладач малює на віртуальній дошці, його браузер не бомбардує сервер запитами. Замість цього між ним, сервером і учнем встановлено постійний канал. Клієнт викладача надсилає подію (наприклад, {"event": "draw", "coords": [x1, y1, x2, y2]}), мій сервіс на Go ловить її і миттєво пересилає учневі для відтворення на його полотні. Весь процес займає мілісекунди, забезпечуючи повну синхронізацію.

Відео і аудіопотік гонити через свої сервери — безглузде навантаження. Для цього використовується WebRTC, що дозволяє браузерам спілкуватися безпосередньо (peer-to-peer). Мій бекенд лише «знайомить» їх, забезпечуючи службовий сигналінг для встановлення з'єднання.

Технології і інфраструктура
Стек підбиралися під конкретні задачі для максимальної продуктивності:

Мови: Go для високонавантажених сервісів реального часу (Classroom), Python (FastAPI) для решти бізнес-логіки.

Бази даних: PostgreSQL як основна реляційна база, Redis для кешування всього і вся, а також як брокер для WebSockets.

Інфраструктура: Усі сервіси упаковані в Docker-контейнери і управляються оркестратором Kubernetes. Це дає автоматичне масштабування: якщо навантаження зростає, Kubernetes сам піднімає нові копії потрібного сервісу.

Головний виклик: Часові пояси
Це тихий жах будь-якого глобального проекту. Рішення одне і воно не обговорюється: на бекенді всі дати і час зберігаються виключно в UTC. Абсолютно всі. А вже клієнтський додаток відповідає за конвертацію в локальний час користувача. Будь-який інший підхід — гарантована катастрофа в майбутньому.

В результаті, моя робота — не просто «кодити фічі». Це інженерія складної, відмовостійкої і швидкої розподіленої системи, яка не ляже в пікові години, коли тисячі людей по всьому світу натискають кнопку «Почати урок».
Деталі роботи
Бюджет 310 379 UAH
Додано 20 вересня 2025
43 перегляди
Фрилансер
Vladimir Ilmenev
Казахстан Алмати (Алма-Ата)
Немає відгуків

Вільний для роботи Вільний для роботи
На сервісі 8 місяців 13 днів