ВВЕДЕНИЕ
Настоящий документ содержит описание функциональных характеристик и архитектуры Веб-портала 72.ru (далее — ПО).
ОБЩЕЕ ОПИСАНИЕ ПО
ПО представляет собой единую медийную платформу создания, хранения, управления и дистрибуции контента:
— Позволяет эффективно создавать и размечать текстовый и мультимедийный контент различных типов, а также обогащать его дополнительным обвесом;
— Обеспечивает аналитику выпущенного контента, управление раздающими страницами и блоками внутренней дистрибуции контента, гибкую внешнюю дистрибуцию контента во внешние платформы (с гибкой настройкой под каждое издание);
— Позволяет настроить индивидуальный пользовательский интерфейс анонсирования и отображения контента, а также специализированные маршруты внутренней рециркуляции.
— Обеспечивает возможность для пользователей комментирования выпущенного контента с последующей гибкой системой модерации;
— Позволяет перейти со стартовой страницы на дополнительные сервисы: Форумы, Объявления, Гороскопы, Знакомства, Погода, Курсы валют, что интегрируются в необходимом объеме и с персональными настройками.
ПО состоит из компонентов, которые позволяют решать следующие задачи:
A) Панель управления, через веб-интерфейс дает возможность создавать текстовые и мультимедиа-материалы. Организовывать связи между ними, с использованием тегов, рубрик, сюжетов. Настройка правил внутренней и внешней дистрибуции созданных материалов, пути прохождения по сайту. Возможность создания/управления пользователями в системе настройки доступов. Модерация комментариев к созданным материалам.
B) Backend, предоставляет gateway, c гибким конфигурированием каждой страницы в проекте, источников данных, правил обработки, создание спецификаций. Имеет возможность для горизонтального масштабирования при увеличении нагрузки.
C) Frontend реализует рендер страниц и часть логики, согласно переданным данным в спецификации с backend
ЭЛЕМЕНТЫ И ПРИНЦИПЫ ВЗАИМОДЕЙСТВИЯ ПО
ПО базируется на следующих элементах и их принципах взаимодействия:
ПО
Бизнес-логика: базовые сценарии дистрибуции, создания, редактирования, поиска контента
Сервисы управления пользователями
Сервис комментирования
Сервис модерации комментариев
Сервис хранения файлов и раздачи файлов
Сервис отложенных операций
Внешние компоненты
Все настройки данных, связь между ними, наполнение контента, создание пользователей и управление ролями, модерация комментариев производятся в единой среде.
ОБЩАЯ СХЕМА ПО

