MediaCMS

Професійна розподілена система керування вмістом для високонавантажених інтернет-видань

Розробка професійних вебсайтів, здатних витримувати великі навантаження, процес доволі складний. Потрібно або тримати в штаті власних висококваліфікованих програмістів, які будуть його поступово створювати та згодом постійно вдосконалювати, або замовляти його створення іншій спеціалізованій організації. Обидва варіанти не з дешевих тому дозволити їх собі можуть лише одиниці.

Для всіх інших існують доступні безплатні готові рішення на зразок WordPress з усіма наслідками: відносно низька швидкодія, якість коду та безпека. Цими недоліками на початках можна знехтувати поки проєкт молодий та тільки починає розвиватись. А що робити тим кому можливостей WordPress вже не вистачає та водночас відсутні необхідні ресурси для створення власного професійного високонавантаженого вебсайту?

Саме для цих організацій створена професійна система керування вмістом MediaCMS. Вона має як безплатну версію з базовим функціоналом, так і розширену платну. Це робить її доступною та надає можливість всім охочим отримати переваги використання якісного продукту. На ринку система займає проміжну нішу між простішою WordPress з одного боку та складною індивідуальною розробкою інтернет-видання під замовлення з іншого.

Масштабування

Дуже часто інтернет-видання зіштовхуються з проблемою перевантаження серверів. Це може бути викликано вірусною новиною, на сторінку якої зайшло водночас багато читачів з соціальних мереж. Або навіть банальною хакерською атакою, за допомогою якої на вебсайт надсилають велику кількість запитів за короткий інтервал часу. Особливо небезпечно якщо ці сплески активності відбуваються в районі обіду - в години максимального рівня природного трафіку протягом робочого дня більшості інтернет-видань.

Більшість систем керування вмісту створені на основі класичної монолітної архітектури - весь програмний код може працювати лише на одному фізичному сервері. Попри свою очевидну простоту така архітектура має суттєвий недолік - його масштабування може бути лише вертикальним, шляхом збільшення фізичних характеристик сервера. А це, своєю чергою, значно обмежує можливості витримувати великі навантаження.

Натомість програмний код MediaCMS має розподілену архітектуру та складається з трьох незалежних частин: головна частина (Main), панель керування (Panel) та сервер зображень (Image). Їх можливо використовувати як на одному сервері, так і на окремих, що дає можливість залучити для розширення не тільки вертикальне масштабування, а ще й горизонтальне. Такий підхід разом з окремим розміщенням сервера баз даних суттєво збільшує максимальну продуктивність системи в порівнянні з монолітною.

Швидкодія

Зазвичай програмний код виконуються послідовно, очікуючи закінчення роботи попередніх операцій. Це створює затримки часу, особливо при виконанні складних операцій, які для своєї діяльності потребують багато виділених ресурсів.

Натомість програмний код MediaCMS виконується асинхронно: програма не зупиняється в очікуванні результату складної операції, а швидко перемикається на виконання інших операцій з черги й повертається назад, коли виконання складної операції завершиться. Подібна технологія відчутно пришвидшує виконання коду, особливо на високонавантажених вебсайтах.

Надійність

Для редагування інформації в MediaCMS використовується частина “Панель керування”. Для доступу в неї необхідно авторизуватись за допомогою персонального пароля користувача, який зберігається в зашифрованому вигляді. Додатково використовується reCAPTCHA для запобігання підбору пароля. Подальша взаємодія з вебсайтом відбувається за допомогою стандартизованого у RFC 7519 токена JSON Web Token (JWT).

З метою простого та надійного підвищення безпеки доступ користувачів до редагування інформації обмежений на основі типових ролей (читач, автор, редактор, головний редактор, адміністратор). Кожна наступна роль надає більше можливостей порівняно з попередньою та призначається при створенні нового користувача. Кожен з користувачів бачить лише ті пункти в меню панелі керування, які йому дозволено використовувати.

Інновації

