Проект

"Вебпрактик" разработала интерактивную highload-платформу для киберфестиваля Rukami

Заказчики: Rukami

Общественные и некоммерческие структуры

Продукт: Yandex.Cloud Услуги виртуальной вычислительной инфраструктуры
Второй продукт: Kubernetes
Третий продукт: MySQL

Дата проекта: 2020/06 — 2020/11
Технология: IaaS - Инфраструктура как услуга
подрядчики - 217
проекты - 1237
системы - 435
вендоры - 228
Технология: Средства разработки приложений
подрядчики - 197
проекты - 432
системы - 683
вендоры - 348
Технология: СУБД
подрядчики - 273
проекты - 776
системы - 308
вендоры - 148

Содержание

2020: Разработка интерактивной highload-платформы

Компания "Вебпрактик" 9 марта 2021 года сообщила о разработке интерактивной highload-платформы для международного киберфестиваля Rukami. Заказчиком по проекту выступил Фонд поддержки проектов Национальной технологической инициативы.

В 2020 году многие активности фестиваля пришлось перенести из оффлайна в онлайн‑формат. Поэтому заказчик решил превратить сайт в полноценную интерактивную платформу, на которой бы и развернулось действие.

Задачи

Среди поставленных заказчиком задач были следующие:

  • Разработать платформу
  • Запустить систему личных кабинетов
  • Реализовать игровую механику из техзадания
  • Обеспечить бесперебойную работу ресурса в дни фестиваля

У фестиваля Rukami уже был сайт, но он не был рассчитан на большие нагрузки. По сути, это был простой информационный сайт с минимальным функционалом. Чтобы провести все онлайн-активности «по одному адресу», заказчик решил сделать из старого сайта сложную платформу с системой личных кабинетов, интеграцией с Youtube для прямых трансляций, игровыми элементами. Платформа должна была заменить собой полноценный офлайн-фестиваль и выдержать нагрузку в 50 тысяч посетителей единовременно.

Сложности

  • Сжатые сроки: 6 месяцев на объем работ, которые обычно занимают около года;
  • Разработка высоконагруженной платформы с высокой степенью отказоустойчивости;
  • Разные концепции у разных подрядчиков по проекту.

Итоги проекта

UI-приложение на React содержит в себе пользовательский интерфейс для всех сервисов проекта: регистрации пользователей, личного кабинета, портала, активностей. Является точкой входа на проект для всех пользователей. Реализовано как SPA на React. Работает по HTTP/HTTPS-протоколу, запрашивая данные с бэкенд-сервисов через API.

Участники фестиваля могут общаться между собой, используя сервис обмена сообщениями. Это приложение с интенсивным обменом данными на Nodejs, с использованием фреймворков Express и Socket.IO. Сервис обмена сообщениями работает асинхронно по HTTP/HTTPS-протоколу, через WebSocket, напрямую взаимодействуя с базой данных.

Зарегистрированный пользователь может добавить свой проект на фестивальный конкурс, предложить спикера или другую активность в программу. Пользователь с правами администратора проверяет предложенные проекты и дает по ним свои комментарии, составляет публичную афишу, может выгружать базы данных, исправлять чужие "учётки" (менять роль пользователя).

Совместно с субподрядчиком команда проделала большую работу по разработке обновленного дизайна фестиваля. Только для регистрации дизайнеры подготовили 11 макетов. "Вебпрактик" работал над внутренней частью платформы, а "Студия Лебедева" отвечала за пользовательский дизайн. Получилось две абсолютно разные концепции, которые предстояло подружить между собой. В итоге систему навигации с публичной части внедрили во внутреннюю часть платформы.ИТ-директор «Роснефти» Дмитрий Ломилин выступит на TAdviser SummIT 28 ноября

Для защиты платформы от DDoS-атак и ради повышенной отказоустойчивости микросервисы сайта были размещены в Yandex Cloud, файлы в Yandex Object Storage.

В целом по итогам проекта:

  • создана интерактивная платформа, выдерживающая большую нагрузку;
  • обеспечено 2 дня бесперебойной работы;
  • на платформе доступно 220 онлайн-активностей.

Технологии

Среди технологий, использовавшихся в рамках проекта: Kubernetes, Laravel Framework, React, Sass, Node.js, PHP, SSR, TypeScript, Mobx, Socket.io, MySQL, Redis, GitlabCI, PWA.