Общая схема ПО
ОПИСАНИЕ СХЕМЫ ПО
Основная библиотека проекта, содержит в себе набор компонентов, которые предоставляют базовые возможности для создания и управления материалов. Использует:
json: компонент для сериализации, десериализации комплексных объектов и их списков.
composer: управление зависимостями проекта
phpunit/phpunit: запуск unit тестов
ongr/elasticsearch-dsl: клиент для доступа к модулю поиска
html2text/html2text: библиотека для конвертации HTML в plain text
slim/slim: микрофреймфорк для разработки rest api
slim/http: реализация http объектов
ackintosh/ganesha: реализация circuit breaker
portal/phpmorphy: библиотека для склонения слов
zircote/swagger-php: генерация swagger спецификаций
php-ffmpeg/php-ffmpeg: библиотека для конвертации видео
guzzlehttp/guzzle: библиотека для выполнения http запросов
intervention/image: библиотека для манипуляции с изображениями
Сервисы
Набор сервисов, которые предоставляют системе возможности для взаимодействия с пользователями, хранением и обработкой данных.
Бизнес-логика
Предоставляет базовые наборы типов материалов и возможности их создания и дистрибуции. Задаем маршруты созданных материалов по сайту. По умолчанию разрешено комментирование материалов, с последующей модерацией.
Сервисы управления пользователями
Представляет собой начальный набор правил, которые определяют возможности пользователя по созданию и управлению контентом на основание доступных ему прав.
Администратор может создавать пользователей и назначать им различные возможности по взаимодействию с данными:
Создание
Чтение
Обновление
Возможно создание ролей:
С независимым доступом на основные операции (часть пользователей могут только читать, часть обновлять, часть создавать).
С ограничением доступа к различным типам данных (каждая часть пользователей может работать только с необходимыми им данными).
Возможно создание групп пользователей, с автоматическим присвоением ролей при попадании пользователя в группу.
Набор правил для взаимодействия и возможные роли можно расширять в зависимости от требований проектов.
Сервис комментирования
Предоставляет возможность оставить комментарий под разрешенными материалами. Хранит информацию о созданных комментариях. Осуществляет последующую фильтрацию комментариев по правилам. Взаимодействует с сервисом пользователя. Хранит в себе профиль комментатора.
Сервис пользователя
Сервис предоставляет возможности по авторизации пользователей, базово авторизация работает через пару логин и пароль. Помимо этого сервис может работать со следующими видами авторизации:
Подтверждение телефона через смс
Авторизация через социальные сети
Сервис модерации комментариев
Представляет собой rest api и js модуль для панели администрирования. Позволяет отклонять комментарии, уведомлять пользователя о том, что комментарий был отклонен. Имеется возможность работать нескольким модераторам одновременно.
Сервис хранения файлов и раздачи файлов
Данный сервис отвечает за хранение файлов. Хранение данных может быть сконфигурировано под любые задачи, в том числе имеется возможность организовать резервирование данных. Есть возможность изменять размеры изображения (crop, resize) и расширение налету.
Сервис отложенных операций
Данный сервис отвечает за конвертацию залитого видео, генерацию превью для соцсетей, различные асинхронные задачи.
Внешние компоненты
Внешние компоненты получают доступ к данным ПО через gateway и могут показывать созданный контент.
Панель управления
Панель управления представляет собой веб-интерфейс, который предоставляется сразу в системе. Предоставляет пользователям следующие возможности:
Авторизация
Управление пользователями и их возможностями
Создание, изменение, дистрибуция контента
Модерация комментариев
Фильтрация и сортировка данных
ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС ПО
Пользовательский интерфейс ПО предназначен для быстрого и последовательного перехода к разделам ПО и состоит из следующих компонентов:
Авторизация;
Регистрация;
Главная страница;
Разделы: Недвижимость, Работа, Видео, Знакомства, Почта; Форум, Курсы валют; Объявления; Афиша; Туризм; Гороскоп; Дом Ремонт; Авто
Поиск по сайту;
Уведомления;
Категории новостей.
ФУНКЦИИ КОМПОНЕНТОВ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА ПО
Авторизация
Функционал данного компонента ПО предусматривает возможность ранее зарегистрированному пользователю ПО ввести логин и пароль для авторизации (идентификации) на портале.
Регистрация
При желании пользователя идентифицировать себя в целях получения дополнительного функционала ПО.. Для регистрации необходимо ввести электронный адрес (e-mail), никнейм пользователя и пароль. Альтернативным способом регистрации является авторизация посредством аккаунтов других веб-порталов (ВКонтакте и др.)
Главная страница
На главной странице пользователю ПО доступен функционал просмотра новостных статей, возможности сообщить новость, просмотра фотографий, видео дня, объявлений, форумов для обсуждений, прогноза погоды, состояния пробок, курсы валют.
Разделы: Недвижимость, Работа, Видео, Знакомства, Почта; Форум, Курсы валют; Объявления; Афиша; Туризм; Гороскоп; Дом Ремонт; Авто
Разделы, функционал которых развернут на других площадках. ПО предусматривает функциональную возможность пользователя посредством использования ПО перейти в данные разделы.
Поиск по сайту
Компонент позволяет осуществить поиск по ключевым словам с выдачей наиболее релевантных результатов.
Уведомления
Компонент предусматривает возможность пользователю ознакомиться с важными новостями деятельности портала.
Категории новостей
Функционал компонента дает возможность пользователю ПО выбрать темы или категории для отображения новостей по избранным тематикам.
ТЕХНОЛОГИИ
Архитектура ПО построена на следующих технологиях:
№ п/п | Технологический элемент | Область применения |
1. | Heaver | Система оркестрации контейнеров |
2. | Registry | Система хранения образов контейнеров. |
3. | Nginx + OSPF | Балансировка входящих, а также межсервисных запросов. |
4. | Archlinux | |
5. | MariaDB | Реляционная база данных для хранения структурной информации. |
6. | MongoDB | NoSQL база данных, для хранения неструктурированной информации |
7. | PHP | Основной язык разработки |
8. | Composer | Менеджер пакетов |
9. | Elasticsearch | Основной поисковый движок |
10. | Memcached | Кэширование данных |
11. | Redis | Кэширование данных, персистентное |
12. | Rabbitmq | Message broker (блокировка сообщений) |
13. | Nodejs, VUE | Основной язык разработки FE |
14. | Nginx WEBDAV | Хранилище файлов |









