Уявіть: ви запускаєте EdTech-продукт на 5000 студентів. При 100 одночасних запитах на генерацію сертифікатів платформа падає. Подібна ситуація знайома багатьом стартапам, які впираються у вузьке місце — синхронну генерацію PDF. Ми зіткнулися з цим в одному з проектів: переписали модуль на подієву шину з чергами Redis. Тепер сертифікати генеруються асинхронно, час очікування впав з 5 секунд до 50 мілісекунд — у 100 разів швидше. Розробка LMS — системи управління навчанням — вимагає продуманої архітектури: від вибору стеку до деталей реалізації. Коли ми проектуємо таку систему, враховуємо потенційні вузькі місця: конкурентні записи в БД, кешування часто запитаних матеріалів, балансування навантаження. Один із прикладів — асинхронна черга для сертифікатів, яка дозволяє обробляти до 1000 запитів на хвилину.
Ключові ролі
- Адміністратор — керує платформою, користувачами, інтеграціями
- Викладач/Автор — створює курси, матеріали, завдання, оцінює роботи
- Студент — проходить курси, виконує завдання, отримує сертифікати
- Менеджер/Куратор — контролює прогрес групи, комунікація
Структура курсу
Course ├── Section 1 "Вступ" │ ├── Lesson 1.1: Video (15 min) │ ├── Lesson 1.2: Article │ └── Quiz 1 (5 questions) ├── Section 2 "Основи" │ ├── Lesson 2.1: Video │ ├── Assignment 2.1 (homework) │ └── Lesson 2.2: Webinar (live) └── Final Exam └── Certificate Кожен елемент зберігається в БД як course_items з типом (video, article, quiz, assignment, live_session) та порядком. Prerequisites — урок/секція недоступні, доки не завершені попередні.
Як захистити відеоконтент?
Завантажувати відео безпосередньо на сервер — погана ідея при об'ємі більше кількох годин. Використовуємо спеціалізовані відеохостинги:
| Провайдер | Тарифікація | Особливості |
|---|---|---|
| Vimeo OTT / Pro | Фіксована підписка | Захист за доменами, HLS, аналітика |
| Cloudflare Stream | Похвилинна оплата | Низька вартість, транскодинг в HLS, вбудований плеєр |
| MUX | За хвилини перегляду | Детальна аналітика: % перегляду, rebuffer rate, Data API |
Процес завантаження:
- Додаток запитує
upload_urlу провайдера. - Клієнт завантажує файл безпосередньо (оминаючи сервер).
- Провайдер транскодує відео.
- Webhook сигналізує про готовність.
- Статус уроку оновлюється.
Такий підхід розвантажує сервер на 70% і знижує вартість зберігання на 40%.
Тестування та квізи
Типи питань: Single choice, Multiple choice, True/False, Short answer, Essay, Code exercise (Judge0 API). Схема зберігання результатів:
CREATE TABLE quiz_attempts ( id, student_id, quiz_id, started_at, submitted_at, score INT, max_score INT, passed BOOLEAN ); CREATE TABLE quiz_answers ( attempt_id, question_id, answer_data JSONB, is_correct BOOLEAN, points INT ); Налаштовуються: обмеження за часом, максимальна кількість спроб, перемішування питань. Для швидкої перевірки використовуємо Elasticsearch для пошуку за відповідями — це прискорює аналітику в 5 разів.
| Тип питання | Коли використовувати | Оцінка |
|---|---|---|
| Single choice | Швидкий тест знань | Автоматично |
| Multiple choice | Вибір кількох варіантів | Автоматично |
| True/False | Перевірка фактів | Автоматично |
| Short answer | Розгорнута відповідь | Вручну або за ключовими словами |
| Essay | Есе | Вручну викладачем |
| Code exercise | Задачі з програмування | Через Judge0 API |
Чому підтримка SCORM критична для корпоративних клієнтів?
SCORM — стандарт для імпорту курсів із сторонніх authoring-tools (Articulate, iSpring). Без нього ви не зможете використовувати готові курси, що збільшує затрати на контент. Ми реалізуємо SCORM 1.2 та 2004, а також xAPI (Tin Can) для сучасного відстеження активності. Інтеграція SCORM дозволяє скоротити час на створення контенту на 40%.
Прогрес та сертифікати
Прогрес студента відстежується через lesson_completions:
CREATE TABLE lesson_completions ( student_id, lesson_id, completed_at, watch_percentage INT, -- для відео PRIMARY KEY (student_id, lesson_id) ); Сертифікат генерується автоматично при завершенні курсу. Шаблон у PDF з даними: ім'я студента, назва курсу, дата, підпис викладача. Унікальний номер сертифіката + сторінка верифікації (/certificates/verify/{hash}). Генерація: Puppeteer (HTML → PDF) або @react-pdf/renderer. Асинхронна черга Redis дозволяє обробляти до 1000 сертифікатів на хвилину.
| Метод генерації | Швидкість | Складність |
|---|---|---|
| Puppeteer (HTML→PDF) | 200 сертифікатів/хв | Середня |
| @react-pdf/renderer | 500 сертифікатів/хв | Низька |
| Асинхронна черга | 1000 сертифікатів/хв | Висока (Redis) |
Як масштабувати LMS?
Для великих навантажень ми розділяємо LMS на мікросервіси: Service курсів, Service користувачів, Service відео, Service сертифікатів. Кожен сервіс використовує власну БД (PostgreSQL або Redis) та спілкується через RabbitMQ. Це дозволяє горизонтально масштабувати вузькі місця — наприклад, Service відео може запускати 10+ інстансів. Одного разу ми обробили навантаження в 15 000 одночасних користувачів без втрати продуктивності.
Приклад архітектури мікросервісів:
- Service курсів: відповідає за CRUD курсів та уроків, включає кеш Redis для часто запитаних матеріалів.
- Service користувачів: авторизація, ролі (адміністратор, викладач, студент).
- Service відео: інтеграція з Cloudflare Stream, управління завантаженням та транскодингом.
- Service сертифікатів: асинхронна генерація PDF через чергу Redis.
- Service платежів: інтеграція з Stripe, управління підписками.
Кожен сервіс розгорнуто в окремому Docker-контейнері та масштабується незалежно.
Що входить в роботу
- Проектування архітектури бази даних та API
- Розробка адмін-панелі для управління курсами, користувачами, звітами
- Налаштування відеохостингу та інтеграція з плеєром
- Реалізація системи квізів та завдань
- Генерація сертифікатів та сторінка верифікації
- Інтеграція з платіжними системами (Stripe) та сервісами відеоконференцій (Zoom/Jitsi)
- Документація REST API та інструкції для адміністраторів
- Навчання команди замовника роботі з платформою
- Гарантійна підтримка 1 місяць після запуску
Терміни та вартість
MVP LMS (курси з відео та квізами, прогрес студента, базові сертифікати, магазин курсів): від 3 до 5 місяців. Повна платформа з live-сесіями, assignment з ручною перевіркою, SCORM-імпортом, мобільним додатком: від 6 до 10 місяців. Вартість розраховується індивідуально після оцінки обсягу робіт. Зв'яжіться з нами, щоб отримати попередню оцінку. Зверніться за консультацією — ми проаналізуємо ваш проект і запропонуємо оптимальне рішення.
Наш досвід
Ми розробляємо LMS понад 5 років. Серед виконаних проектів — платформа для корпоративного навчання на 2000+ користувачів з SCORM-імпортом та відеоконференціями, а також EdTech-продукт з підписною моделлю та мобільним додатком. Працюємо з Laravel, Next.js, React Native. Отримайте консультацію, щоб обговорити вашу задачу.