Проєкт MediaCMS реалізовано на базі сучасних програмних технологій. Використана мова програмування JavaScript стандарту ECMAScript 2024, платформа Node.js 22, фреймворк Express.js 4, шаблонізатор EJS 3, бібліотека React 19, набір інструментів Bootstrap 5, систем керування бази даних MongoDB 8, мова стилів CSS 3, мова розмітки HTML5

Для створення контенту використовується сучасний гібридний онлайн WYSIWYG-редактор власної розробки на базі популярного редактора TinyMCE. Він дає можливість зручно редагувати контент одночасно як у вигляді сучасних блоків, так і у вигляді класичного WYSIWYG редактора.

Крім цього застосовано “гумовий дизайн”, який автоматично підлаштовується під пристрої різних розмірів. При цьому для економії трафіку одночасно адаптуються розміри зображень в широкому діапазоні. Вони попередньо автоматично створені під час завантаження на сервер зображень.

Відкритість

Безплатна версія MediaCMS розповсюджується як проєкт з відкритим початковим кодом (Open Source) та розміщується на GitHub. Такий підхід дає можливість всім охочим ознайомитись з продуктом, поставити питання які цікавлять та висловити свої побажання. Також відкритість дає можливість швидко виявляти та виправляти помилки, що робить систему більш стабільною.

Незалежність

Як тільки ви завантажили проєкт з репозиторію github, ви отримали свою незалежну копію проєкту. З нею ви можете робити все що вам заманеться - повністю адаптовувати її під свої потреби. Гнучка система контролю версій робить процес оновлення проєкту контрольованим. Ви зможете оновлювати лише ті частини, які ви бажаєте оновити. У всіх інших частинах проєкту, наприклад де вами внесені зміни, оновлювати код не потрібно.

Доступність

Не менш важливий фактор є те що система безплатна. Адже більшість інтернет-видань організації неприбуткові й платні професійні системи керування вмістом для них недоступні. А для тих організацій які потребуватимуть додаткових можливостей буде доступна платна версія MediaCMS Pro.

Застосування

Система керування вмістом MediaCMS вже успішно впроваджена та працює на декількох українських проєктах. Замовники після внесення деяких змін для адаптації до їх потреб задоволені результатом та високо оцінили якість продукту. Також вони допомогли виявити деякі дрібні помилки, які були оперативно виправлені.

Професіоналізм

В стандартній версії системи реалізований базовий функціонал, достатній для діяльності інтернет-видання. Для тих хто захоче більше можливостей зможе придбати платну професійну версію MediaCMS Pro.

В ній додатково можуть бути реалізовані такі можливості як повна підтримка типізації TypeScript, використання різних фреймворків Next.js/Koa.js/Fastify, взаємодія з MongoDB за допомогою Mongoose, кешування даних за допомогою Memcached, логування за допомогою Winston, повне покриття тестами Jest, використання контейнерів Docker, підтримка багатомовності, пошуковий рушій Elasticsearch, платна підписка для читачів, темна тема оформлення.

Питання

Висновок

Раніше лише в дуже великих медіаресурсів була можливість використовувати швидкі та надійні професійні системи керування вмістом. Це спричиняло суттєвий дисбаланс на ринку та шкодило справедливій конкуренції. MediaCMS змінила правила гри на ринку та дає можливість не тільки великим інтернет-виданням, але й середнім і навіть початківцям відчути переваги якісного продукту. Для цього достатньо переглянути скриншоти, потім відвідати демонстраційний вебсайт за адресою нижче та зрештою локально встановити для тестування безплатну версію з репозиторіїв GitHub.

Демонстраційний вебсайт

На цьому вебсайті ви можете ознайомитись з роботою MediaCMS з використанням демонстраційних даних.

Перейти на демоcайт
Репозиторії GitHub

На репозиторіях GitHub ви можете ознайомитись з Open Source програмним кодом різних частин проєкту MediaCMS.

Перейти на GitHub
Зміст×