Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/6647
Full metadata record
DC FieldValueLanguage
dc.contributor.advisorБабенко, Віра-
dc.contributor.authorСлабошпицький, Максим-
dc.date.accessioned2026-01-07T17:18:27Z-
dc.date.available2026-01-07T17:18:27Z-
dc.date.issued2025-
dc.identifier.urihttps://er.chdtu.edu.ua/handle/ChSTU/6647-
dc.description.abstractАктуальність сучасних вебсистем обумовлена значним зростанням обсягів користувацьких даних та навантаження на інфраструктуру, що вимагає розробки ефективних підходів до збору, обробки та аналітики інформації. Високонавантажені системи, побудовані з урахуванням edge-архітектури та хмарних технологій, дозволяють забезпечити масштабованість, продуктивність та стійкість платформи навіть за умов значного росту трафіку. Метою кваліфікаційної роботи є дослідження сучасних архітектур високонавантажених інформаційних систем та розроблення оптимальної інфраструктури для збору і аналітичної обробки поведінкових даних користувачів вебресурсів із використанням edge-підходу та хмарних сервісів AWS, що забезпечуватиме підвищену масштабованість, продуктивність і стійкість до пікових навантажень. Об'єкт дослідження ‒ високонавантажені вебсистеми для збору та аналітики великих обсягів даних користувачів із використанням edge- обчислень та хмарних сервісів. Предмет дослідження – архітектурні рішення та технології побудови оптимальної інфраструктури високонавантажених систем для збору, обробки та аналітики даних користувачів вебресурсів. Наукова новизна полягає у розробці підходів до побудови високонавантажених вебсистем із застосуванням edge-архітектури та хмарних сервісів AWS для збору та аналітики поведінкових даних користувачів, що дозволяє підвищити масштабованість, продуктивність і стійкість системи. Запропоновано методи оптимізації потоків даних, реплікації та балансування навантаження, які забезпечують ефективну обробку великих обсягів подій у режимі реального часу та мінімізують затримки у системі. Практична цінність полягає у можливості використання розроблених підходів та архітектурних рішень для створення високонавантажених систем збору та аналітики поведінкових даних користувачів вебресурсів. Запропоновані методи дозволяють підвищити швидкодію, масштабованість і стійкість системи при пікових навантаженнях, що робить їх застосовними у реальних проєктах вебаналітики, електронної комерції та інших онлайн- платформах, де обробка великих потоків даних є критичною. Таким чином, робота має значення як для теоретичного вдосконалення підходів до проєктування високонавантажених вебсистем, так і для їх практичної реалізації у сфері збору та аналітики поведінкових даних користувачів. Висновки включають в себе основні результати роботи. У додатках наведено специфікацію, текст програми та інструкцію користувача. Загальний обсяг роботи становить 100 сторінок. У кваліфікаційній роботі магістра 13 рисунків та 3 додатки. Для виконання роботи використано 25 літературних джерел.uk_UA
dc.titleДослідження архітектур і проектування оптимальної інфраструктури для високонавантажених системuk_UA
dc.typeMaster Thesisuk_UA
Appears in Collections:123 Комп’ютерна інженерія (Комп'ютерні системи та мережі)

Files in This Item:
File Description SizeFormat 
1_ТИТУЛКА_Слабошпицький-merged.pdf
  Restricted Access
1.88 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ
ІНЖЕНЕРІЇ
Пояснювальна записка
до кваліфікаційної роботи магістра
на тему: «Дослідження архітектур і проектування
оптимальної інфраструктури для
високонавантажених систем»
ЧДТУ.252469.006 ПЗ
Виконав: студент 2 курсу, групи МКМ-2405
спеціальності 123 – Комп’ютерна інженерія
за освітньою програмою – Комп’ютерні системи
та мережі
Максим СЛАБОШПИЦЬКИЙ
Керівник
д.т.н., професор Віра БАБЕНКО
Н. контроль
Світлана ГРЕСЬКО
Рецензент
доцент кафедри підвищення кваліфікації та
спеціалізованої підготовки у сфері цивільного
захисту ННІ інженерної та спеціальної підготовки
НУЦЗ України, к.т.н., доц.
Руслан МЕЛЬНИК
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
к.т.н., доцент ______ Артем ЛАВДАНСЬКИЙ
Черкаси 2025 року
Форма № Н-9.01
Черкаський державний технологічний університет
Факультет інформаційних технологій і систем
Кафедра інформаційної безпеки та комп‘ютерної інженерії
Освітньо-кваліфікаційний рівень магістр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Комп’ютерні системи та мережі
«ЗАТВЕРДЖУЮ»
Завідувач кафедри _____ Артем ЛАВДАНСЬКИЙ
«08» жовтня 2025 року
ЗАВДАННЯ
на кваліфікаційну роботу магістра студенту
Слабошпицькому Максиму Миколайовичу
(прізвище, ім‘я, по батькові)
1. Тема роботи Дослідження архітектур і проектування оптимальної
інфраструктури для високонавантажених систем
Керівник роботи Бабенко Віра Григорівна, д.т.н., професор
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «07» жовтня 2025р. № 307/03-03
2. Строк подання студентом роботи
3. Вихідні дані до роботи:
Вебсайти користувачів, події користувачів, логи доступу, дані аналітики, edge-компоненти,
хмарна інфраструктура AWS, вимоги до продуктивності та масштабованості.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
Розділ 1 Аналіз предметної області та постановка задачі дослідження
Розділ 2 Вибір технології та інструментальних засобів розробки системи
Розділ 3 Розробка високонавантаженої системи
Розділ 4 Захист високонавантаженої системи
Висновки
Перелік скорочень та умовних позначень
Список використаних джерел
Додатки
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
Додаток А Специфікація
Додаток Б Текст програм
Додаток В Інструкція користувача
Підпис, дата
Розділ Прізвище, ініціали та
посада завдання видав завдання прийняв
консультанта
7. Дата видачі завдання 08 жовтня 2025 року
КАЛЕНДАРНИЙ ПЛАН
№ з/п Назва етапів кваліфікаційної роботи магістра Строк виконання
етапів роботи Примітка
1 Збір матеріалу 07.10 – 20.10 виконано
2 Обробка матеріалу 21.10 – 06.11 виконано
3 Обґрунтування актуальності виконання
досліджень 07.11 – 10.11 виконано
4 Оцінка стану проблеми, виокремлення виконано
дослідницьких задач, постановка задачі 11.11 – 15.11
дослідження
5 Викладення сутності і результатів дослідження 16.11– 27.11 виконано
6 Практичне застосування результатів
дослідження 28.11 – 30.11 виконано
7 Оформлення результатів в пояснювальну записку 01.12 – 03.12 виконано
8 Подання роботи на відгук та рецензування 04.12.25 виконано
Студент-магістрант ___________________ Максим СЛАБОШПИЦЬКИЙ
(підпис)
Керівник роботи ____________________ Віра БАБЕНКО
(підпис)
АНОТАЦІЯ
Актуальність сучасних вебсистем обумовлена значним зростанням
обсягів користувацьких даних та навантаження на інфраструктуру, що вимагає
розробки ефективних підходів до збору, обробки та аналітики інформації.
Високонавантажені системи, побудовані з урахуванням edge-архітектури та
хмарних технологій, дозволяють забезпечити масштабованість,
продуктивність та стійкість платформи навіть за умов значного росту трафіку.
Метою кваліфікаційної роботи є дослідження сучасних архітектур
високонавантажених інформаційних систем та розроблення оптимальної
інфраструктури для збору і аналітичної обробки поведінкових даних
користувачів вебресурсів із використанням edge-підходу та хмарних сервісів
AWS, що забезпечуватиме підвищену масштабованість, продуктивність і
стійкість до пікових навантажень.
Об'єкт дослідження ‒ високонавантажені вебсистеми для збору та
аналітики великих обсягів даних користувачів із використанням edge-
обчислень та хмарних сервісів.
Предмет дослідження – архітектурні рішення та технології побудови
оптимальної інфраструктури високонавантажених систем для збору, обробки
та аналітики даних користувачів вебресурсів.
Наукова новизна полягає у розробці підходів до побудови
високонавантажених вебсистем із застосуванням edge-архітектури та хмарних
сервісів AWS для збору та аналітики поведінкових даних користувачів, що
дозволяє підвищити масштабованість, продуктивність і стійкість системи.
Запропоновано методи оптимізації потоків даних, реплікації та балансування
навантаження, які забезпечують ефективну обробку великих обсягів подій у
режимі реального часу та мінімізують затримки у системі.
Практична цінність полягає у можливості використання розроблених
підходів та архітектурних рішень для створення високонавантажених систем
збору та аналітики поведінкових даних користувачів вебресурсів.
Запропоновані методи дозволяють підвищити швидкодію, масштабованість і
стійкість системи при пікових навантаженнях, що робить їх застосовними у
реальних проєктах вебаналітики, електронної комерції та інших онлайн-
платформах, де обробка великих потоків даних є критичною.
Таким чином, робота має значення як для теоретичного вдосконалення
підходів до проєктування високонавантажених вебсистем, так і для їх
практичної реалізації у сфері збору та аналітики поведінкових даних
користувачів.
Висновки включають в себе основні результати роботи. У додатках
наведено специфікацію, текст програми та інструкцію користувача. Загальний
обсяг роботи становить 100 сторінок. У кваліфікаційній роботі магістра
13 рисунків та 3 додатки. Для виконання роботи використано 25 літературних
джерел.
ANNOTATION
The relevance of modern web systems is due to the significant growth in the
volume of user data and the load on the infrastructure, which requires the
development of effective approaches to the collection, processing and analysis of
information. High-load systems, built taking into account edge architecture and
cloud technologies, allow to ensure scalability, performance and stability of the
platform even under conditions of significant traffic growth.
The purpose of the qualification work is to study modern architectures of
high-load information systems and develop an optimal infrastructure for the
collection and analytical processing of behavioral data of web resource users using
the edge approach and AWS cloud services, which will provide increased scalability,
performance and resistance to peak loads.
The object of the study is high-load web systems for the collection and
analysis of large volumes of user data using edge computing and cloud services.
The subject of the study is architectural solutions and technologies for
building an optimal infrastructure of high-load systems for the collection, processing
and analysis of web resource user data.
The scientific novelty lies in the development of approaches to building high-
load web systems using edge architecture and AWS cloud services for collecting
and analyzing user behavioral data, which allows to increase the scalability,
performance and stability of the system. Methods for optimizing data flows,
replication and load balancing are proposed, which ensure effective processing of
large volumes of events in real time and minimize system delays.
The practical value lies in the possibility of using the developed approaches
and architectural solutions to create high-load systems for collecting and analyzing
behavioral data of web resource users. The proposed methods allow to increase the
speed, scalability and stability of the system at peak loads, which makes them
applicable in real web analytics projects, e-commerce and other online platforms,
where processing large data flows is critical.
Thus, the work is important both for the theoretical improvement of
approaches to the design of high-load web systems, and for their practical
implementation in the field of collecting and analyzing user behavioral data.
The conclusions include the main results of the work. The appendices contain
the specification, program text, and user manual. The total volume of the work is
100 pages. The master's qualification work includes 13 figures and 3 appendices. 25
literary sources were used to perform the work.
2
ЗМІСТ
ВСТУП………………………………………………………………………… 4
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ…………………………………………………..... 8
1.1 Аналіз предметної області……………………………………...….. 8
1.2 Вибір напряму дослідження……………………………………….. 17
1.3 Постановка задачі…………………………………………………... 23
1.4 Висновки до розділу 1……………………………………………… 32
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ………………………………………………………. 34
2.1 Огляд існуючих технологій………………………………………... 34
2.2 Вибір технологій …………………………………………………... 51
2.3 Висновки до розділу 2……………………………………………… 56
РОЗДІЛ 3 РОЗРОБКАВИСОКОНАВАНТАЖЕНОЇ СИСТЕМИ………….. 58
3.1 Структура системи…………………………………………………. 58
3.2 Опис функцій системи……………………………………………... 67
3.3 Технічні вимоги для роботи з системою………………………....... 73
3.4 Оцінка ефективності …………......................................................... 76
3.5 Висновки до розділу 3……………………………………………… 79
РОЗДІЛ 4 ЗАХИСТВИСОКОНАВАНТАЖЕНОЇ СИСТЕМИ…………….. 81
4.1 Огляд існуючих рішень……………………………………………. 81
4.2 Захист високонавантаженої системи.……………………………... 91
4.3 Висновки до розділу 4……………………………………………… 94
ВИСНОВКИ…………………………………………………………………… 96
ПЕРЕЛІК СКОРОЧЕНЬ ТАУМОВНИХПОЗНАЧЕНЬ…………………..... 98
3
СПИСОКВИКОРИСТАНИХДЖЕРЕЛ……………………………………... 100
ДОДАТОК А – 482.ЧДТУ.52469-01 Дослідження архітектур і
проектування оптимальної інфраструктури для високонавантажених
систем
4
ВСТУП
Актуальність теми дослідження. Сучасні вебсистеми експлуатуються
в умовах постійного зростання кількості користувачів, збільшення обсягів
даних та вимог до швидкодії. Високонавантажені сервіси стають ключовим
елементом цифрової інфраструктури, а їхня стабільність та масштабованість
визначають конкурентоспроможність бізнесу. Тому проєктування архітектур,
здатних ефективно обробляти великі потоки трафіку та забезпечувати
безперервний доступ до даних, є одним із пріоритетних напрямів у галузі
інформаційних технологій.
Збір та аналітика поведінкових даних користувачів стали необхідним
інструментом для ухвалення стратегічних рішень у сфері маркетингу, UX-
дизайну та оптимізації вебплатформ. Однак класичні централізовані підходи
поступово вичерпують свій потенціал через затримки в доставці даних, високі
витрати на інфраструктуру та ризики перевантаження обчислювальних вузлів.
Це зумовлює потребу в альтернативних моделях оброблення даних, здатних
забезпечити мінімальну затримку та стійкість до пікових навантажень.
Edge-архітектура, що передбачає попередню обробку даних на
периферії мережі якнайближче до користувача, є інноваційним підходом до
подолання цих викликів. Вона дозволяє знизити мережеві затримки, зменшити
навантаження на центральну інфраструктуру та підвищити швидкість
реагування системи навіть за умов стрімкого зростання трафіку. Її
застосування у сфері вебаналітики відкриває можливості для побудови більш
гнучких та масштабованих платформ, здатних обробляти дані у режимі
реального часу.
Додаткової актуальності дослідженню надає використання хмарних
сервісів AWS, які є світовим стандартом у розгортанні високонавантажених
систем. Інтеграція edge-підходу з технологіями AWS створює передумови для
5
формування оптимальної архітектури, що поєднує в собі гнучкість,
масштабованість, високу доступність і зниження експлуатаційних витрат.
Пошук таких оптимальних рішень та їх практична реалізація має вагомий
науковий і прикладний характер.
Отже, досліджувана тематика вирізняється високим ступенем наукової
та прикладної значущості, оскільки спрямована на формування інноваційних
підходів до проєктування та побудови інфраструктури високонавантажених
систем з урахуванням сучасних тенденцій розвитку вебаналітики, підвищених
вимог до ефективності оброблення даних і глобальних процесів цифрової
трансформації.
Метою кваліфікаційної роботи є дослідження сучасних архітектур
високонавантажених інформаційних систем та розроблення оптимальної
інфраструктури для збору і аналітичної обробки поведінкових даних
користувачів вебресурсів із використанням edge-підходу та хмарних сервісів
AWS, що забезпечуватиме підвищену масштабованість, продуктивність і
стійкість до пікових навантажень.
Основні завдання та цілі роботи включають:
1. Аналіз існуючих підходів до проєктування високонавантажених
вебсистем та оцінка їх придатності для роботи в умовах динамічних потоків
даних.
2. Дослідження принципів edge-архітектури та порівняння її з
традиційними централізованими моделями обробки даних щодо затримок,
масштабованості та стійкості до навантажень.
3. Визначення архітектурних вимог до системи збору та аналітики
поведінкових даних користувачів вебресурсів.
4. Розроблення проєктного рішення щодо оптимальної інфраструктури
системи, із застосуванням сервісів AWS та edge-компонентів.
5. Проведення експериментальної оцінки роботи системи.
6
В книзі «Designing Data-Intensive Applications» Мартін Клеппман
детально розглядаються принципи роботи з даними, включно зі зберіганням,
реплікацією, розподілом, шардінгом, забезпеченням консистентності,
масштабованості, доступності та впливом затримок на продуктивність систем.
Автор пояснює, як вибір баз даних, підхід до обробки інформації та організація
потоків даних впливають на поведінку системи під високим навантаженням,
порівнює різні технологічні підходи-реляційні та NoSQL бази даних,
розподілені системи, stream- та batch-обробку, message-broker’и та інші
компоненти-і дає практичне розуміння того, які рішення найбільш оптимальні
для конкретних задач. Крім того, книга аналізує компроміси між
консистентністю, масштабованістю та продуктивністю, що є ключовим у
високонавантажених системах, і пропонує не лише теоретичні основи, але й
практичну «ментальну модель» проєктування, необхідну для побудови
системи збору аналітики, здатної витримувати одночасну роботу великої
кількості користувачів та обробку великих потоків подій. Що гарно розкриває
тему диплому.
Об'єкт дослідження ‒ високонавантажені вебсистеми для збору та
аналітики великих обсягів даних користувачів із використанням edge-
обчислень та хмарних сервісів.
Предмет дослідження – архітектурні рішення та технології побудови
оптимальної інфраструктури високонавантажених систем для збору, обробки
та аналітики даних користувачів вебресурсів.
Наукова новизна полягає у розробці підходів до побудови
високонавантажених вебсистем із застосуванням edge-архітектури та хмарних
сервісів AWS для збору та аналітики поведінкових даних користувачів, що
дозволяє підвищити масштабованість, продуктивність і стійкість системи.
Запропоновано методи оптимізації потоків даних, реплікації та балансування
навантаження, які забезпечують ефективну обробку великих обсягів подій у
режимі реального часу та мінімізують затримки у системі.
7
Практична цінність полягає у можливості використання розроблених
підходів та архітектурних рішень для створення високонавантажених систем
збору та аналітики поведінкових даних користувачів вебресурсів.
Запропоновані методи дозволяють підвищити швидкодію, масштабованість і
стійкість системи при пікових навантаженнях, що робить їх застосовними у
реальних проєктах вебаналітики, електронної комерції та інших онлайн-
платформах, де обробка великих потоків даних є критичною.
Кваліфікаційна робота складається з 4-х розділів:
1. У першому розділі розглядається аналіз предметної області та
постановка задачі.
2. У другому розділі оцінюються доступні технології та обираються
підходи для розробки.
3. У третьому розділі наведено опис розробки системи та оцінка її
ефективності.
4. У четвертому розділі розглядається реалізація захисту
запропонованої системи.
Використана література, під час написання кваліфікаційної роботи,
досить добре розкриває тему та відображає потреби для аналізу.
8
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ
1.1 Аналіз предметної області
У сучасному світі цифрових технологій значна частина бізнесу та
сервісів функціонує в режимі онлайн, обробляючи величезні обсяги
інформації та забезпечуючи одночасну роботу мільйонів користувачів.
Зростання попиту на швидкодію, надійність і безперервність роботи
вебсервісів зумовлює необхідність розробки ефективних архітектур і методів
побудови високонавантажених систем. Саме такі системи стають критично
важливими для забезпечення стабільності цифрових платформ, оперативного
збору та обробки даних, а також для підтримки масштабованості та
продуктивності в умовах постійного росту користувацького трафіку.
Високонавантажені системи ‒ це програмно-апаратні комплекси,
призначені для обробки великих обсягів даних та обслуговування одночасно
великої кількості користувачів, при цьому забезпечуючи високу швидкодію,
надійність і стійкість до збоїв. Під високим навантаженням розуміють такі
умови експлуатації, коли обсяг запитів або оброблюваних даних досягає або
перевищує межі традиційної централізованої інфраструктури. Основною
метою побудови високонавантажених систем є гарантування безперервності
обробки даних, зменшення затримок і забезпечення масштабованості, тобто
здатності ефективно реагувати на зростання користувацького навантаження.
Однією з ключових властивостей високонавантажених систем є
масштабованість, яка може бути горизонтальною (додавання нових вузлів або
серверів до системи) та вертикальною (збільшення ресурсів окремого вузла).
Масштабованість забезпечує гнучкість у реагуванні на зміну обсягів
навантаження і є критичною для підтримки продуктивності в умовах пікових
9
потоків даних. Ще однією важливою характеристикою є стійкість до збоїв -
здатність системи продовжувати роботу навіть у разі виходу з ладу окремих
компонентів або серверів. Це досягається за рахунок реплікації даних,
резервування критично важливих ресурсів та застосування механізмів
автоматичного відновлення.
Висока доступність (High Availability) також є обов’язковою
характеристикою таких систем. Вона передбачає забезпечення постійного
доступу користувачів до сервісів без перерв, що особливо важливо для
фінансових платформ, електронної комерції, потокових сервісів та систем
вебаналітики. Високонавантажені системи використовують різноманітні
технологічні підходи для забезпечення доступності та продуктивності:
кешування часто запитуваних даних, шардінг баз даних, асинхронну обробку
подій, балансування навантаження, message-broker’и, edge-компоненти та
розподілені обчислювальні модулі.
Особливу увагу в сучасних високонавантажених системах приділяють
оптимізації потоків даних і зменшенню затримок, що критично для систем
реального часу. Це включає побудову архітектури, яка дозволяє обробляти
події на периферії мережі (edge), зменшуючи час відповіді і навантаження на
центральні сервери. Крім того, розподілені системи повинні враховувати
компроміси між консистентністю даних, масштабованістю та продуктивністю,
що визначається принципом CAP-теореми [1].
Сфери застосування високонавантажених систем є широкими:
вебаналітика, електронна комерція, соціальні мережі, фінансові сервіси,
потокові платформи та IoT-мережі. Ефективне проєктування таких систем
вимагає інтеграції теоретичних знань у галузі алгоритмів, обчислювальних
архітектур та інженерії програмного забезпечення з практичними рішеннями
щодо оптимізації ресурсів, розподілу навантаження та забезпечення безпеки
даних.
10
Високонавантажені системи є критично важливим елементом сучасної
цифрової інфраструктури, оскільки забезпечують обробку великих потоків
даних, надійний доступ до сервісів та можливість масштабування у відповідь
на збільшення навантаження, що є ключовим для підтримки стабільності та
ефективності сучасних вебсервісів і бізнес-платформ.
Проблематика високонавантажених систем полягає в складності
забезпечення стабільної роботи та ефективної обробки великих обсягів даних
при одночасній взаємодії великої кількості користувачів. Зі збільшенням
навантаження на систему виникають численні технічні та організаційні
виклики, серед яких основними є масштабованість, стійкість до збоїв,
продуктивність, затримки та забезпечення консистентності даних. Кожна з
цих проблем потребує окремих рішень, а інтеграція всіх підходів у єдину
систему є нетривіальним завданням для розробників і архітекторів.
Однією з ключових проблем є масштабованість. Традиційні
централізовані системи часто не здатні ефективно реагувати на різке
збільшення кількості користувачів або обсягу запитів. Без належного
масштабування система стає вузьким місцем, що призводить до зниження
продуктивності, довгих затримок та ризику відмови сервісу. Горизонтальне
масштабування (додавання нових вузлів) та вертикальне масштабування
(збільшення ресурсів окремого вузла) потребують ретельного проєктування
архітектури, координації потоків даних і балансування навантаження.
Ще однією важливою проблемою є стійкість до збоїв та надійність
системи. У високонавантажених системах навіть короткочасна відмова
окремого вузла може призвести до каскадного ефекту, коли інші компоненти
перевантажуються або дані втрачаються [2]. Для запобігання таким ситуаціям
застосовуються механізми реплікації, резервування, автоматичного
відновлення та контролю доступності, але їх реалізація підвищує складність
архітектури та вимагає додаткових ресурсів.
11
Консистентність даних також є суттєвою проблемою. У розподілених
системах, де дані зберігаються на різних вузлах або в різних дата-центрах,
підтримка одночасної актуальності інформації стає складним завданням.
Часто доводиться обирати компроміс між консистентністю, доступністю та
продуктивністю, що відображається у принципі CAP-теореми. Неправильний
вибір стратегії може призвести до некоректної аналітики або втрати даних.
Ще проблематика полягає у затримках і швидкодії системи. Користувачі
очікують миттєвої реакції сервісів, а високі затримки негативно впливають на
досвід користувача та бізнес-показники. Зменшення затримок потребує
впровадження кешування, edge-обробки даних, оптимізації потоків
повідомлень та асинхронної обробки подій.
Окремим викликом є керування ресурсами та балансування
навантаження. У високонавантажених системах критично важливо рівномірно
розподіляти запити між серверами, контролювати споживання процесорного
часу, пам’яті та пропускної здатності мережі. Недостатнє балансування
призводить до перевантаження окремих вузлів і зниження продуктивності
системи в цілому.
Крім технічних аспектів, існують організаційні та проектні проблеми,
зокрема високі витрати на підтримку масштабованої інфраструктури,
складність інтеграції різних компонентів, потреба у кваліфікованих фахівцях
та складність тестування систем під реальними навантаженнями.
Проблема високонавантажених систем охоплює комплекс технічних,
архітектурних та організаційних викликів, які вимагають комплексного
підходу до проєктування, розгортання та оптимізації інфраструктури для
забезпечення надійної та ефективної роботи навіть за умов пікових
навантажень.
Архітектура програмної системи визначає структурні компоненти,
принципи їх взаємодії та організацію обміну даними, що безпосередньо
впливає на продуктивність, масштабованість, стійкість та надійність системи.
12
Високонавантажені системи, які обробляють великі обсяги даних та
підтримують одночасну роботу значної кількості користувачів, потребують
особливої уваги до вибору архітектурного підходу. Існує кілька основних
архітектурних моделей, кожна з яких має свої переваги, обмеження та сфери
застосування.
Монолітна архітектура передбачає інтеграцію всіх компонентів
системи в єдиний виконуваний додаток. У рамках такого підходу бізнес-
логіка, доступ до баз даних, обробка запитів, інтерфейси та інші модулі
функціонують як єдиний організм.
Головною перевагою моноліту є простота розробки та тестування на
ранніх етапах проекту. Оскільки всі компоненти знаходяться в одному
середовищі виконання, легко налагоджувати взаємодію між модулями і
деплоїти систему як один артефакт, схема зображена на рисунку 1.1.
Рисунок 1.1 – Монолітна архітектура
Проте при збільшенні масштабів проекту з’являються значні недоліки.
Моноліти важко масштабувати ‒ навіть якщо лише один компонент потребує
13
додаткових ресурсів, необхідно масштабувати всю систему. Висока
взаємозалежність модулів ускладнює оновлення та підтримку, а будь-які зміни
можуть негативно вплинути на стабільність роботи всієї платформи. Через ці
обмеження монолітні архітектури рідко використовуються у великих
високонавантажених системах [3].
Мікросервісна архітектура передбачає поділ системи на невеликі
автономні сервіси, кожен з яких відповідає за окрему бізнес-функцію.
Взаємодія між сервісами здійснюється через легкі протоколи, такі як
HTTP/REST або gRPC, або через message-broker’и [4].
Головна перевага мікросервісів ‒ гнучке масштабування: кожен сервіс
можна масштабувати окремо відповідно до навантаження. Крім того,
мікросервіси дозволяють незалежну розробку та деплоймент командою, що
підвищує швидкість впровадження нових функцій і полегшує підтримку.
Також підвищується стійкість системи до збоїв -вихід з ладу одного сервісу не
обов’язково зупиняє всю платформу, схема зображена на рисунку 1.2.
Серед недоліків мікросервісів ‒ підвищена складність інтеграції та
тестування взаємодії сервісів. Потрібна добре налагоджена система
моніторингу, логування та оркестрації (наприклад, Kubernetes). Крім того, у
розподілених сервісах можуть виникати проблеми з консистентністю даних,
що потребує додаткових рішень для забезпечення цілісності інформації.
Serverless (безсерверна) архітектура зосереджує увагу розробника на
реалізації бізнес-логіки, делегуючи управління інфраструктурою хмарному
провайдеру. Компоненти реалізуються у вигляді функцій (Function as a Service,
FaaS), які виконуються за подіями (event-driven).
14
Рисунок 1.2 – Мікросервісна архітектура
Переваги Serverless включають автоматичне масштабування, де хмарна
платформа сама виділяє ресурси відповідно до навантаження, та оплату тільки
за фактичне виконання функцій, що зменшує витрати на інфраструктуру.
Такий підхід дозволяє швидко прототипувати і впроваджувати нові сервіси
без необхідності управляти серверами, схема зображена на рисунку 1.3.
До недоліків належать обмеження по часу виконання та ресурсах
функцій, а також проблеми холодного старту, які можуть створювати
додаткові затримки. Крім того, розробник має обмежений контроль над
інфраструктурою, що може ускладнювати складні транзакції або інтеграцію із
зовнішніми системами.
15
Рисунок 1.3 ‒ Serverless (безсерверна) архітектура
Архітектура на основі подій (Event-Driven Architecture, EDA)
передбачає, що компоненти системи взаємодіють між собою через події.
Кожен компонент реагує на певні події і може генерувати нові для інших
частин системи, що забезпечує асинхронну обробку даних.
Основні переваги EDA ‒ висока масштабованість і асинхронність, а
також гнучкість інтеграції нових компонентів без порушення існуючої логіки
[5]. Архітектура природно підходить для потокової обробки даних та
аналітики в реальному часі, схема зображена на рисунку 1.4.
Недоліки включають складність моніторингу потоків подій, високі
вимоги до надійності брокерів повідомлень (Kafka, RabbitMQ) та складнощі з
гарантією порядку обробки подій.
16
Рисунок 1.4 ‒ Архітектура на основі подій (Event-Driven Architecture, EDA)
Розподілені архітектури та edge-компоненти складаються з кількох
фізично або логічно відокремлених вузлів, які спільно обробляють дані. Edge-
компоненти дозволяють виконувати частину обробки на периферії мережі
ближче до користувача, зменшуючи затримки та навантаження на центральні
сервери [6].
Переваги включають зменшення затримок, підвищення стійкості та
надійності, а також можливість географічного масштабування. Недоліками є
складність синхронізації даних між вузлами, високі вимоги до мережевої
інфраструктури та необхідність ретельно продуманих стратегій управління
станом і консистентністю даних.
Вибір архітектури залежить від характеру навантаження, обсягу даних,
вимог до продуктивності, масштабованості та стійкості системи. У сучасних
високонавантажених вебсистемах часто застосовують гібридні підходи, що
комбінують мікросервіси, event-driven компоненти, serverless-функції та edge-
обчислення. Така інтеграція дозволяє досягти оптимального балансу між
продуктивністю, масштабованістю та надійністю, що критично для систем
17
збору аналітики, електронної комерції та інших високонавантажених
платформ.
1.2 Вибір напряму дослідження
У контексті проєктування високонавантажених систем особливе
значення має вибір архітектурного підходу, адже саме він визначає здатність
системи витримувати великі обсяги трафіку, забезпечувати стабільність,
еластичність, відмовостійкість і прогнозовану продуктивність. Різні
архітектурні парадигми мають свої сильні та слабкі сторони, по-різному
реагують на масштабування, складність взаємодії компонентів, зростання
навантаження та вимоги до безпеки й затримок. Тому системний аналіз і
порівняння поширених архітектурних моделей є критично важливими для
обґрунтованого вибору технологічної бази, на якій буде побудована
інфраструктура майбутнього вебаналітичного сервісу.
Перевагами моноліту є простота розробки, зрозуміла структура
застосунку, легкість початкового розгортання та відсутність складної
взаємодії між сервісами. Така архітектура добре підходить для невеликих
проєктів або етапу MVP (Minimum Viable Product), коли система швидко
змінюється, і важливо мати мінімальну технічну складність.
Недоліками моноліту є низька масштабованість, складність поділу на
незалежні компоненти, високий ризик виникнення «вузьких місць»
продуктивності та значна складність підтримки, коли проєкт розростається.
Будь-яка зміна в коді вимагає повторного розгортання всієї системи, що
збільшує ризики та час простою. Крім того, монолітні системи важче
адаптувати до використання сучасних хмарних рішень.
Перевагою мікросервісного підходу є гнучка масштабованість ‒ кожен
сервіс можна розгортати, оновлювати та масштабувати незалежно від інших.
Такий підхід дає можливість будувати розподілені високо-навантажені
системи, підбираючи оптимальні технології під кожен функціональний
18
модуль. Мікросервіси полегшують командну розробку, забезпечують
стійкість до відмов і дозволяютьшвидше розвивати окремі частини продукту.
Недоліки повʼязані зі складністю інтеграції, налаштуванням взаємодії
сервісів, мережевими затримками та більшою кількістю точок відмов. Зростає
потреба у DevOps-підходах, централізованому моніторингу, логуванні,
трасуванні запитів і грамотному управлінні конфігураціями. Вартість
підтримки та інфраструктури помітно збільшується у порівнянні з монолітом.
Основними перевагами serverless є автоматична масштабованість,
відсутність необхідності адмініструвати сервери та оплата тільки за фактичні
обчислювальні ресурси. Цей підхід чудово підходить для систем зі змінним
або високим піковим навантаженням, а також для швидкого створення
подієво-орієнтованих компонентів. Serverless забезпечує високу гнучкість та
пришвидшує розробку, особливо у публічних хмарах.
Недоліки проявляються у залежності від хмарного провайдера,
складності налагодження продуктивності та обмеженнях за часом виконання
функцій. Зростають затримки під час «холодного старту», а складні
розподілені сценарії потребують ретельного контролю станів. Для великих
систем вартість може різко збільшуватися при неправильному проєктуванні
потоків викликів.
Основним плюсом edge-підходу є мінімальна затримка, оскільки
обробка даних відбувається максимально близько до користувача. Це
критично для високонавантажених систем реального часу, таких як аналітика
поведінки користувачів, CDN-рішення або IoT мережі. Edge-обчислення
зменшують навантаження на центральні сервери, покращують стійкість та
дозволяють працювати навіть при нестабільному з’єднанні.
Недоліки полягають у підвищеній складності управління розподіленою
інфраструктурою, потребі в захисті численних вузлів та складнощах із
синхронізацією даних між периферією та центральною системою. Виникають
19
додаткові ризики пов’язані з безпекою, оскільки дані обробляються вне
центральних дата-центрів.
Перевагами є висока адаптивність до пікових навантажень, можливість
асинхронної обробки подій, розгортання нових компонентів без впливу на всю
систему та покращена стійкість до відмов. Система природно масштабувана,
а взаємодія через message-broker зменшує затримки та підвищує ефективність
роботи.
Недоліками є складність відлагодження потоків подій, ризики
дублювання повідомлень, потреба у продуманому контролі черг і механізмах
гарантії доставки. Крім того, моделі взаємодії стають менш прозорими, що
ускладнює підтримку та формальний аналіз.
Основним плюсом є можливість поєднувати сильні сторони різних
підходів залежно від бізнес-потреб: наприклад, моноліт для основного ядра і
мікросервіси для модулів з високим навантаженням, або serverless для обробки
подій поряд з класичними сервісами. Це забезпечує високу оптимальність,
гнучкість і адаптивність.
Головний мінус ‒ істотна складність проєктування та підтримки,
потреба в команді з високою компетентністю та наявність продуманої системи
управління усіма рівнями. Неправильне поєднання підходів може призвести
до зростання технічного боргу та втрати переваг кожної з обраних архітектур.
Проєктування оптимальної інфраструктури для високонавантажених систем
потребує не лише теоретичного аналізу архітектурних підходів, але й
практичної реалізації, яка дозволить перевірити обрані рішення на реальному
прикладі. У межах даної кваліфікаційної роботи буде розроблено систему
збору вебаналітики, призначену для відстеження взаємодії користувачів із
вебресурсами та подальшого аналізу отриманої інформації. Така система
виступає показовим кейсом, у якому поєднуються високі вимоги до
масштабованості, низької затримки у передачі даних, доступності сервісів та
стійкості до пікових навантажень.
20
Запропонована вебаналітична платформа забезпечуватиме
перехоплення подій у браузері користувача ‒ переглядів сторінок, кліків,
переміщень, взаємодій з інтерфейсними елементами та інших поведінкових
сигналів. Усі зібрані події передаватимуться до відповідного шлюзу для їх
подальшої обробки. З огляду на природу таких даних ‒ їхній великий обсяг у
короткі проміжки часу ‒ для системи постає критичним завдання
підтримувати швидку реакцію без погіршення досвіду користувача на стороні
клієнта.
Для досягнення цієї мети інфраструктура проєкту буде побудована з
використанням edge-архітектури та хмарних сервісів AWS. Обробка та
буферизація подій здійснюватиметься у вузлах, максимально наближених до
кінцевого користувача. Це дозволить зменшити затримки при відправленні
аналітичних даних, а також знизити навантаження на центральні
обчислювальні компоненти системи. Далі дані будуть агрегуватися,
реплікуватися, розподілятися між вузлами збереження та передаватися до
модулів аналітики у централізованій частині інфраструктури.
Система включатиме кілька логічних рівнів: клієнтський (для збору
подій), транспортний (для швидкої доставки даних), обчислювальний (для
попередньої обробки і трансформацій), аналітичний (для формування
статистичних показників) та візуалізаційний (для представлення результатів
вебмайстерам). Така структуризація дозволяє поєднати функціональну
гнучкість з оптимальною масштабованістю: кожен рівень може бути
масштабований незалежно, відповідно до характеру навантаження.
Важливою особливістю системи стане забезпечення відмовостійкості та
балансування навантаження. Потоки даних будуть оброблятися асинхронно із
застосуванням механізмів черг та розподілених брокерів повідомлень. Це
мінімізує ймовірність втрати інформації навіть у випадках тимчасних збоїв
або зростання трафіку до надзвичайних значень. Крім того, буде застосовано
21
автоматичне масштабування обчислювальних ресурсів залежно від вхідної
інтенсивності подій.
Отримані аналітичні дані після обробки стануть доступними
вебмайстеру у вигляді візуалізованих показників щодо відвідуваності сайту,
залученості аудиторії, динаміки поведінкових метрик та інших індикаторів
ефективності. Це надасть можливість ухвалювати обґрунтовані рішення щодо
оптимізації користувацького інтерфейсу, контенту, маркетингових кампаній
тощо.
Розроблення такої платформи дасть змогу на практиці перевірити низку
архітектурних рішень, проаналізувати їхню ефективність в умовах змінного
навантаження та підтвердити актуальність використання edge-обчислень у
сучасній вебаналітиці. Таким чином, система збору аналітики виступатиме не
просто демонстраційним проєктом, а повноцінним інструментом для
емпіричного дослідження оптимальних підходів до побудови інфраструктури
високонавантажених систем.
Швидкодія системи збору аналітики є ключовим чинником її
ефективності та надійності в умовах зростаючих навантажень і вимог до якості
даних. У сучасному цифровому середовищі вебресурси генерують величезні
обсяги подій у реальному часі: кліки, переходи, зміни стану інтерфейсу, дії в
динамічних додатках. Ці події формують основу для ухвалення бізнес-рішень,
персоналізації контенту та підвищення залученості користувачів. Тому
важливо, щоб система аналітики здатна була приймати та обробляти дані без
затримок, забезпечуючи їх актуальність та якість на кожному етапі.
Однією з головних причин важливості швидкої системи збору аналітики
є зменшення впливу на роботу вебсайту. Будь-які додаткові скрипти чи
мережеві запити на стороні клієнта збільшують затримку відображення
сторінки, а це безпосередньо впливає на досвід користувача та бізнес-
показники. Відомо, що навіть затримка у декілька сотень мілісекунд може
збільшити показник відмов і зменшити конверсію. Оптимізована, швидка
22
аналітична система повинна функціонувати непомітно для користувача й не
створювати додаткових перешкод у роботі вебресурсу.
Також критично важливо забезпечити оперативність доступу до
метрик. Аналітика має найбільшу цінність у той момент, коли її можна
використати для швидкої реакції на поведінку аудиторії. Маркетингові
кампанії, A/B-тестування, рекомендаційні моделі потребують даних «тут і
зараз». Якщо система оновлює статистику з великими затримками, вебмайстер
або аналітик може ухвалити хибні або застарілі рішення, що сприяє втраті
конкурентних переваг. Швидка обробка подій дозволяє створювати адаптивні
інтерфейси, які миттєво реагують на очікування користувачів, підвищуючи
їхню залученість.
Іншою важливою перевагою високої швидкодії є зменшення ризиків
втрати даних. У пікові години навантаження кількість подій різко зростає, і
якщо система не здатна оперативно обробляти вхідний потік, дані
накопичуються у чергах, частково відкидаються або зберігаються
фрагментарно. Це спотворює статистичні результати, робить аналітику
недостовірною та обмежує можливість оцінювати поведінку користувачів у
повному масштабі. Рішення з низькими затримками більш стійкі до пікових
ситуацій і забезпечують безперервність аналітичного процесу.
Крім того, швидка система збору аналітики сприяє точнішій
сегментації та персоналізації. Дані про поведінку користувача, отримані із
затримкою, втрачають свою прогностичну цінність: користувач може вже
покинути сайт або змінити свій намір. Коли рішення формуються на основі
даних у реальному часі, система дозволяє застосовувати динамічний
таргетинг, релевантні рекомендації та інші методи підвищення ефективності
вебконтенту.
Важливою складовою також є якість і безпека даних. Системи з
високою швидкодією краще адаптовані до розподілених архітектур і можуть
виконувати попередню фільтрацію, валідацію й нормалізацію подій ще на
23
ранніх етапах обробки. Це дозволяє зменшити навантаження на центральні
вузли, знизити ймовірність помилок, а також підвищити рівень захисту від
зловмисних або аномальних запитів.
Швидкодія системи напряму впливає на її масштабованість і
економічну ефективність. Чим ефективніше система обробляє дані, тим
менше ресурсів потрібно для підтримки тієї ж кількості запитів. Технології
edge-обробки, асинхронні черги повідомлень та потокова аналітика
дозволяють оптимізувати використання обчислювальних ресурсів і скоротити
витрати на інфраструктуру навіть за умов стрімкого зростання кількості
користувачів.
1.3 Постановка задачі
У сучасному цифровому середовищі вебсайти та онлайн-сервіси
генерують величезні обсяги даних про поведінку користувачів, що є критично
важливою інформацією для бізнес-аналітики, оптимізації користувацького
досвіду та прийняття обґрунтованих управлінських рішень. Розвиток
електронної комерції, стрімке збільшення кількості інтерактивних
вебдодатків, а також зростання конкуренції на глобальному ринку
зумовлюють високу потребу у технологіях збору та обробки поведінкових
метрик у реальному часі. Таким чином, розроблення системи збору
вебаналітики, яка здатна працювати під значними навантаженнями та
забезпечувати високі показники продуктивності, є актуальним завданням як
для наукової спільноти, так і для індустрії.
Сучасний користувач взаємодіє з вебресурсами через швидкі, насичені
мультимедійними елементами інтерфейси, де кожна дія (клік, скрол, перегляд
сторінки, заповнення форми, взаємодія з кнопками та іншими елементами)
може бути виміряна та проаналізована. Ці дані створюють цінні аналітичні
сигнали, на основі яких можна виявити закономірності використання сервісу,
ідентифікувати проблемні ділянки інтерфейсу, визначати ефективність
24
маркетингових кампаній і формувати персоналізовані рекомендації. Проте
збирання такої інформації створює серйозні технічні виклики: великий обсяг
подій, їхня висока частота та нерівномірність розподілу в часі призводять до
суттєвого навантаження на компоненти аналітичної системи.
Проблематика проєктування високонавантажених систем полягає у
забезпеченні гарантованої продуктивності та стабільності навіть за умов
інтенсивного зростання трафіку. Пікові навантаження можуть виникати під
час спеціальних подій ‒ рекламних кампаній, масових продажів
(розпродажів), публікації новин або контенту, що має вірусний ефект. У такі
періоди кількість подій від користувачів може зростати в десятки або сотні
разів упродовж декількох хвилин. Якщо система збору аналітики не здатна
адаптуватися до таких змін, це призводить до втрати даних, збоїв у роботі, а
отже ‒ до втрати довіри клієнтів і прямих економічних збитків.
Ще одним критичним аспектом є мінімальний вплив системи збору
аналітики на швидкість роботи основного вебресурсу. Будь-які додаткові
обчислення або мережеві операції на стороні клієнта збільшують час
відображення інтерфейсу, а це може негативно вплинути на бізнес-метрики.
Дослідження показують, що навіть додаткові 200–300 мс затримки можуть
підвищити показник відмов і знизити конверсії. Тому аналітичний інструмент
має працювати непомітно, бути легким, асинхронним та не блокувати основні
процеси взаємодії користувача з вебсайтом.
Система збору аналітики повинна гарантувати безперервність обробки
вхідних даних. Для цього необхідно застосовувати механізми балансування
навантаження, реплікації даних, відмовостійкості та фільтрації аномальних
потоків. Оскільки користувацькі дії мають тісний зв’язок із бізнес-
показниками, будь-яка втрата інформації є критичною. Неповні або
пошкоджені набори даних призводять до хибних висновків і можуть
спричиняти неправильні управлінські рішення. Тому система має бути здатна
25
стабільно працювати у складних середовищах і підтримувати високу
доступність даних навіть за умов збою окремих компонентів.
Особливе значення для таких систем має низька затримка обробки.
Дані вебаналітики часто використовуються у режимах реального часу для
персоналізації інтерфейсу, керування динамічним ціноутворенням, виведення
релевантних рекомендацій, застосування таргетингових механізмів. Якщо
дані надходять із запізненням, вони втрачають актуальність, а аналітичні
механізми ‒ ефективність. Отже, система має забезпечувати як високу
продуктивність, так і оперативність доставлення метрик кінцевому
користувачеві ‒ вебмайстру або аналітичній платформі.
Зростання обсягів даних вимагає застосування масштабованих
розподілених архітектур, здатних динамічно розширювати свої
обчислювальні ресурси. Сучасний підхід до побудови таких систем базується
на мікросервісній парадигмі, event-driven моделі та використанні хмарних
сервісів. У цьому контексті особливо важливим є використання edge-
обчислень, які дозволяють розподіляти трафік максимально близько до
кінцевих користувачів і зменшувати затримки мережевої взаємодії. Хмарні
платформи, зокрема AWS, надають широкий набір інструментів для створення
еlastичних систем (AWS Lambda, Amazon Kinesis, DynamoDB, CloudFront), що
можуть автоматично адаптуватися до змін інтенсивності потоків подій.
Передбачається, що розроблювана система збору аналітики
складатиметься з декількох логічно розділених модулів: клієнтського скрипта,
транспортних компонентів, брокерів повідомлень, шарів потокової аналітики,
системи збереження та сервісів візуалізації. Така модульність дає можливість
масштабувати окремі елементи незалежно одне від одного та адаптувати
конфігурацію до конкретних бізнес-вимог. Наприклад, транспортний рівень
може бути масштабований у десятки разів швидше, ніж аналітичний, оскільки
саме в моменти пікових навантажень відбуваються стрибки у надходженні
подій.
26
Важливо також врахувати питання безпеки й конфіденційності даних.
Оскільки система обробляє поведінкову інформацію про користувачів,
необхідно забезпечити захист каналів передавання, шифрування даних,
контроль доступу до аналітичних панелей, а також відповідність
законодавчим нормам щодо обробки персональних даних (зокрема GDPR).
Усі ці аспекти мають бути враховані під час проєктування та реалізації
системи, оскільки нехтування ними може призвести до втрати даних або
порушення приватності користувачів.
Розроблення системи, здатної витримувати високі навантаження,
забезпечує практичну можливість випробування сучасних архітектурних
підходів у реальних виробничих умовах. Це створює базу для наукових
досліджень і дозволяє емпірично перевірити ефективність застосованих
методів масштабування, балансування, розподілу обчислювальних процесів і
побудови потокової аналітики. Порівняльний аналіз отриманих результатів
дасть змогу сформувати рекомендації для оптимального проєктування
високонавантажених рішень у сфері вебаналітики.
Розроблення високо-продуктивної та масштабованої системи збору
аналітики є необхідним кроком для забезпечення ефективної підтримки
бізнес-процесів, що базуються на аналізі поведінки користувачів. Така система
має гарантувати стабільність роботи за будь-яких умов навантаження,
забезпечувати своєчасність і точність метрик, а також створювати технічні
передумови для подальшого розвитку функціональних можливостей
вебресурсів.
Її впровадження сприятиме підвищенню конкурентоспроможності
цифрових продуктів, удосконаленню користувацького досвіду та покращенню
якості стратегічних рішень у сфері вебмаркетингу і розробки.
Сучасний світ характеризується надзвичайно швидкими темпами
цифрової трансформації, де кожна організація, незалежно від розміру чи галузі
діяльності, прагне ефективніше використовувати дані для ухвалення рішень.
27
Вебсайти стали ключовою точкою взаємодії бізнесу з користувачами: вони є
не лише вітриною бренду, але й головним каналом отримання інформації про
поведінку аудиторії. Саме тому системи збору аналітики з вебсайтів
набувають стратегічного значення ‒ вони дозволяють не просто фіксувати
події, а перетворювати їх на корисні знання, які прямо впливають на успіх
компанії. Актуальність розробки таких систем постійно зростає, оскільки
вебтрафік стає все більш динамічним, обсяг даних ‒ величезним, а
конкуренція ‒ інтенсивною.
В епоху діджиталізації кожна дія користувача ‒ перехід на сторінку,
натискання кнопки, перегляд товару, заповнення форми ‒ формує певний
«цифровий слід». Ці сліди, зібрані та структуровані належним чином,
створюють потужний аналітичний ресурс. Компанії більше не покладаються
на інтуїцію чи загальні припущення ‒ доступність даних дозволяє їм розуміти
реальні мотиви користувачів, чинники їхньої лояльності або навпаки ‒
бар’єри, що призводять до відтоку. Платформи електронної комерції
аналізують поведінку покупців, відстежують популярність товарів,
ефективність рекламних кампаній. Новинні та медіаресурси вимірюють
інтерес до контенту, оптимізують розміщення матеріалів. Онлайн-банкінг
відстежує операційну активність, виявляє підозрілі дії. У кожному випадку
зібрані дані створюють основу для покращення продукту.
Зростання актуальності аналітики зумовлене тим, що очікування
користувачів швидко змінюються. Вони прагнуть персоналізованого, чіткого
та комфортного досвіду взаємодії. Якщо сервіс не виконує цих вимог ‒ клієнт
миттєво переходить до конкурентів. Для того щоб передбачити та
задовольнити потреби аудиторії, необхідно володіти актуальною інформацією
про її поведінкові патерни. Системи збору аналітики стають інструментом,
який дозволяє не тільки реагувати на зміни, але й формувати їх наперед.
Водночас обсяги даних, що генеруються на вебплатформах, зростають
експоненційно. Кількість користувачів, пристроїв, типів взаємодій ‒ усе це
28
створює величезні потоки подій, які неможливо опрацювати традиційними
методами. Це висуває значні вимоги до технологій, що мають забезпечувати
швидке збирання, фільтрацію, зберігання й аналіз інформації в режимі
реального часу. Таким чином, актуальність теми пов’язана не лише з цінністю
аналітичних даних, але й зі складністю інфраструктури, необхідної для їхньої
обробки.
Важливо також зазначити, що зміни відбуваються не тільки на рівні
технологій, але й на рівні бізнес-стратегії. Компанії все частіше ухвалюють
рішення на основі метрик. KPI, воронки продажів, оцінка ефективності
контенту, сегментація аудиторії ‒ усі ці процеси напряму залежать від
коректності та доступності аналітичних даних. Втрата хоча б частини
інформації, затримки в її доставці або неможливість належним чином її
проаналізувати ‒ усе це призводить до помилкових рішень і фінансових втрат.
Тому системи збору аналітики мають бути не тільки функціональними, але й
високонадійними, продуктивними та масштабованими.
Окремим важливим аспектом є захист інформації. Аналітичні системи
працюють із чутливими даними про користувачів, що регулюється
міжнародними нормами, такими як GDPR. Забезпечення анонімності,
шифрування, контроль доступу, аудит операцій ‒ усе це стає невід’ємною
частиною інженерних рішень. Отже, актуальність питання полягає також у
пошуку балансу між ефективною аналітикою та дотриманням законодавчих
вимог щодо конфіденційності.
Потреба у високонавантажених системах збору аналітики зумовлюється
також розвитком бізнесів, які можуть масштабуватися до глобальних ринків.
Коли продукт починає обслуговувати сотні тисяч або мільйони користувачів,
інфраструктура повинна безперебійно обробляти потоки даних з різних
регіонів та часових поясів. Система повинна забезпечувати низькі затримки,
швидкий запис подій і можливість горизонтального масштабування без
29
зупинки роботи або втрати даних. Ці характеристики визначають
конкурентоздатність цифрових платформ.
Іншим фактором, що визначає актуальність, є природа самих даних.
Вебаналітика не обмежується переглядами сторінок. Сьогодні вимірюють
мікровзаємодії: рух курсора, швидкість прокручування, час взаємодії з
елементами інтерфейсу, поведінку в динамічних SPA-додатках, події в
мобільних вебверсіях. Це ускладнює структуру даних і висуває додаткові
вимоги до стандартів їх збирання та інтерпретації. Більше того, дедалі частіше
виникає потреба аналізувати дані в реальному часі ‒ наприклад, для
автоматичного таргетингу реклами або виявлення технічних помилок на сайті.
Також важливо враховувати розвиток хмарних технологій, які суттєво
розширили можливості створення гнучких та масштабованих аналітичних
платформ. AWS, GCP, Azure пропонують інструменти для потокової обробки,
зберігання великих обсягів інформації та машинного аналізу. Це робить задачу
розробки системи збору аналітики не лише актуальною, а й технологічно
доступною для широкого кола компаній. У той же час проєктування такої
системи вимагає глибокого розуміння архітектурних підходів, мережевих
процесів і принципів роботи розподілених систем.
Збір аналітики також стає основою для впровадження штучного
інтелекту. Моделі машинного навчання потребують великих і якісних наборів
даних. Вебсайти ‒ один із наймасовіших їх джерел. Саме тому компанії
інвестують у системи, які здатні генерувати дані, придатні для тренування
алгоритмів. Таким чином, аналітика перетворюється на фундамент
технологічної еволюції продукту.
Окремо потрібно підкреслити актуальність для швидкозростаючих
стартапів. Для них важливо не лише працювати з поточними показниками, але
й мати можливість оперативно змінювати фокус, тестувати нові функції,
перевіряти гіпотези. Без гнучкої аналітичної системи неможливо проводити
A/B-тестування, оцінювати ретеншн, визначати портрет користувача. Дані
30
стають стратегічним активом, а добре спроєктована система аналітики ‒
інструментом збереження конкурентної переваги.
Розробка системи збору аналітики для вебсайтів є надзвичайно
актуальною, оскільки:
 дані стають ключовим ресурсом для бізнес-рішень і оптимізації
продукту;
 обсяги вебподій стрімко зростають, що потребує високонадійних і
масштабованих платформ;
 конкуренція вимагає точного розуміння поведінки користувачів у
реальному часі;
 ринок диктує потребу в персоналізації, швидкості й зручності взаємодії;
 існують високі вимоги до безпеки та конфіденційності даних;
 сучасні технології дозволяють створювати складні аналітичні
інфраструктури, але потребують грамотного проєктування;
 збір якісних даних є умовою розвитку штучного інтелекту та
моделювання;
 масштабування бізнесу робить систему збору аналітики критичною для
безперервного розвитку.
Усе це підтверджує, що створення швидкої, надійної та гнучкої системи
збору аналітики для вебсайту ‒ не просто технологічне завдання, а
стратегічний елемент розвитку сучасних цифрових продуктів. Правильно
спроєктована інфраструктура аналітики забезпечує бізнес точними даними,
скорочує витрати, покращує досвід користувачів і відкриває можливості для
інновацій.
Проєктування системи збору аналітики для вебсайтів вимагає створення
оптимальної архітектури, здатної забезпечити максимально швидку обробку
вхідних запитів і подій користувачів. Оскільки такі системи працюють у
середовищі з потенційно високим навантаженням, будь-які затримки під час
обробки або втрати даних можуть безпосередньо вплинути на якість
31
подальшого аналізу та ухвалення управлінських рішень. Тому важливо
врахувати принципи масштабованості, стійкості до збоїв, оптимального
розподілу навантаження та ефективної передачі даних між компонентами.
Оптимальна архітектура має підтримувати горизонтальне
масштабування ‒ можливість розподіляти навантаження між багатьма
екземплярами сервісів без зупинки системи. Це дозволяє забезпечувати
стабільну роботу навіть за умови стрімкого збільшення кількості користувачів
або обсягу подій, що надходять у систему. Важливо також мінімізувати
затримки під час запису даних, оскільки аналітика часто потребує майже
реального часу для забезпечення оперативного реагування на поведінкові
зміни аудиторії.
Ключовим принципом архітектурного проєктування є розподіл
відповідальності між компонентами. Система повинна складатися з
незалежних сервісів, кожен із яких виконує обмежений набір функцій: прийом
подій, валідація, кешування, черги повідомлень, зберігання та первинна
обробка. Такий підхід зменшує ризик виникнення «вузьких місць» та спрощує
підтримку і розвиток інфраструктури.
Ще одним важливим аспектом є вибір технологій, орієнтованих на
високопродуктивну обробку потоків даних. Використання message-broker
систем (наприклад, Kafka або RabbitMQ), баз даних, оптимізованих під
швидкий запис (ClickHouse, DynamoDB, Cassandra), а також інструментів
потокової обробки (Flink, Spark Streaming) формує основу високошвидкісної
аналітичної платформи. Технологічний стек має відповідати вимогам до
продуктивності, затримок та обсягів даних, характерних для конкретного
вебпродукту.
Особливу увагу потрібно приділити стійкості до відмов. Система
повинна автоматично відновлюватися після збоїв, забезпечувати реплікацію
даних та збереження подій навіть у разі часткової недоступності окремих
компонентів. Висока доступність ‒ критично важлива властивість аналітичної
32
інфраструктури, оскільки втрачена інформація не може бути відновлена
постфактум.
Проєктування оптимальної архітектури для системи збору аналітики
полягає у створенні високопродуктивного, масштабованого й відмовостійкого
рішення, яке здатне працювати зі значними потоками даних у режимі
реального часу. Від правильності архітектурних рішень залежить можливість
подальшого розвитку системи, точність аналітичних результатів і загальна
ефективність функціонування вебплатформи.
1.4 Висновки до розділу 1
У розділі проведено детальний аналіз предметної області
високонавантажених вебсистем та визначено ключові вимоги до розробки
системи збору вебаналітики. Розглянуто сучасні тенденції цифрових
технологій, зокрема зростання обсягів даних, потребу у високій швидкодії,
масштабованості, відмовостійкості та надійності сервісів. Виділено основні
проблеми, характерні для високонавантажених систем: забезпечення
масштабованості, підтримка консистентності даних у розподіленому
середовищі, зменшення затримок, балансування навантаження та
безперервність обробки інформації.
Детально проаналізовано існуючі архітектурні підходи ‒ монолітні,
мікросервісні, serverless, event-driven та edge-обчислення, з визначенням їхніх
переваг і недоліків у контексті високонавантажених платформ. Висвітлено
необхідність поєднання різних архітектурних моделей для досягнення
оптимального балансу між продуктивністю, масштабованістю та надійністю.
На основі проведеного аналізу обґрунтовано напрям дослідження та
сформульовано постановку задачі: розробка системи збору вебаналітики, яка
здатна працювати під значними навантаженнями, забезпечувати мінімальні
затримки при обробці подій користувачів, гарантувати високу доступність та
відмовостійкість, а також надавати аналітичні дані у реальному часі.
33
Запропонована структура системи включає багаторівневу організацію ‒
клієнтський, транспортний, обчислювальний, аналітичний та візуалізаційний
рівні ‒ із застосуванням edge-обчислень та хмарних сервісів для забезпечення
ефективності та масштабованості.
Проведений аналіз дозволяє зробити висновок про актуальність
розробки високошвидкісної вебаналітичної платформи, що поєднує сучасні
архітектурні підходи, та визначає чітку методологічну основу для подальшої
розробки та практичної реалізації системи в рамках кваліфікаційної роботи.
34
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ
2.1 Огляд існуючих технологій
Хмарні обчислення (Cloud Computing) представляють собою модель
надання обчислювальних ресурсів через мережу Інтернет на вимогу
користувача. У рамках даної моделі організаціям надається можливість
використовувати обчислювальні потужності, сховища даних, мережеві
ресурси та програмні сервіси без необхідності придбання та обслуговування
фізичної інфраструктури. Основні переваги хмарних обчислень включають
підвищену гнучкість та масштабованість, оптимізацію витрат, скорочення
часу на розгортання інформаційних систем та спрощення процесів управління
ІТ-ресурсами.
Модель хмарних обчислень традиційно поділяється на три основні рівні
сервісів:
1. IaaS (Infrastructure as a Service) ‒ забезпечує базові обчислювальні
ресурси, такі як віртуальні сервери, сховища даних та мережеві
компоненти. Користувачі здійснюють управління операційними
системами та прикладним програмним забезпеченням, тоді як
постачальник хмарних послуг відповідає за фізичну інфраструктуру.
2. PaaS (Platform as a Service) ‒ надає платформу для розробки,
тестування та розгортання додатків, включаючи середовище виконання
та інструменти розробки, без необхідності керування базовими
ресурсами.
3. SaaS (Software as a Service) ‒ пропонує готові програмні продукти,
доступні користувачам через веб-інтерфейс або спеціальні клієнтські
додатки, що дозволяє користувачам отримувати функціональність без
35
необхідності встановлення та обслуговування програмного
забезпечення.
Серед провідних глобальних постачальників хмарних обчислень
виділяються Amazon Web Services (AWS), Microsoft Azure та Google Cloud
Platform (GCP) [7].
Amazon Web Services (AWS) є найбільшим хмарним провайдером у
світі та був запущений компанією Amazon у 2006 році. AWS надає
комплексний набір сервісів, включаючи обчислювальні ресурси (EC2),
сховища даних (S3, EBS), управління базами даних (RDS, DynamoDB), сервіси
для аналітики, машинного навчання та Інтернету речей (IoT), що зображено
на рисунку 2.1.
Рисунок 2.1 ‒ Amazon Web Services
AWS вирізняється високою масштабованістю та надійністю,
забезпечуючи глобальні дата-центри в різних регіонах і зонах доступності, що
дозволяє створювати відмовостійкі розподілені системи.
36
Microsoft Azure ‒ хмарна платформа від компанії Microsoft, що
інтегрується з корпоративними продуктами Microsoft, такими як Windows
Server, SQL Server, Active Directory та Office 365 [8]. Архітектура зображена
на рисунку 2.2.
Рисунок 2.2 – Архітектура Microsoft Azure
Azure надає сервіси IaaS, PaaS та SaaS, включаючи віртуальні машини,
сховища, бази даних, аналітичні інструменти та сервіси для DevOps.
Особливістю Azure є можливість гібридного розгортання, що дозволяє
поєднувати локальну інфраструктуру з хмарними сервісами, що є важливим
для організацій з високими вимогами до безпеки та конфіденційності даних.
Google Cloud Platform (GCP) ‒ хмарна платформа компанії Google,
відома інноваційними рішеннями у сфері обробки великих даних та штучного
інтелекту. GCP надає обчислювальні сервіси (Compute Engine), сервіси для
контейнеризації (Kubernetes Engine), сховища даних (Cloud Storage),
37
аналітичні інструменти (BigQuery) та рішення для машинного навчання,
зображено на рисунку 2.3.
Рисунок 2.3 ‒ Google Cloud Platform (GCP)
Платформа відзначається високою ефективністю при роботі з великими
обсягами даних, відкритими стандартами та інтеграцією з сучасними
контейнерними технологіями.
Використання хмарних платформ дозволяє організаціям швидко
масштабувати обчислювальні ресурси, оптимізувати витрати на ІТ
інфраструктуру, підвищувати доступність інформаційних систем та
зосередитися на розвитку власних продуктів. Таким чином, хмарні обчислення
є ключовим елементом сучасної цифрової трансформації бізнесу та
інформаційних технологій, а AWS, Azure та GCP залишаються лідерами
ринку, пропонуючи комплексні, надійні та гнучкі рішення для організацій
будь-якого масштабу [9].
Edge-архітектура ‒ це підхід до обробки даних безпосередньо біля
джерела їх виникнення, замість відправки всіх даних у централізовані сервери.
Такий метод дозволяє зменшити затримки, оптимізувати мережевий трафік,
підвищити надійність систем та забезпечити ефективну обробку великих
обсягів даних у реальному часі. Цей підхід особливо актуальний для Інтернету
38
речей, автономних транспортних систем, промислової автоматизації та
аналітики відеоданих. Хмарні сервіси надають можливості побудови
гібридних систем, де обчислення виконуються як локально, так і в хмарі, що
забезпечує масштабованість і безпеку.
Основна ідея edge-архітектури полягає в обробці даних поблизу місця
їх генерації. Це дозволяє приймати рішення у реальному часі, зменшувати
обсяг трафіку до хмари та підтримувати роботу систем навіть при обмеженому
підключенні до Інтернету. Обробка даних на краю мережі покращує
масштабованість систем, дозволяючи додавати нові пристрої без зміни
центральної інфраструктури. Архітектура зазвичай складається з трьох рівнів:
пристрої, які збирають дані; локальні вузли для первинної обробки; та
хмарний рівень для зберігання, аналітики та інтеграції з бізнес-процесами.
Для реалізації edge-архітектури використовуються сервіси, що
дозволяють підключати пристрої до хмари, керувати ними та обробляти
повідомлення в реальному часі. Такі сервіси забезпечують підтримку різних
протоколів, безпечну комунікацію, інтеграцію з обчислювальними функціями
та сховищами даних. Крім цього, можливо запускати обчислення локально на
edge-пристроях, виконуючи програмну логіку навіть при відсутності
підключення до хмари, а результати синхронізуються після відновлення
зв’язку. Це дозволяє знизити затримки та забезпечити роботу систем у режимі
реального часу [10].
Іншим підходом є обробка запитів і модифікація контенту
безпосередньо на вузлах, що наближає обчислення до користувачів. Це
зменшує час відгуку та оптимізує доставку контенту. Для глобальної доставки
даних можна використовувати мережі доставки контенту, які забезпечують
низькі затримки, інтеграцію з обчислювальними функціями та захист від атак.
Також можливо розгортати повністю керовану хмарну інфраструктуру
локально, що дозволяє виконувати обчислення, зберігання та управління
даними безпосередньо на майданчику.
39
Процес розробки включає визначення вимог, вибір рівнів обробки,
підключення пристроїв, налаштування локальних вузлів для обробки та
кешування, оптимізацію доставки даних та моніторинг роботи систем. Такий
підхід дозволяє забезпечити масштабованість, гнучкість, надійність та безпеку
на всіх рівнях системи. Він також полегшує інтеграцію з іншими хмарними
сервісами та аналітичними платформами.
Використання edge-архітектури дозволяє створювати сучасні гібридні
системи, де обчислення виконуються як на локальних пристроях, так і у хмарі.
Це забезпечує швидкий час відгуку, оптимізацію трафіку, надійну роботу при
відсутності підключення та можливість масштабування системи. Такий підхід
є ефективним для різних сфер, включаючи промислові IoT рішення, смарт-
міста та глобальну доставку мультимедійного контенту.
Node.js ‒ це відкрита серверна платформа, що дозволяє виконувати
JavaScript поза браузером. Вона була створена у 2009 році Райаном Далем і з
того часу стала однією з найпопулярніших технологій для розробки серверних
застосунків, API та реального часу веб-додатків [11]. Основна ідея Node.js
полягає в тому, щоб використовувати JavaScript не тільки на фронтенді, але й
на бекенді, що дозволяє розробникам працювати з однією мовою на всіх рівнях
системи.
Node.js побудований на рушії V8 від Google, який компілює JavaScript
у машинний код і забезпечує високу продуктивність. Однією з ключових
особливостей Node.js є його подієво-орієнтована, неблокуюча архітектура
вводу-виводу (I/O), архітектура зображена на рисунку 2.4.
Це означає, що сервер може обробляти тисячі одночасних з’єднань без
створення окремого потоку для кожного запиту, на відміну від традиційних
серверних платформ. Завдяки цьому Node.js особливо ефективний для
застосунків реального часу, таких як чати, онлайн-ігри, стрімінгові сервіси
або системи для обробки великих потоків даних.
40
Рисунок 2.4 – Архітектура Node.js
Node.js має власний пакетний менеджер ‒ npm (Node Package Manager),
який надає доступ до сотень тисяч бібліотек та модулів. Це спрощує
інтеграцію сторонніх рішень, таких як бази даних, аутентифікація
користувачів, обробка HTTP-запитів, веб-сокети та багато іншого. Завдяки
npm розробка Node.js-застосунків стає швидкою і гнучкою, а код легше
підтримувати і масштабувати [12].
Архітектура базується на однопоточному циклі подій (event loop), який
дозволяє виконувати асинхронні операції без блокування потоку виконання.
Це робить Node.js ідеальним для роботи з операціями вводу-виводу, що
займають тривалий час, наприклад, запитами до бази даних, файлової системи
або зовнішніх API. Асинхронність у Node.js реалізується за допомогою
колбеків, промісів та конструкцій async/await, що спрощує написання
зрозумілого та ефективного коду.
Підтримує розробку як монолітних, так і мікросервісних застосунків.
Завдяки легкій інтеграції з базами даних SQL та NoSQL, такими як MongoDB,
PostgreSQL чи Redis, Node.js дозволяє створювати масштабовані системи з
високою продуктивністю. Його використовують великі компанії та стартапи
41
для створення веб-додатків, платформ для обробки потокових даних та
сервісів реального часу.
Іншою перевагою є активна спільнота та регулярне оновлення
платформи. Це забезпечує доступ до сучасних технологій, нових модулів,
покращеної безпеки та продуктивності. Node.js підтримує роботу на різних
операційних системах, включаючи Windows, macOS і Linux, що робить його
універсальним інструментом для розробки серверних рішень.
Це ефективна серверна платформа на базі JavaScript, яка дозволяє
створювати високопродуктивні, масштабовані та реального часу веб-
застосунки. Його неблокуюча архітектура, асинхронність, багатий
екосистемний пакет модулів та активна спільнота роблять Node.js потужним
інструментом для сучасної розробки серверних застосунків.
Java ‒ це об’єктно-орієнтована мова програмування високого рівня,
створена компанією Sun Microsystems у 1995 році. Вона призначена для
розробки платформонезалежних застосунків завдяки принципу «write once,
run anywhere» (писати один раз -запускати скрізь), що забезпечується
використанням віртуальної машини Java (JVM) [13]. JVM інтерпретує байт-
код, який генерується після компіляції Java-програм, на машинний код
конкретної операційної системи, завдяки чому програми Java можуть
працювати на будь-якій платформі без змін у коді.
Однією з ключових особливостей Java є строгий синтаксис та об’єктно-
орієнтований підхід. Всі дані і функції організовані у вигляді класів і об’єктів,
що забезпечує повторне використання коду, його масштабованість та легкість
підтримки великих проєктів. Java підтримує основні принципи ООП
‒інкапсуляцію, наслідування, поліморфізм і абстракцію, що дозволяє
створювати гнучкі і структуровані програмні системи. Архітектура зображена
на рисунку 2.5.
42
Рисунок 2.5 ‒ Архітектура Java
Java має багатий набір стандартних бібліотек (Java Standard Edition API),
які включають інструменти для роботи з колекціями, потоками вводу-виводу,
мережею, графічним інтерфейсом користувача, базами даних та
криптографією. Ці бібліотеки значно спрощують розробку і зменшують
необхідність створювати функціонал з нуля. Крім того, Java має розвинену
екосистему фреймворків, таких як Spring, Hibernate та JavaFX, що дозволяє
швидко створювати веб-застосунки, корпоративні системи та мобільні
додатки [14].
Підтримує багатопоточність, що дозволяє одночасно виконувати кілька
частин програми. Це забезпечує ефективну роботу з обчислювально
інтенсивними завданнями, серверами та системами реального часу. Механізми
синхронізації потоків допомагають уникати конфліктів при паралельному
доступі до спільних ресурсів. Крім того, Java надає автоматичне керування
43
пам’яттю через збирач сміття (Garbage Collector), що знижує ризик витоків
пам’яті та полегшує підтримку програм.
Java активно використовується у різних сферах: від розробки серверних
застосунків, вебсервісів і корпоративних систем до мобільних додатків на
платформі Android. Її стабільність, безпека та велика спільнота розробників
роблять її надійним вибором для довгострокових проєктів. Крім того, численні
інструменти розробки, такі як IntelliJ IDEA, Eclipse та NetBeans, спрощують
написання, тестування та налагодження Java-програм [15].
Java ‒ це потужна і універсальна мова програмування, яка поєднує
об’єктно-орієнтований підхід, платформонезалежність, багатопоточність і
широкий набір бібліотек. Вона підходить для створення надійних,
масштабованих і безпечних програмних систем будь-якого масштабу, від
невеликих утиліт до складних корпоративних рішень.
C# ‒ це сучасна об’єктно-орієнтована мова програмування, розроблена
компанією Microsoft у 2000 році в рамках платформи .NET. Вона поєднує
сильні сторони C++ і Java, пропонуючи розробникам простий синтаксис,
високу продуктивність та широкі можливості для створення різноманітних
застосунків. C# підтримує принципи об’єктно-орієнтованого програмування,
включно з інкапсуляцією, наслідуванням, поліморфізмом та абстракцією, що
дозволяє організовувати код у вигляді класів та об’єктів, забезпечуючи його
масштабованість і повторне використання. Переваги зображені на рисунку
2.6.
Однією з ключових особливостей C# є тісна інтеграція з
платформою .NET, яка надає багатий набір стандартних бібліотек для роботи
з графікою, базами даних, мережею, файлами, криптографією та багатьма
іншими аспектами програмування. Завдяки цьому розробники можуть швидко
створювати потужні та надійні застосунки, не витрачаючи час на розробку
базового функціоналу. Крім того, платформа .NET забезпечує роботу програм
44
на різних операційних системах завдяки .NET Core та .NET 5/6, що робить C#
більш гнучкою для кросплатформної розробки [16].
Рисунок 2.6 ‒ Переваги C#
Підтримує багатопоточність і асинхронне програмування, що дозволяє
ефективно обробляти одночасні завдання, підвищуючи продуктивність
програм та серверних застосунків. Мова пропонує потужні механізми для
синхронізації потоків і роботи з паралельними обчисленнями, а також
автоматичне керування пам’яттю за допомогою збирача сміття (Garbage
Collector), що зменшує ризик витоків пам’яті та спрощує підтримку програм.
Активно використовується для розробки різних типів програм:
настільних застосунків (Windows Forms, WPF), вебзастосунків (ASP.NET,
Blazor), серверних систем, ігор (Unity), мобільних додатків (Xamarin) та
хмарних сервісів (Azure). Завдяки цьому мова підходить як для невеликих
проєктів, так і для великих корпоративних систем. Розвинена екосистема
інструментів розробки, таких як Visual Studio та Rider, спрощує написання,
налагодження та тестування програм, підвищуючи ефективність роботи
розробників.
45
Також підтримує сучасні парадигми програмування, такі як
функціональні підходи, LINQ для роботи з колекціями даних, делегати та події
для обробки сигналів і повідомлень, а також різні механізми обробки винятків
для підвищення надійності програм. Це робить мову зручною для створення
чистого та структурованого коду, що легко підтримувати і масштабувати.
C# ‒ це потужна, багатофункціональна мова програмування, яка поєднує
простоту синтаксису, об’єктно-орієнтований підхід, багатопоточність та
інтеграцію з платформою .NET. Вона підходить для розробки настільних, веб,
мобільних та хмарних застосунків, ігор та корпоративних систем,
забезпечуючи надійність, безпеку та ефективність програмних рішень.
Python ‒ це високорівнева мова програмування загального призначення,
яка відзначається простим та зрозумілим синтаксисом, що дозволяє
розробникам швидко писати та підтримувати код. Мова була створена Гвідо
ван Россумом у 1991 році та з того часу стала однією з найпопулярніших у
світі [17]. Python підтримує кілька парадигм програмування, включно з
об’єктно-орієнтованим, процедурним та функціональним підходами, що
робить його універсальним інструментом для різних типів проєктів.
Однією з головних переваг Python є його простота та читабельність, що
особливо корисно для новачків у програмуванні. Синтаксис мови
максимально наближений до природної мови, що дозволяє швидко освоювати
її та зменшує ймовірність помилок. Python має динамічну типізацію та
автоматичне керування пам’яттю, що спрощує розробку та роботу з ресурсами
програми.
Python має величезну екосистему бібліотек і фреймворків, які значно
спрощують розробку. Для веброзробки використовують фреймворки Django,
Flask або FastAPI. Для наукових обчислень і аналізу даних популярні
бібліотеки NumPy, Pandas та SciPy, а для машинного навчання ‒ TensorFlow,
PyTorch, scikit-learn. Завдяки цьому Python застосовується в багатьох галузях:
веброзробка, наука про дані, автоматизація, штучний інтелект, фінансові
46
технології та Internet of Things (IoT) [18]. Принцип роботи зображено на
рисунку 2.7.
Рисунок 2.7 ‒ Принцип роботи Python
Підтримує мультиплатформеність, що дозволяє запускати програми на
Windows, macOS та Linux без значних змін у коді. Крім того, мова має потужні
інструменти для тестування, налагодження та автоматизації, включно з
unittest, pytest та інтеграціями з CI/CD, що робить процес розробки більш
ефективним та надійним.
Важливою особливістю Python є велика спільнота розробників, яка
постійно створює нові бібліотеки, модулі та фреймворки, а також надає
підтримку та документацію. Це забезпечує швидке вирішення проблем і
можливість обмінюватися досвідом з іншими розробниками по всьому світу.
Також підтримує роботу з базами даних (SQL, NoSQL), обробку тексту,
мережеві протоколи, створення графічних інтерфейсів та багатопоточність.
Хоча інтерпретований характер мови може робити виконання деяких програм
повільнішим порівняно з компільованими мовами, її гнучкість і зручність у
розробці часто переважають цей недолік, особливо у прототипуванні та
швидкому розгортанні застосунків.
47
Python ‒ це потужна, гнучка і проста у використанні мова
програмування, яка підходить для розробки вебзастосунків, наукових
проєктів, автоматизації процесів, роботи з даними та штучного інтелекту. Її
читаємість, багатофункціональність та підтримка спільноти роблять Python
ідеальним вибором як для початківців, так і для досвідчених розробників.
MySQL ‒ це система управління реляційними базами даних (RDBMS),
яка широко використовується для зберігання та обробки структурованих
даних. Вона дозволяє організовувати інформацію у вигляді таблиць, зв’язаних
між собою за допомогою ключів, що забезпечує ефективне зберігання та
пошук даних. MySQL була створена компанієюMySQL AB у 1995 році і з того
часу стала однією з найпопулярніших систем для веброзробки, корпоративних
застосунків та аналітики.
Система підтримує мову SQL (Structured Query Language), яка є
стандартом для роботи з реляційними базами даних. За допомогою SQL можна
виконувати створення таблиць, вставку даних, оновлення, видалення, а також
складні запити для фільтрації, сортування та об’єднання інформації. MySQL
забезпечує високу продуктивність при роботі з великими обсягами даних і
дозволяє оптимізувати запити за допомогою індексів, ключів та інших
механізмів.
Однією з переваг MySQL є її відкритий код і безкоштовне використання
для багатьох випадків, що робить її привабливою для стартапів і невеликих
компаній. Крім того, вона має потужні механізми безпеки: підтримку
аутентифікації користувачів, шифрування даних, контроль доступу та
журналювання подій, що дозволяє захищати інформацію від
несанкціонованого доступу. MySQL також підтримує транзакції та механізм
відновлення даних у разі збоїв.
Система сумісна з багатьма операційними системами, включно з
Windows, Linux та macOS, і легко інтегрується з популярними мовами
програмування, такими як PHP, Python, Java, C# та Node.js. Це робить MySQL
48
універсальним інструментом для розробки вебсайтів, корпоративних
застосунків, систем управління контентом та аналітичних платформ.
Дозволяє масштабувати бази даних, використовуючи реплікацію та
шардінг, що забезпечує високу доступність і стабільну роботу навіть при
великих навантаженнях. Крім того, вона підтримує різні типи зберігання
даних через механізми зберігання (storage engines), такі як InnoDB таMyISAM,
що дозволяє обирати оптимальний підхід залежно від вимог до
продуктивності та цілісності даних [19].
MySQL ‒ це надійна, потужна та гнучка система управління базами
даних, яка підходить для розробки вебзастосунків, корпоративних систем,
аналітики та багатьох інших сфер. Її простота використання, стабільність і
підтримка спільноти роблять MySQL одним із найпопулярніших рішень для
роботи з реляційними даними.
PostgreSQL ‒ це потужна система управління реляційними базами
даних (RDBMS) з відкритим кодом, яка широко використовується для
зберігання та обробки структурованих даних. Вона забезпечує надійне та
ефективне управління інформацією, підтримуючи складні запити, транзакції
та механізми контролю цілісності даних. PostgreSQL була створена в
університеті Каліфорнії в Берклі і розвивається як проєкт з відкритим кодом,
що робить її доступною для широкого кола розробників і компаній.
Система використовує мову SQL (Structured Query Language) як
основний інструмент роботи з даними. За допомогою SQL можна створювати
таблиці, вставляти, оновлювати та видаляти дані, виконувати складні запити
з об’єднанням, фільтрацією та сортуванням інформації. PostgreSQL також
підтримує розширені функції, такі як збережені процедури, тригери, індекси,
віртуальні колонки та користувацькі типи даних, що дозволяє створювати
гнучкі та ефективні схеми баз даних.
Однією з ключових переваг є її надійність та відповідність стандартам
ACID (Atomicity, Consistency, Isolation, Durability), що гарантує цілісність
49
даних навіть у випадку збоїв або одночасного доступу багатьох користувачів.
Система підтримує транзакції, механізми блокувань, а також складні типи
даних, включно з JSON, XML, геопросторовими об’єктами та масивами, що
робить її універсальним інструментом для різних типів застосунків.
PostgreSQL сумісна з багатьма операційними системами, включно з
Linux, Windows та macOS, і легко інтегрується з популярними мовами
програмування, такими як Python, Java, C#, Node.js та PHP. Вона також
забезпечує масштабування через реплікацію, шардинг та підтримку
розподілених баз даних, що дозволяє ефективно працювати з великими
обсягами даних і високим навантаженням.
Система підтримує високий рівень безпеки: аутентифікацію
користувачів, контроль доступу, шифрування даних, журналювання подій та
механізми захисту від несанкціонованого доступу. Вона дозволяє
адміністратору точно налаштовувати права користувачів і ролі, що особливо
важливо для корпоративних застосунків і критично важливих систем.
PostgreSQL ‒ це надійна, масштабована та гнучка система управління
базами даних, яка підходить для вебзастосунків, корпоративних систем,
аналітики та складних проєктів з великими обсягами даних. Її потужний
функціонал, відповідність стандартам та активна спільнота роблять
PostgreSQL одним із найпопулярніших рішень у сучасній розробці.
MongoDB ‒ це сучасна система управління базами даних з відкритим
кодом, що належить до категорії документно-орієнтованих баз даних
(NoSQL). На відміну від реляційних СУБД, MongoDB зберігає дані у вигляді
документів у форматі BSON (бінарне представлення JSON), що дозволяє
працювати з гнучкими, нереляційними структурами даних. Це робить її
особливо зручною для застосунків, де структура даних часто змінюється, або
для роботи з великими обсягами даних.
Підтримує гнучке моделювання даних, дозволяючи зберігати складні
об’єкти з вкладеними структурами, масивами та документами всередині
50
документів. Завдяки цьому розробники можуть ефективно працювати з JSON-
подібними даними без необхідності розбивати їх на численні таблиці та
зв’язки, як у реляційних базах даних. Також MongoDB забезпечує високу
продуктивність при операціях читання та запису, що важливо для сучасних
вебзастосунків, мобільних застосунків та аналітичних платформ.
Система підтримує потужну мову запитів, яка дозволяє виконувати
фільтрацію, сортування, агрегації та об’єднання даних. Агрегаційний
фреймворк MongoDB забезпечує виконання складних аналітичних операцій
безпосередньо на рівні бази даних, що значно спрощує обробку даних у
реальному часі. Крім того, MongoDB підтримує індекси для прискорення
запитів, включно з текстовими, геопросторовими, комбінованими та
хешованими індексами.
Важливою особливістю MongoDB є горизонтальне масштабування
через шардинг, що дозволяє розподіляти дані між кількома серверами та
ефективно обробляти великі обсяги даних. Реплікація забезпечує високу
доступність та відмовостійкість: дані дублюються на декількох вузлах, що
дозволяє підтримувати роботу системи навіть у разі виходу окремих серверів
з ладу.
MongoDB інтегрується з багатьма мовами програмування та
платформами, включно з Python, Java, C#, Node.js, PHP та іншими. Це робить
її універсальним інструментом для створення вебзастосунків, API,
аналітичних систем та рішень у сфері великих даних [20].
Система також забезпечує безпеку: аутентифікацію користувачів,
контроль доступу на рівні ролей, шифрування даних як при передачі, так і у
сховищі, а також журналювання подій для аудиту та відстеження змін. Це
робить MongoDB придатною для корпоративних застосунків та систем, що
працюють з чутливими даними.
MongoDB ‒ це гнучка, масштабована та високопродуктивна база даних,
яка підходить для роботи з динамічними даними, великими обсягами
51
інформації та сучасними веб та мобільними застосунками. Вона доповнює
реляційні СУБД і дозволяє розробникам ефективно реалізовувати складні
проєкти з мінімальними обмеженнями на структуру даних.
2.2 Вибір технологій
Під час розробки системи на базі високонавантаженої архітектури вкрай
важливо ще на старті визначитися з принципом побудови інфраструктури,
оскільки саме це визначає її здатність справлятися зі зростанням
навантаження, забезпечувати стабільність і ефективно реагувати на пікові
запити. Архітектура може бути розгорнута в хмарному середовищі, на
класичному VPS або на виділеному сервері, і кожен із цих підходів має свої
переваги та слабкі сторони. Вибір правильного варіанту часто залежить від
очікуваного масштабу, складності бізнес-логіки, фінансових можливостей та
вимог до гнучкості системи. Особливо критичним цей вибір стає для
високонавантажених платформ, де навіть незначні збої чи обмеження
інфраструктури можуть призвести до втрати доступності або значного падіння
продуктивності.
Хмарна інфраструктура є найбільш гнучким та сучасним рішенням,
оскільки вона дозволяє масштабувати ресурси практично миттєво у відповідь
на зміни навантаження, а також компенсувати потенційні відмови завдяки
автоматичному розподілу навантаження та вбудованій відмовостійкості.
Порівняно з VPS, який має фіксовані ресурси й обмежену можливість
масштабування, хмарні сервіси надають значно ширший набір інструментів
для оптимізації продуктивності, включаючи серверless-підходи, автоматичне
горизонтальне масштабування та використання керованих сервісів баз даних.
Такі можливості дозволяють зменшити операційні витрати, уникнути ручної
підтримки інфраструктури та зосередитися на розробці бізнес-логіки, а не на
технічному утриманні серверів.
52
Виділений сервер може забезпечити високу продуктивність, проте він
позбавлений гнучкості, характерної для хмари. Масштабування в такому разі
вимагатиме фізичного втручання, а відмова обладнання може спричинити
тривалі простої, що категорично неприйнятно для систем із великим
навантаженням. В той час як у хмарних платформах можна швидко дублювати
ресурси, розподіляти трафік між регіонами чи навіть переналаштовувати
архітектуру в режимі реального часу, виділена інфраструктура залишається
статичною і залежною від обмеженого фізичного обладнання.
З огляду на гнучкість, можливість автоматичного масштабування,
високу доступність та широкий вибір керованих сервісів, хмарні системи є
найбільш оптимальним варіантом для побудови високонавантажених
інфраструктур. Вони дозволяють не лише витримувати великі обсяги трафіку,
а й ефективно адаптуватися до його коливань, залишаючись стабільними,
продуктивними та економічно виправданими у довгостроковій перспективі.
Саме тому для систем, що повинні рости разом із кількістю користувачів і
швидко реагувати на зміни, вибір хмарної інфраструктури є
найраціональнішим і найбільш стратегічно виправданим рішенням.
У випадку використання хмарної інфраструктури одним із
найважливіших етапів проєктування високонавантаженої системи стає вибір
оптимального провайдера. Хоча сама хмара забезпечує гнучкість,
масштабованість і високу доступність, конкретні характеристики платформи
значною мірою залежать від того, хто саме надає ці послуги. Різні провайдери
пропонують різний набір сервісів, рівень автоматизації, модель безпеки,
можливості інтеграції та умови масштабування. Саме тому на цьому етапі
важливо не лише розуміти загальні переваги хмарних технологій, але й
порівняти можливості кількох провідних рішень на ринку.
Серед найвідоміших хмарних провайдерів, що активно
використовуються у високонавантажених системах, зазвичай розглядають три
глобальні платформи: Amazon Web Services, Microsoft Azure та Google Cloud
53
Platform. Azure часто обирають організації, які глибоко інтегровані в
екосистему Microsoft, оскільки платформа забезпечує тісну сумісність із
Windows Server, Active Directory та корпоративними інструментами. Google
Cloud, зі свого боку, відомий сильною аналітичною складовою, а також
потужними сервісами для роботи з великими даними та машинним навчанням,
що робить його привабливим для компаній, орієнтованих на побудову
складних моделей обробки інформації. Обидві платформи пропонують сучасні
технології, проте кожна має обмеження, які можуть впливати на гнучкість
масштабування чи різноманітність доступних сервісів.
Amazon Web Services виділяється серед конкурентів найбільш зрілою,
масштабною та різноманітною інфраструктурою, яка включає сотні керованих
сервісів і глобальну мережу дата-центрів. AWS пропонує найширші
можливості для побудови саме високонавантажених систем завдяки
поєднанню автоматичного масштабування, стійких балансувальників
навантаження, високодоступних баз даних і гнучких інструментів DevOps. На
практиці це означає здатність легко адаптувати систему до пікових
навантажень, розподіляти ресурси між регіонами, забезпечувати безперервну
роботу навіть у випадку відмови окремих компонентів інфраструктури. Крім
того, AWS має один із найкращих підходів до безпеки, пропонуючи детальну
модель керування доступами та сертифікації, що дозволяє створювати
інфраструктуру, яка відповідає найвищим стандартам. [21]
Саме тому з огляду на масштабованість, передові інструменти для
автоматизації, глобальну розподіленість і стабільність сервісів,
найоптимальнішим вибором для побудови високонавантаженої системи є
Amazon Web Services. Ця платформа не лише забезпечує технічну гнучкість,
але й дозволяє створювати архітектури будь-якої складності, підтримуючи як
класичні моделі інфраструктури, так і сучасні підходи, орієнтовані на
serverless, мікросервіси та контейнеризацію.
54
Для розробки високонавантаженої системи важливо обрати мову
програмування, яка здатна стабільно працювати під значними обсягами
трафіку, забезпечувати ефективне керування ресурсами та підтримувати
багатопотоковість без суттєвих втрат продуктивності. Вибір мови визначає не
тільки швидкість виконання окремих операцій, але й доступність
фреймворків, бібліотек, підходів до оптимізації, можливостей інтеграції з
інфраструктурою та довгострокову підтримку системи. Особливо це важливо
у високонавантажених архітектурах, де кожне рішення впливає на
масштабованість і загальну стабільність платформи.
Серед мов, які традиційно використовуються у створенні продуктивних
серверних рішень, часто розглядають Java та C#. Обидві мають потужні
екосистеми, підтримку великих команд розробників та багаторічний досвід
використання в комерційних системах. C# добре інтегрований в екосистему
Microsoft і показує високу ефективність у проектах, орієнтованих на Windows-
інфраструктуру або Azure. Він пропонує зрозумілий синтаксис, сучасні
підходи до асинхронного програмування та широкий набір бібліотек, що
дозволяє створювати швидкі та масштабовані застосунки. Проте його
залежність від конкретної екосистеми часто звужує варіанти
інфраструктурних рішень.
Java натомість є універсальним вибором, який впродовж десятиліть
залишається стандартом для створення розподілених, надійних і
високонавантажених систем. Завдяки віртуальній машині JVM програми на
Java можуть працювати на будь-якій платформі, що забезпечує високу
переносимість та гнучкість у виборі інфраструктури. Java має зрілу
екосистему, багате середовище бібліотек і фреймворків, включно зі Spring,
який є одним із найпоширеніших інструментів для побудови мікросервісів.
Мова демонструє стабільну продуктивність, ефективну роботу з
багатопоточністю та можливість тонкого налаштування збору сміття, що
особливо корисно для систем із великим навантаженням.
55
З урахуванням здатності до масштабування, великої кількості
перевірених рішень, нейтральності до платформ і сильних можливостей для
створення складних розподілених архітектур, більш доцільним вибором для
високонавантаженої системи є Java. Це рішення дозволяє проектувати гнучку
інфраструктуру, мінімізує залежність від конкретних провайдерів та гарантує
стабільну роботу системи навіть за умов стрімкого зростання навантаження.
У межах розробки високонавантаженої системи для веб аналітики
критично важливо одразу визначити, яким саме способом буде отримуватися
інформація від користувачів, що взаємодіють із вебпорталом клієнта. Оскільки
система повинна збирати події в режимі, максимально наближеному до
реального часу, а також забезпечувати цілісність та достовірність отриманих
даних, необхідно передбачити механізм, який дозволить передавати
аналітичні сигнали швидко, стабільно та без втручання в роботу самого сайту
замовника. Саме тому логіка інтеграції має бути мінімально інвазивною та не
створювати додаткового навантаження на інфраструктуру клієнта.
У рамках кваліфікаційної роботи передбачається, що клієнт, який бажає
використовувати розроблену систему, додаватиме на свій портал спеціальний
JavaScript-скрипт. Цей невеликий код виконуватиметься безпосередньо в
браузері користувачів і автоматично відправлятиме дані про їхню активність:
перегляди сторінок, кліки, взаємодію з елементами, технічні параметри
середовища та інші важливі метрики. Такий підхід є стандартним у індустрії
аналітики, оскільки він дозволяє збирати інформацію без необхідності
додаткової зміни бекенд-частини сайту та забезпечує максимальну
універсальність інтеграції.
Існує кілька способів доставки цієї інформації на аналітичний сервіс.
Найпростіший підхід полягає у використанні запитів типу розвантажувальних
пікселів, коли дані передаються через запит до невеликого зображення, а вся
аналітична інформація міститься у параметрах URL. Цей метод досить
швидкий, однак має суттєві обмеження щодо обсягу та безпечності переданих
56
даних. Іншим варіантом є використання класичних HTTP-запитів методом
POST, які дозволяють надсилати структуровану інформацію у форматі JSON.
Такий спосіб забезпечує гнучкість, підтримку великих пакетів даних і значно
кращу інтеграцію зі складними аналітичними моделями. Також можливе
використання протоколу WebSocket для потокової передачі подій, проте цей
підхід створює складність у масштабуванні та не завжди виправданий для
фронтенд-скриптів, що працюють у браузері.
З огляду на вимоги до безпеки, стабільності та сумісності, найкращим
рішенням для передачі даних від клієнтського скрипту до аналітичного сервісу
є використання класичних HTTPS-запитів. Цей протокол забезпечує
шифрування трафіку, що особливо важливо при передачі потенційно чутливих
технічних даних, а також гарантує сумісність із будь-якими сучасними
браузерами. Використання HTTPS дозволяє уникнути проблем із блокуванням
змішаного контенту, спрощує інтеграцію та забезпечує високу надійність
обміну інформацією. Саме тому в рамках даної кваліфікаційної роботи для
доставки аналітичних подій логічно обрати HTTPS як основний транспортний
протокол, що стане найстабільнішою та найбезпечнішою основою для системи
веб-аналітики.
2.3 Висновки до розділу 2
У другому розділі було проведено детальний огляд сучасних технологій
та інструментальних засобів для розробки високонавантажених систем. У
даному розділі було розглянуто ключові хмарні платформи ‒ Amazon Web
Services, Microsoft Azure та Google Cloud Platform, які забезпечують
масштабованість, гнучкість, відмовостійкість та широкий спектр сервісів для
побудови складних інформаційних систем. Окремо було описано edge-
архітектуру як ефективний підхід для обробки даних біля джерела їх
виникнення, що зменшує затримки та оптимізує мережевий трафік.
57
Також проаналізовано популярні серверні платформи та мови
програмування ‒ Node.js, Java, C# і Python, які підтримують різні парадигми
програмування, багатопоточність, асинхронність і забезпечують ефективну
розробку як монолітних, так і мікросервісних застосунків. У межах даного
розділу було розглянуто реляційні (MySQL, PostgreSQL) та нереляційні
(MongoDB) системи управління базами даних, які відрізняються гнучкістю,
продуктивністю та можливостями масштабування.
На основі проведеного аналізу зроблено висновок, що для побудови
високонавантажених та масштабованих систем оптимальним є використання
хмарної інфраструктури, оскільки вона забезпечує гнучкість, автоматичне
масштабування, високу доступність та широкий спектр керованих сервісів.
Вибір конкретної технології та провайдера повинен базуватися на вимогах до
продуктивності, безпеки, інтеграції та довгострокової підтримки системи.
Таким чином, поєднання хмарних платформ, сучасних серверних технологій
та надійних СУБД забезпечує створення стійких, ефективних і масштабованих
програмних рішень.
58
РОЗДІЛ 3 РОЗРОБКА ВИСОКОНАВАНТАЖЕНОЇ СИСТЕМИ
3.1 Структура системи
У рамках даної кваліфікаційної роботи було розроблено систему збору
аналітики відвідувань та поведінки користувачів на вебсайтах, яка призначена
для обробки значних обсягів даних у режимі реального часу. Особливість
такого рішення полягає в тому, що аналітичні події надходять безперервним
потоком від великої кількості незалежних джерел, кожне з яких може
генерувати суттєву кількість інформації про кліки, навігацію, взаємодію з
елементами інтерфейсу та інші дії користувачів. У випадку одночасного
використання системи на багатьох вебресурсах навантаження зростає
експоненційно, оскільки збільшується не лише кількість подій, а й частота їх
надходження. Це потребує ретельно продуманої архітектури, здатної
обробляти стрімкий потік даних без втрати продуктивності та без ризику
деградації сервісу.
Високонавантажений характер такої системи зумовлює необхідність
використання сучасних підходів до масштабування, оптимізації потокової
обробки та забезпечення стійкості до пікових навантажень. При цьому
важливо враховувати, що вебаналітика є критичною для бізнесу, адже
помилки або затримки можуть призвести до втрати цінної інформації або
неможливості коректної оцінки поведінки відвідувачів. Саме тому розроблене
рішення орієнтоване на використання хмарної інфраструктури, що дозволяє
забезпечити динамічне масштабування, високу доступність і рівномірний
розподіл навантаження між усіма складовими системи.
Під час виконання поставлених завдань у роботі розглянуто різні
варіанти архітектур, які потенційно можуть бути застосовані для побудови
високонавантажених систем збору та обробки вебаналітики. Аналіз
59
проводився з урахуванням вимог до швидкості обробки даних, мінімізації
затримок, здатності витримувати пікові навантаження та забезпечення
стійкості до відмов. Розглядалися традиційні монолітні підходи, які
характеризуються централізованою логікою та простотою підтримки, але
виявляються слабкими при різкому збільшенні трафіку, оскільки їх
можливості масштабування є обмеженими та часто потребують значних
модифікацій. Також було проаналізовано мікросервісну архітектуру, яка
дозволяє розділити систему на окремі ізольовані сервіси, кожен з яких може
масштабуватися незалежно. Цей підхід є значно більш гнучким і краще
підходить для систем зі змінним навантаженням, проте він вимагає складнішої
інфраструктури, надійної мережевої взаємодії та розвиненої системи
моніторингу.
Окремо було досліджено подієво орієнтовану архітектуру, яка особливо
добре проявляє себе у випадках, коли система повинна обробляти великі
потоки даних у реальному часі. У такій моделі компоненти взаємодіють за
допомогою подій, що дозволяє легко масштабувати окремі елементи та
ефективно розподіляти навантаження. Проте для цього підходу потрібне
впровадження черг повідомлень, механізмів стрімінгової обробки та
складного керування потоками. Незважаючи на очевидні переваги, подієва
архітектура може бути надмірною для проєктів на початковому етапі або для
команд із недостатнім досвідом роботи з такими технологіями.
У результаті проведеного аналізу було прийнято рішення обрати хмарну
архітектуру системи з використанням edge-підходу. Такий вибір
продиктований специфікою системи вебаналітики, яка повинна приймати
велику кількість подій у режимі реального часу з різних географічних точок.
Edge-архітектура дозволяє обробляти або попередньо фільтрувати дані
максимально близько до користувача, що значно зменшує затримку та
зменшує навантаження на центральні сервіси. Замість того щоб направляти
весь трафік у єдиний регіон, система приймає та агрегує події на периферійних
60
вузлах хмарного провайдера, після чого передає їх у центральне сховище або
аналітичний модуль для подальшої обробки.
Використання edge-інфраструктури у хмарі забезпечує додатковий
рівень масштабованості й відмовостійкості, оскільки навантаження
рівномірно розподіляється між численними вузлами, що знаходяться ближче
до кінцевих користувачів. Це дозволяє системі швидко реагувати на піковий
трафік, зменшує ризик перевантаження окремого регіону і робить архітектуру
суттєво стійкішою до локальних збоїв. Крім того, такий підхід підвищує
загальну продуктивність, скорочує затримку передачі даних і забезпечує
можливість глобальної присутності без необхідності підтримувати власну
інфраструктуру в кожному регіоні.
Поєднання хмарної моделі з edge-архітектурою створює оптимальні
умови для побудови високо ефективної, масштабованої та географічно
розподіленої системи вебаналітики. Це рішення не лише відповідає вимогам
високих навантажень, але й забезпечує технологічну гнучкість, готовність до
майбутнього розвитку та стабільну роботу в умовах стрімкого зростання
кількості користувачів.
У системі ключову роль відіграють edge-вузли, які формують передній,
найближчий до користувача рівень обробки даних. Їхнє призначення полягає
у прийманні, первинному опрацюванні та маршрутизації аналітичної
інформації, що надходить від браузерного скрипта. Саме ці вузли
забезпечують мінімальну затримку та високу швидкість відповіді, оскільки
фізично розташовані максимально близько до кінцевого користувача,
використовуючи глобальну інфраструктуру хмарного провайдера. Це
дозволяє значно зменшити навантаження на центральні компоненти системи
та підвищити її загальну відмовостійкість.
Edge-вузли були реалізовані як безсерверні функціональні модулі в
рамках глобальної мережі CDN-інфраструктури, що дає можливість
виконувати код у точках присутності, розподілених по всьому світу.
61
Використання такого підходу дає змогу обробляти запити користувачів без
необхідності передавати їх у центральний дата-центр, що не лише скорочує
латентність, але й дозволяє гнучко масштабувати систему відповідно до
обсягів трафіку. Ці вузли виконують базову валідацію даних, агрегування
мінімальних метаданих і подальшу передачу подій у внутрішні сервіси, які
відповідають за довготривале зберігання, аналітичну обробку та формування
звітів.
Технічно кожен edge-вузол являє собою легковаговий програмний
компонент, оптимізований для швидкого старту та високої пропускної
здатності. Він реалізує обробку HTTP-запитів, виконує структуризацію
інформації, додає службові маркери, формує внутрішній формат подій і
надсилає їх у центральну частину архітектури через захищені канали. Вузол
проєктувався з урахуванням можливості відмовостійкої роботи: у випадку
збільшення навантаження він автоматично масштабується за рахунок
інфраструктурних механізмів хмарної платформи, а у разі тимчасових
проблем із передачею даних може виконувати локальне буферизаційне
зберігання на короткий проміжок часу.
Завдяки такому підходу edge-вузли виконують функцію першої лінії
приймання трафіку й одночасно забезпечують необхідну гнучкість та
стабільність системи. Вони дозволяють масштабувати платформу
горизонтально, мінімізувати затримки й рівномірно розподіляти
навантаження, що є критично важливим для високонавантажених рішень з
глобальною аудиторією. Таким чином, реалізація edge-архітектури стала
ключовим елементом, який дозволив створити швидку, адаптивну та надійну
систему збору веб-аналітики.
В AWS реалізація edge-архітектури була побудована з використанням
поєднання декількох ключових сервісів, що забезпечують масштабованість,
низькі затримки та стійкість до пікових навантажень. Основою edge-шару
стала мережа Amazon CloudFront, яка забезпечує глобальну присутність і
62
дозволяє розміщувати обробку HTTP-запитів у найближчих до користувача
регіонах. Саме в CloudFront було вбудовано виконання логіки на edge-вузлах
за допомогою технології AWS Lambda@Edge, яка дозволяє запускати легкі
функції без серверів на периферії мережі [22]. Ці функції виконують первинну
обробку вхідних даних аналітики, перевіряють структуру події, зчитують
ключові параметри та передають очищені й валідовані дані далі в бекенд-
інфраструктуру.
Після того як дані проходять edge-обробку, вони спрямовуються до
внутрішніх сервісів через надійну та високомасштабовану шину передачі
подій. Для цього було використано Amazon API Gateway у режимі HTTP API,
який забезпечує ефективний та дешевий прийом великої кількості запитів.
Далі API Gateway передає події до Amazon Kinesis Data Stream або Amazon
SQS, що дозволяє вибудувати асинхронний, стійкий до піків механізм збору
аналітики. У разі надзвичайно високого навантаження черги та стріми
поглинають вхідний трафік, не допускаючи втрати даних і не перевантажуючи
основні обчислювальні ресурси.
Основна обробка аналітики реалізована через безсерверні функції AWS
Lambda, які масштабуються автоматично відповідно до обсягу подій, що
надходять зі стрімів. Оброблені дані зберігаються у високопродуктивних
сервісі Amazon DynamoDB, що дозволяє швидко виконувати аналітичні
запити та агрегувати інформацію для подальшого перегляду клієнтами.
Завдяки цьому вдалося створити інфраструктуру, у якій кожен компонент
автоматично реагує на зміну навантаження та підтримує високу доступність
навіть у випадку значного зростання кількості сайтів, що надсилають події.
У цілому реалізація edge-архітектури в AWS дала змогу створити
надзвичайно продуктивну систему збору аналітики, здатну стабільно
працювати під великим навантаженням. Вона поєднує локальну обробку на
edge-вузлах, глобальну розподіленість CloudFront, стійкі канали доставки
даних Кinesis або SQS та автоматичну обробку Lambda-функціями,
63
створюючи єдину інфраструктуру, яку можна масштабувати практично
необмежено зі збереженням високої швидкодії, структура розробленої
системи зображено на на рисунку 3.1.
Рисунок 3.1 – Структура розробленої хмарної системи
64
Edge-вузли, отримуючи аналітичні дані від клієнтських скриптів,
виконують роль першої точки прийому інформації у глобально розподіленій
архітектурі системи. Завдяки своїй близькості до користувачів вони здатні
надзвичайно швидко реагувати на вхідний трафік, мінімізувати затримки та
забезпечувати стабільність роботи навіть за умов різких пікових навантажень.
У момент надходження даних такі вузли одразу активують механізм передачі
інформації в центральну систему обробки. Цей процес повністю
автоматизований і не потребує жодного втручання ззовні, що дозволяє
досягати високої пропускної здатності й уникати накопичення даних на
периферійних серверах.
Передача інформації до основного сервера обробки відбувається через
API Gateway, який забезпечує надійний, безпечний та контрольований вхідний
канал. Сам API Gateway виконує функції маршрутизації, валідації, обмеження
швидкості, захисту від шкідливих запитів та аналітичного моніторингу
трафіку. Такий підхід дозволяє гарантувати, що навіть при масових
одночасних запитах дані будуть доставлені швидко і коректно, а сам сервіс
залишатиметься захищеним від перевантажень або несанкціонованих дій.
Завдяки використаннюHTTPS передача даних від edge-вузлів до центрального
сервісу відбувається у повністю зашифрованому вигляді, що відповідає
сучасним стандартам конфіденційності та безпеки.
Центральний сервер обробки даних побудований на базі Amazon EC2,
що дозволяє забезпечити необхідний рівень продуктивності, гнучкості та
можливість масштабування під тиском високих навантажень. Вибір Java як
мови програмування для цього компонента зумовлений її стабільністю,
здатністю ефективно обробляти паралельні запити та надійністю під час
тривалого безперервного функціонування. Java добре зарекомендувала себе у
високонавантажених сервісах, що дозволило створити серверну частину,
здатну приймати великі обсяги аналітичних даних, оперативно їх обробляти
та передавати далі в систему зберігання чи аналітичні модулі.
65
Інтеграція edge-вузлів, API Gateway та EC2-сервера, реалізованого на
Java, створює цілісну архітектуру, оптимізовану для роботи у
високонавантажених умовах. Вона забезпечує мінімальні затримки, високу
відмовостійкість, надійність передачі інформації та можливість динамічного
масштабування в залежності від інтенсивності трафіку. Це робить систему
придатною для збору та обробки аналітики від широкої мережі сайтів із
потенційно величезною кількістю користувачів.
Система зберігає отримані дані у базі даних DynamoDB, оскільки саме
цей сервіс надає оптимальні можливості для роботи в умовах високих
навантажень та динамічно зростаючих обсягів інформації. На відміну від
класичних реляційних рішень, які вимагають складного налаштування
масштабування та мають природні обмеження по вертикальному росту,
DynamoDB побудована як повністю керована NoSQL-база з внутрішньою
горизонтальною масштабованістю. Це означає, що система здатна обробляти
величезну кількість запитів на запис без деградації продуктивності, адже
Amazon автоматично розподіляє навантаження між партиціями таблиці. Саме
ця особливість робить її особливо ефективною для аналітичних систем, що
збирають великий потік подій у режимі реального часу.
Важливою перевагою DynamoDB є її здатність забезпечувати стабільно
низьку затримку доступу незалежно від кількості запитів. Навіть за умов
різких піків трафіку база зберігає прогнозований час відповіді, що критично
для системи, де події надходять із сотень чи тисяч вебсайтів одночасно.
Використання автоматичного масштабування дозволяє уникнути потреби
постійно моніторити продуктивність і вручну додавати ресурси, оскільки
DynamoDB самостійно збільшує або зменшує пропускну здатність у відповідь
на реальне навантаження. Це дає змогу гарантувати стабільність, навіть коли
кількість користувацьких подій різко зростає.
Ще важливим аргументом є швидкість роботи з даними у форматі ключ-
значення, який ідеально підходить для простих структурованих записів подій,
66
що містять часові мітки, тип події, джерело та додаткову інформацію. Завдяки
цьому DynamoDB може миттєво записувати величезний потік даних без
необхідності складних транзакцій чи обробки реляційних зв’язків. У
поєднанні з високою доступністю, розподіленістю між зонами доступності та
повною відсутністю потреби в адмініструванні, цей сервіс стає найкращим
варіантом для зберігання даних у високонавантажених аналітичних системах.
Саме тому вибір DynamoDB є логічним і технічно обґрунтованим рішенням.
Вона дозволяє гарантувати максимальну швидкість запису, забезпечує
стійкість до пікових навантажень та надає інфраструктуру, яка легко
адаптується під масштаб системи без будь-яких затримок чи ризику втрати
продуктивності. Це робить її ідеальним ядром платформи для збору та
зберігання аналітики користувацької поведінки.
Портал адміністратора, який є завершальним елементом розробленої
системи збору та аналізу користувацької активності, створено таким чином,
щоб забезпечити швидкий доступ до ключових метрик та зручну взаємодію з
даними без зайвих технологічних ускладнень. Основним принципом при його
проєктуванні стало прагнення до простоти, легкості та мінімального
споживання ресурсів, що дозволило уникнути надмірної залежності від
важких або комплексних фронтенд-фреймворків. Замість цього інтерфейс
побудований на базових вебтехнологіях, які забезпечують високу
продуктивність, швидку завантажуваність та максимальну сумісність із
широким спектром браузерів.
Використання легковагового підходу дозволило сфокусуватися на
функціональності, а не на складній клієнтській логіці. Портал відображає
агреговану статистику та результати аналізу даних, що надходять із серверної
частини системи, включаючи інформацію про кількість відвідувачів, їхню
поведінкову активність, взаємодію з елементами інтерфейсу та інші
параметри, які обробляються в режимі, максимально наближеному до
реального часу. Такий підхід зменшує накладні витрати на рендеринг,
67
забезпечуючи плавність роботи та стабільність відображення навіть при
великому обсязі даних.
Рішення створити портал без складних фреймворків позитивно
вплинуло і на підтримку проєкту. Структура коду залишається прозорою та
легкою для модифікації, що дозволяє швидко додавати нові функції або
адаптувати інтерфейс під потреби адміністратора. Крім того, така архітектура
сприяє підвищенню надійності та зменшує ризики, пов’язані з оновленням
бібліотек чи зміною їхньої сумісності. У результаті адміністратор отримує
простий, інтуїтивний і водночас ефективний інструмент для перегляду й
аналізу зібраної системою аналітики.
3.2 Опис функцій системи
У рамках даної кваліфікаційної роботи було розроблено систему збору
аналітики відвідувань і поведінки користувачів на вебсайтах, орієнтовану на
високу масштабованість і роботу з великим навантаженням. Основною метою
системи є надання власникам вебпорталів та адміністраторам детальної
інформації про активність користувачів, що дозволяє оцінювати ефективність
контенту, визначати популярні елементи сайту, відстежувати шляхи
користувачів та оптимізувати взаємодію з ресурсом. Такий підхід дозволяє
отримувати повну картину використання вебсайту, навіть якщо він обслуговує
тисячі або сотні тисяч відвідувачів одночасно.
Для того щоб система могла збирати дані з вебпорталу, вебмайстру, який
відповідає за адміністрування сайту, необхідно інтегрувати спеціальний
JavaScript скрипт. Цей скрипт є легким і не впливає на продуктивність сайту,
він автоматично завантажується при відкритті сторінки і починає збирати
інформацію про дії користувача. Інтеграція здійснюється просто: код скрипту
вставляється в заголовок або футер сторінок, після чого він працює автономно,
без потреби внесення змін до основного контенту сайту. Завдяки такому
68
підходу вебмайстри можуть швидко підключити систему аналітики на будь-
який сайт і почати збір даних без додаткових технічних складнощів.
Коли вебмайстер інтегрує скрипт на свій портал, важливим елементом
є наявність унікального ідентифікатора, який видається адміністратором
системи під час налаштування нового вебсайту. Цей ідентифікатор слугує
своєрідним ключем, завдяки якому система розуміє, для якого саме
вебпорталу фіксується аналітика. Кожна подія користувача, будь то перегляд
сторінки, клік, заповнення форми або прокрутка, супроводжується цим
унікальним ідентифікатором і надсилається на сервер, де вона зіставляється з
відповідним вебсайтом. Таким чином забезпечується точне відокремлення
даних, коли система обслуговує одночасно кілька ресурсів, що особливо
важливо для високонавантажених платформ.
Крім того, скрипт розроблений з механізмом захисту від використання
поза дозволеним доменом. Це означає, що скрипт можна застосовувати тільки
на тому вебпорталі, для якого адміністратор видав ключ. Якщо скрипт буде
спробувати працювати на іншому домені, система не прийме дані, що
надходять, і вони не будуть оброблені. Такий підхід гарантує безпеку та
точність збору аналітики, запобігає випадковому або навмисному
використанню скрипта на сторонніх сайтах і дозволяє точно контролювати,
який вебпортал генерує дані для системи. Це особливо важливо для клієнтів,
які обслуговують кілька вебсайтів і хочуть отримувати окрему аналітику для
кожного ресурсу, не змішуючи статистику між проектами.
Процес збору даних починається з фіксації унікальних відвідувачів.
Коли користувач вперше заходить на сайт, скрипт створює унікальний
ідентифікатор сесії, який дозволяє відстежувати його подальшу активність на
сайті. Система застосовує поєднання різних методів для визначення
унікальності користувача: використання cookie, локального сховища браузера,
а також інформації про IP-адресу та тип пристрою. Це дозволяє системі не
тільки підраховувати загальну кількість відвідувань, а й виділяти унікальних
69
користувачів, визначати, хто повертається на сайт, і аналізувати частоту
повторних візитів. Таким чином формується база даних про поведінку
кожного користувача, що є фундаментом для подальшого аналізу.
Після ідентифікації користувача система починає фіксувати його дії на
вебпорталі. Скрипт відстежує різні типи взаємодій, серед яких перегляди
сторінок, кліки по посиланнях, натискання кнопок, заповнення форм,
прокрутка сторінок та інші інтерактивні дії. Кожна взаємодія користувача
формує подію з часовою міткою, інформацією про контекст, тип пристрою,
розмір екрана, браузер та географічне розташування. Такий підхід дозволяє не
лише підраховувати кількість дій, а й аналізувати поведінкові патерни,
виявляти, які елементи сайту користувачі взаємодіють найчастіше, і знаходити
вузькі місця в навігації або структуруванні контенту.
Особливо важливим аспектом системи є реєстрація послідовності дій
користувача під час сесії. Це дозволяє відстежувати шляхи користувачів по
сайту, виявляти сторінки, на яких вони проводять найбільше часу, а також ті,
де відбуваються виходи. Система фіксує також час перебування на сторінці та
кількість переглядів окремих елементів, що дозволяє будувати деталізовані
карти взаємодій. Завдяки цьому адміністратор може оцінити, наскільки
ефективно розташовані кнопки, меню та інші інтерактивні елементи, а також
визначити, які сторінки потребують оптимізації.
Передача зібраних даних від вебпорталу до системи відбувається
автоматично через захищений канал зв’язку. Використання HTTPS забезпечує
надійне шифрування інформації, що гарантує конфіденційність даних
користувачів і захист від стороннього втручання. Кожна подія, зафіксована на
сайті, миттєво передається на edge вузли системи, де здійснюється первинна
обробка та підготовка до передачі на центральний сервер. Такий підхід
дозволяє розподілити навантаження, зменшити затримки у зборі інформації і
забезпечити безперебійну роботу системи навіть під час пікових навантажень.
70
Зібрані дані зберігаються у базі даних, яка забезпечує високу швидкість
запису і швидкий доступ до інформації для подальшого аналізу. Використання
сучасної NoSQL бази дозволяє обробляти великі потоки подій одночасно і
забезпечує масштабованість системи без необхідності складної оптимізації.
Кожна подія зберігається з усіма метаданими, що дозволяє проводити аналіз
як на рівні окремих користувачів, так і на рівні агрегованої статистики. Це
дозволяє отримувати точну інформацію про кількість відвідувань, унікальних
користувачів та їх взаємодію з вебпорталом у режимі реального часу.
Адміністратор системи отримує доступ до результатів через спеціальний
портал. Портал забезпечує можливість перегляду аналітики по всіх
підключених сайтах, окремими сторінками або типами дій користувачів. На
порталі можна бачити загальну кількість відвідувань, унікальних відвідувачів,
середню тривалість сесії, популярні сторінки та елементи, а також деталізовані
карти поведінки користувачів. Інтерфейс порталу розроблений максимально
просто і зрозуміло, без використання складних фреймворків, що забезпечує
швидкий доступ до даних та мінімальні затримки при відображенні
статистики. Адміністратор може оперативно приймати рішення на основі
отриманих даних, наприклад, оптимізувати контент або покращувати
взаємодію користувачів з сайтом. Інтерфейс порталу зображено на
рисунку 3.2.
Важливою частиною розробленої системи є механізм авторизації
адміністратора, оскільки доступ до даних веб-аналітики повинен бути
захищеним і доступним лише для уповноважених користувачів. У рамках
даної кваліфікаційної роботи авторизація адміністратора організована таким
чином, щоб забезпечити високий рівень безпеки та простоту використання.
При вході на портал адміністратора користувачеві необхідно пройти
процедуру автентифікації, що включає введення унікального логіна та пароля.
Ці облікові дані зберігаються у зашифрованому вигляді, що запобігає їх
несанкціонованому використанню або викраденню.
71
Рисунок 3.2 – Інтерфейс порталу адміністратора
Крім базової перевірки логіна і пароля, система може використовувати
додаткові рівні безпеки, наприклад, двофакторну автентифікацію. Це означає,
що після введення облікових даних адміністратор отримує одноразовий код
на електронну пошту або мобільний пристрій, який потрібно ввести для
завершення входу. Такий підхід значно підвищує безпеку системи, оскільки
навіть у випадку компрометації пароля стороння особа не зможе отримати
доступ до порталу без додаткового коду.
Після успішної авторизації адміністратора система надає доступ лише
до тих функцій порталу, які відповідають його рівню прав. Наприклад,
адміністратор може переглядати аналітичні дані, фільтрувати їх за певними
параметрами, формувати звіти та аналізувати поведінку користувачів, але не
має можливості змінювати критичні налаштування ядра системи або
отримувати доступ до серверної інфраструктури. Такий підхід гарантує, що
конфіденційна інформація та ресурси системи захищені від несанкціонованого
втручання. Система авторизації зображена на рисунку 3.2.
72
Рисунок 3.2 – Система авторизації
Система авторизації адміністратора також передбачає можливість
відстеження спроб входу, ведення журналу доступів і блокування облікових
записів у разі підозрілої активності. Це дозволяє оперативно реагувати на
потенційні загрози безпеці та забезпечує прозорість у використанні системи.
Крім того, портал адміністратора зберігає сеанси користувачів у захищеному
вигляді, що забезпечує стабільну роботу навіть при одночасному доступі
кількох уповноважених адміністраторів.
Таким чином, розроблена система забезпечує комплексний підхід до
збору та аналізу веб-аналітики. Вона поєднує автоматизований збір даних
через інтегрований скрипт, точне визначення унікальних відвідувачів,
детальне відстеження дій користувачів і надійну передачу даних через
захищений канал. Усі події зберігаються у швидкій базі даних, що дозволяє
масштабувати систему на велику кількість вебпорталів. Адміністратор
отримує повну картину взаємодії користувачів через простий у використанні
портал, що робить систему ефективним інструментом для оцінки
73
відвідуваності, поведінки користувачів та оптимізації контенту на сайтах
будь-якої складності.
Розроблена архітектура забезпечує високу масштабованість і стійкість
до навантажень, що дозволяє системі працювати стабільно навіть при великій
кількості вебресурсів і значному обсязі даних. Завдяки детальному
відстеженню сесій і подій, адміністратор може проводити аналітику як на рівні
окремих користувачів, так і на рівні загальної статистики, що дає змогу
приймати обґрунтовані рішення щодо покращення роботи вебпорталу та
підвищення залученості користувачів.
3.3 Технічні вимоги для роботи з системою
Забезпечення захисту інформації є одним із ключових аспектів при
розробці та експлуатації системи збору аналітики відвідувань і поведінки
користувачів на вебсайтах. Високий рівень безпеки гарантує не лише
конфіденційність даних користувачів, а й стабільність та надійність роботи
всієї системи, особливо коли мова йде про високонавантажені платформи, що
обслуговують одночасно сотні тисяч або мільйони користувачів. Захист
інформації охоплює всі етапи обробки даних: від збору на вебпорталі до
зберігання, обробки та відображення на порталі адміністратора.
Першим рівнем захисту є безпечний збір даних на стороні вебпорталу.
Для цього розроблений JavaScript скрипт інтегрується на сторінки сайту і
передає інформацію про дії користувачів у систему через зашифрований канал
зв’язку. Використання протоколу HTTPS гарантує, що всі дані передаються у
зашифрованому вигляді, що запобігає їх перехопленню сторонніми особами
під час передачі. Кожен запит, що відправляється з вебпорталу,
супроводжується унікальним ідентифікатором, який визначає конкретний
сайт, на якому фіксується аналітика. Цей механізм запобігає можливості
74
отримання або змішування даних з інших ресурсів і гарантує точне визначення
джерела інформації.
Другим важливим аспектом є контроль доступу до системи та даних.
Всі адміністратори, які працюють з порталом, повинні проходити процедуру
авторизації. Система передбачає використання унікальних логінів та паролів,
які зберігаються у зашифрованому вигляді і захищаються від
несанкціонованого доступу. Крім базової перевірки облікових даних, може
застосовуватися двофакторна автентифікація, яка передбачає введення
одноразового коду, отриманого на електронну пошту або мобільний пристрій.
Такий рівень безпеки значно знижує ризик компрометації облікового запису
адміністратора і забезпечує надійний контроль доступу до конфіденційної
інформації.
Додатково система контролює права доступу адміністратора. Кожен
користувач отримує лише ті функції порталу, які відповідають його рівню
прав. Наприклад, адміністратор може переглядати аналітику, формувати звіти
та аналізувати поведінку користувачів, але не має доступу до конфігурацій
ядра системи або до серверної інфраструктури. Такий підхід дозволяє знизити
ризик випадкових або навмисних змін у роботі системи, забезпечуючи безпеку
на рівні управління.
Для захисту зібраних даних від втрати або несанкціонованого доступу
система використовує механізми шифрування і контроль цілісності. Дані
користувачів, що надходять на сервери, зберігаються у базі даних у форматі,
що забезпечує швидкий доступ і одночасно високий рівень захисту.
Використання спеціальних алгоритмів шифрування дозволяє гарантувати, що
навіть у разі компрометації сервера стороння особа не зможе отримати
читабельну інформацію без відповідного ключа. Крім того, система веде
журнал усіх дій з даними, включаючи створення, модифікацію та перегляд,
що дозволяє відстежувати будь-які спроби несанкціонованого доступу.
75
Важливим елементом захисту є контроль дій скрипта на стороні
вебпорталу. Кожен JavaScript код прив’язаний до унікального ідентифікатора
та дозволений до використання лише на конкретному домені. Це запобігає
можливості викрадення або несанкціонованого використання скрипта на
сторонніх сайтах. Якщо скрипт спробує працювати на іншому домені, система
відхиляє отримані дані, тим самим захищаючи інформацію від потенційних
витоків.
Для запобігання втратам даних та забезпечення безперебійної роботи
системи використовуються додаткові резервні механізми. Дані
розподіляються між edge вузлами і сервером обробки, що дозволяє зменшити
ризик простоїв навіть у разі часткової відмови компонентів інфраструктури.
Всі події фіксуються у базі даних у реальному часі, що забезпечує надійне
зберігання і можливість оперативного відновлення інформації при виникненні
технічних проблем.
Система також передбачає аудит і моніторинг активності користувачів
і адміністраторів. Всі спроби доступу до порталу та дії з даними реєструються
і можуть бути перевірені у будь-який момент. Такий підхід дозволяє
оперативно виявляти підозрілу активність, реагувати на потенційні загрози і
підтримувати високий рівень безпеки. Моніторинг включає контроль частоти
запитів, перевірку автентичності сесій і аналіз дій, що дозволяє виявляти
аномальні поведінкові патерни і запобігати зловживанням.
Особливо важливою є безпека доступу до порталу адміністратора з боку
мережі. Система використовує захищені протоколи зв’язку і шифрування
даних, що передаються, а також обмежує доступ за IP-адресами або
додатковими механізмами фільтрації. Це дозволяє запобігти
несанкціонованому доступу з зовнішніх джерел і гарантує, що адміністратори
отримують дані лише у захищеному середовищі.
Система забезпечує багаторівневий захист інформації, починаючи з
безпечного збору даних на вебпорталі, захищеної передачі, шифрування та
76
надійного зберігання на сервері, контролю прав доступу адміністратора і
моніторингу активності. Такий підхід дозволяє гарантувати конфіденційність,
цілісність і доступність даних, а також створює надійне середовище для
роботи з високонавантаженими системами збору веб-аналітики. Кожен
компонент системи взаємодіє з іншими таким чином, щоб забезпечити
максимальний рівень безпеки без шкоди для продуктивності або швидкості
обробки даних, що є критично важливим для високонавантажених платформ,
які обслуговують велику кількість користувачів одночасно.
3.4 Оцінка ефективності
Оцінка ефективності розробленої системи збору аналітики вебпорталів
та обраної інфраструктури є ключовим етапом при аналізі її функціональних
і технічних характеристик. Створена система спроектована з урахуванням
високого навантаження і передбачає використання хмарної інфраструктури з
edge вузлами, що дозволяє забезпечити швидку обробку даних,
масштабованість та надійність. Для порівняння ефективності доцільно
розглянути стандартні архітектури, які зазвичай застосовуються у
вебсистемах: монолітні і класичні мікросервісні.
Монолітні архітектури характеризуються тим, що всі компоненти
системи інтегровані в єдине програмне середовище. Такий підхід є простим у
розробці і дозволяє швидко розгортати базову версію продукту. Однак у
високонавантажених системах моноліт має серйозні обмеження. По-перше,
збільшення навантаження на будь-який компонент потребує масштабування
всієї системи, що призводить до значних витрат ресурсів. По-друге, відмови
окремих частин системи можуть призвести до повного простою всього
додатку, що неприпустимо для систем, які збирають аналітику з сотень або
тисяч вебпорталів одночасно. Нарешті, монолітні рішення мають обмежену
гнучкість у підтримці нових функцій, оскільки будь-яке внесення змін може
77
вплинути на інші компоненти, підвищуючи ризик помилок і необхідність
комплексного тестування.
Класичні мікросервісні архітектури вже дозволяють вирішити деякі
обмеження монолітних систем. Кожен сервіс у мікросервісній архітектурі
відповідає за окрему функціональну частину системи і може масштабуватися
незалежно від інших. Це значно підвищує гнучкість і дозволяє ефективніше
використовувати ресурси при пікових навантаженнях. Проте класичні
мікросервіси мають свої виклики, особливо у високонавантажених сценаріях.
Масштабування сервісів часто потребує складної конфігурації оркестрації,
високої експертизи в адмініструванні контейнерів та управлінні мережею
сервісів. Крім того, висока кількість комунікацій між сервісами може
збільшувати затримки і ускладнювати моніторинг та забезпечення безпеки.
Розроблена система на основі хмарної інфраструктури з edge вузлами
поєднує переваги мікросервісної гнучкості та розподіленої обробки даних.
Edge вузли виконують первинну обробку подій безпосередньо на стороні
вебпорталу або максимально близько до користувача. Це дозволяє зменшити
затримки передачі даних і значно знизити навантаження на центральний
сервер обробки даних. Такий підхід забезпечує ефективну масштабованість,
оскільки для обробки збільшеного потоку подій достатньо додати нові edge
вузли, не впливаючи на основну систему. У монолітних та класичних
мікросервісних архітектурах подібний ефект досягається значно складніше і з
більшою витратою ресурсів.
Хмарна інфраструктура, обрана для реалізації системи, також надає
переваги у забезпеченні високої доступності та відмовостійкості. Автоматичне
балансування навантаження і можливість географічного розподілу обробки
даних гарантують, що навіть у випадку відмови окремого вузла система
продовжує працювати без втрати подій. У класичних мікросервісних системах
для досягнення аналогічного рівня стійкості потрібна складна конфігурація
78
кластерів і оркестраторів, а у монолітах - масштабування всього додатку, що
часто економічно невиправдано і технічно складно.
Ще одним критерієм ефективності є швидкість обробки великих обсягів
даних. У розробленій системі події користувачів обробляються на edge вузлах
у реальному часі і надсилаються на сервер через API Gateway, що дозволяє
фіксувати величезну кількість подій без затримок. Центральний сервер,
реалізований на EC2 і написаний на Java, обробляє ці дані та зберігає у базі
DynamoDB, що забезпечує високу швидкість запису та масштабування. У
класичних мікросервісних архітектурах подібна обробка потребує ретельного
планування черг, балансування потоків і часто використання додаткових
інструментів для оптимізації пропускної здатності, тоді як у монолітах
масштабування таких обсягів подій практично неможливе без значних витрат.
Безпека та контроль доступу також підвищують ефективність
розробленої системи. Завдяки хмарній інфраструктурі можна реалізувати
централізовану авторизацію та шифрування даних на всіх рівнях: від збору на
вебпорталі до зберігання у базі даних і відображення на порталі
адміністратора. Це забезпечує надійний захист даних користувачів і дозволяє
оперативно контролювати доступ до конфіденційної інформації. У класичних
мікросервісах контроль доступу та шифрування часто реалізуються на рівні
окремих сервісів і можуть бути непослідовними, тоді як у монолітних
системах масштабування таких механізмів без втрати продуктивності значно
складніше.
Оцінка ефективності розробленої системи порівняно з монолітними та
класичними мікросервісними архітектурами показує ряд значних переваг.
Використання хмарної інфраструктури з edge вузлами забезпечує
масштабованість, швидку обробку даних, високу відмовостійкість і безпеку.
У порівнянні з монолітами система значно гнучкіша і стійкіша до
навантажень, а у порівнянні з класичними мікросервісами ‒ простіша у
79
розгортанні, ефективніша у балансуванні потоків і менш вимоглива до
технічної підтримки.
Розроблена архітектура дозволяє обробляти великі обсяги аналітичних
даних у реальному часі, зберігаючи їх цілісність і забезпечуючи швидкий
доступ для адміністратора. Це досягається завдяки розподіленій обробці на
edge вузлах, високопродуктивному серверу обробки на EC2 та базі даних
DynamoDB, що поєднує масштабованість і швидкість. Завдяки такому
поєднанню технологій розроблена система значно перевершує класичні
монолітні рішення за швидкістю і гнучкістю та ефективно конкурує з
мікросервісними підходами, пропонуючи простоту управління та зменшення
витрат на підтримку високонавантаженої інфраструктури.
Отже, проведена оцінка демонструє, що обрана хмарна архітектура з
використанням edge вузлів та розподіленої обробки даних є ефективним,
надійним і масштабованим рішенням для високонавантажених систем збору
веб-аналітики. Вона поєднує переваги мікросервісів у плані гнучкості та
масштабованості з простотою управління та високою продуктивністю, що
робить її оптимальним вибором для сучасних вебсистем з великими потоками
користувацьких даних.
3.5 Висновки до розділу 3
У результаті проведеної розробки та аналізу було створено
високонавантажену систему збору веб-аналітики, яка здатна ефективно
обробляти великі обсяги даних у режимі реального часу. Основним
досягненням стало поєднання хмарної інфраструктури з edge-архітектурою,
що дозволяє мінімізувати затримки, рівномірно розподіляти навантаження та
забезпечувати високу відмовостійкість системи.
Розроблена архітектура забезпечує масштабованість на всіх рівнях: від
edge-вузлів, що приймають та обробляють дані максимально близько до
80
користувача, до центральних сервісів обробки та бази даних DynamoDB,
оптимізованої для швидкого запису та доступу при пікових навантаженнях.
Використання серверless-функцій AWS Lambda та асинхронних черг
повідомлень Kinesis і SQS дозволяє автоматично адаптувати систему до
змінного трафіку без ризику втрати даних.
Функціональні можливості системи включають автоматизований збір
подій від користувачів, визначення унікальних відвідувачів, реєстрацію
послідовності дій під час сесій, а також зберігання та обробку даних у
безпечному середовищі. Портал адміністратора надає інтуїтивний доступ до
аналітики, дозволяючи оцінювати поведінку користувачів, формувати звіти та
приймати обґрунтовані рішення щодо оптимізації вебресурсів.
Особливу увагу приділено захисту інформації на всіх етапах обробки:
від шифрування переданих даних через HTTPS, обмеження використання
скриптів на сторонніх доменах, до контролю доступу адміністраторів та
застосування механізмів двофакторної автентифікації. Це забезпечує
конфіденційність, цілісність та безпеку даних користувачів.
Розроблена система є ефективним інструментом збору та аналізу веб-
аналітики, здатною забезпечувати стабільну роботу навіть за умов високих
навантажень і значного росту користувацької аудиторії. Вона поєднує високу
продуктивність, масштабованість, безпеку та зручність у використанні, що
робить її придатною для впровадження в будь-яких сучасних вебпроєктах.
81
РОЗДІЛ 4 ЗАХИСТ ВИСОКОНАВАНТАЖЕНОЇ СИСТЕМИ
4.1 Огляд існуючих рішень
Захист інформації при використанні хмарної архітектури AWS є
критично важливим аспектом для забезпечення конфіденційності, цілісності
та доступності даних у хмарному середовищі. AWS (Amazon Web Services)
надає широкий спектр інструментів, сервісів та практик, які дозволяють
реалізувати комплексний підхід до безпеки даних.
Автентифікація та управління доступом є ключовими елементами
захисту. У AWS використовується сервіс IAM (Identity and Access
Management), який дозволяє створювати користувачів, групи та ролі з чітко
визначеними правами доступу. За допомогою політик IAM можна задавати
мінімально необхідні права для виконання конкретних операцій, що реалізує
принцип найменших привілеїв. Крім того, підтримується багатофакторна
автентифікація (MFA), яка додає додатковий рівень захисту при вході до
облікового запису.
Важливим аспектом є шифрування даних. AWS дозволяє шифрувати
дані як у спокої, так і при передачі. Для збереження даних у спокої
використовуються сервіси, такі як Amazon S3, EBS або RDS, які підтримують
шифрування за допомогою ключів KMS (Key Management Service).
Шифрування даних під час передачі здійснюється через протоколи SSL/TLS,
що забезпечує захист від перехоплення інформації в мережі. Використання
власних або керованих ключів дозволяє організаціям контролювати процес
шифрування та доступ до даних [23].
Моніторинг і аудит є ще одним важливим компонентом безпеки. AWS
надає сервіси CloudTrail та CloudWatch, які дозволяють відстежувати всі дії
користувачів та змін у системі, отримувати сповіщення про підозрілі
82
активності та здійснювати аудит безпеки. Логи можна зберігати у
зашифрованому вигляді, що забезпечує їх цілісність та доступність для
перевірок.
Безпека мережі в хмарній архітектурі реалізується через використання
віртуальних приватних мереж (VPC), мережевих ACL, груп безпеки (Security
Groups) та інших механізмів ізоляції трафіку. Це дозволяє контролювати
доступ до ресурсів, обмежувати з’єднання за IP-адресами та протоколами, а
також захищати внутрішні сервіси від зовнішніх атак. Крім того, для захисту
від DDoS-атак використовується сервіс AWS Shield, а для веб-додатків -AWS
WAF (Web Application Firewall) [24].
Також важливою складовою є управління конфігураціями та політиками
безпеки. AWS Config дозволяє відстежувати відповідність ресурсів обраним
стандартам безпеки, а автоматизовані сервіси забезпечують швидке виявлення
та виправлення потенційних вразливостей. Організації можуть реалізовувати
політики резервного копіювання та відновлення даних, що підвищує стійкість
до втрати інформації.
Для забезпечення додаткового рівня захисту AWS надає інструменти
для управління ключами, сертифікатами та доступом до API, включаючи
інтеграцію з зовнішніми службами управління ідентифікацією. Це дозволяє
організаціям реалізовувати комплексний підхід до безпеки, включно з
контролем за доступом до обчислювальних ресурсів, баз даних та сховищ.
Захист інформації при використанні хмарної архітектури AWS
ґрунтується на багаторівневому підході, який включає автентифікацію,
контроль доступу, шифрування, моніторинг, захист мережі та управління
конфігураціями. Правильна комбінація цих механізмів забезпечує високий
рівень безпеки та відповідність сучасним стандартам захисту даних у хмарних
середовищах.
Захист інформації при роботі з будь-якою інформаційною системою є
критично важливою складовою її надійності та безпеки. Він забезпечує
83
конфіденційність, цілісність і доступність даних, а також запобігає
несанкціонованому доступу до системи. Одними з основних механізмів
захисту є авторизація та автентифікація, які дозволяють визначити права
користувачів і підтвердити їхню особу.
Авторизація в системі є процесом визначення прав користувача після
того, як його особа була встановлена. Вона регулює, які ресурси та функції
системи можуть бути доступні конкретному користувачу. Авторизація
реалізується через рольову модель доступу (RBAC), де користувачам
присвоюються певні ролі, і кожна роль має набір дозволів. Наприклад,
адміністратор системи може мати доступ до всіх функцій та даних, тоді як
звичайний користувач обмежується лише своїми особистими даними та
певними операціями. Такий підхід дозволяє централізовано керувати
доступом і мінімізує ризик несанкціонованих дій.
Одним із важливих аспектів авторизації є принцип найменших
привілеїв, який передбачає надання користувачу лише тих прав, які необхідні
для виконання його завдань. Це значно знижує ймовірність випадкових або
умисних порушень безпеки. Крім того, авторизація може здійснюватися на
рівні окремих ресурсів, об’єктів чи функцій системи, що дозволяє більш
гнучко налаштовувати доступ. Системи часто підтримують політики, що
визначають умови доступу, наприклад, часові обмеження, доступ із певних
IP-адрес або з певних географічних регіонів.
Автентифікація є процесом підтвердження особи користувача. Вона
дозволяє системі переконатися, що користувач, який намагається отримати
доступ, дійсно є тим, за кого він себе видає. Традиційною формою
автентифікації є використання логіна та пароля. Проте сучасні системи
застосовують більш складні методи для підвищення безпеки. До них належать
багатофакторна автентифікація (MFA), біометричні методи, токени,
сертифікати та одноразові паролі. MFA значно знижує ризик компрометації
облікових записів, оскільки для успішного доступу необхідно поєднати
84
декілька факторів: щось, що користувач знає (пароль), щось, що він має (токен
або мобільний пристрій), або щось, що він є (відбиток пальця, розпізнавання
обличчя).
Захист інформації також включає управління сесіями користувачів.
Після автентифікації система створює сесію, яка ідентифікує користувача
протягом взаємодії з системою. Для підвищення безпеки застосовуються
механізми автоматичного завершення сесій після певного періоду
бездіяльності, обмеження одночасних сесій для одного користувача, а також
шифрування токенів сесій, щоб уникнути їхнього перехоплення.
Інтеграція сучасних протоколів автентифікації та авторизації, таких як
OAuth, OpenID Connect або SAML, дозволяє реалізувати єдину точку входу та
централізоване управління доступом у розподілених системах [24]. Це
особливо важливо для корпоративних середовищ, де користувачі працюють із
різними додатками, але повинні мати контрольований доступ на основі однієї
аутентифікації.
Для захисту інформації важливим елементом є ведення журналів та
аудит. Кожна спроба входу, зміна прав доступу або спроба виконати
заборонену операцію повинні фіксуватися у системі. Це дозволяє не тільки
відстежувати дії користувачів, а й виявляти потенційні загрози та реагувати
на інциденти безпеки. Логи зберігаються у захищеному вигляді, щоб запобігти
їхньому фальсифікуванню або видаленню.
Шифрування даних є додатковим рівнем захисту. Дані користувачів та
облікові записи зберігаються у зашифрованому вигляді, що унеможливлює
їхнє несанкціоноване використання навіть у випадку компрометації системи.
Для передавання інформації між користувачем та системою обов’язковим є
використання захищених протоколів, таких як HTTPS, що забезпечує
цілісність та конфіденційність даних у мережі.
Захист інформації при роботі з системою включає комплекс заходів, що
охоплюють автентифікацію, авторизацію, управління сесіями, шифрування,
85
аудит і контроль доступу. Використання цих механізмів дозволяє знизити
ризик несанкціонованого доступу, забезпечити конфіденційність і цілісність
даних та гарантувати стабільну і безпечну роботу системи.
Захист інформації при збереженні даних у базі даних є однією з
ключових задач сучасних інформаційних систем. Бази даних містять критично
важливу інформацію, включаючи особисті дані користувачів, фінансові та
комерційні дані, медичну інформацію та інші ресурси, які потребують
належного захисту. Порушення цілісності, конфіденційності або доступності
цих даних може призвести до значних фінансових втрат, шкоди репутації
організації або навіть до юридичних наслідків. Тому захист інформації на рівні
бази даних включає комплекс методів та технологій, які гарантують безпеку
даних як під час їх зберігання, так і при доступі.
Одним із основних напрямків захисту є контроль доступу до бази даних.
Контроль доступу передбачає визначення, які користувачі або системи можуть
отримувати доступ до конкретних даних, а також які дії вони можуть
виконувати. Для цього застосовуються різні моделі доступу.
Найпоширенішою є рольова модель доступу (RBAC), де користувачам
призначаються ролі, а ролі містять набір дозволених операцій над даними. Це
дозволяє централізовано керувати доступом та швидко змінювати права при
зміні обов’язків користувачів. Крім того, використовується модель на основі
атрибутів (ABAC), де доступ визначається на основі властивостей
користувача, ресурсу та контексту запиту. Такий підхід дозволяє реалізувати
більш гнучкі політики безпеки, враховуючи умови часу, місцезнаходження
або пристрою користувача.
Не менш важливим є автентифікація користувачів при доступі до бази
даних. Вона забезпечує перевірку особи користувача або системи, що запитує
дані. Традиційно автентифікація здійснюється за допомогою логінів і паролів,
проте сучасні системи застосовують більш складні механізми, включаючи
багатофакторну автентифікацію (MFA), сертифікати X.509, інтеграцію з
86
системами єдиного входу (SSO) та інші криптографічні методи [25]. MFA
забезпечує підвищений рівень безпеки, оскільки для доступу необхідно
одночасно мати декілька факторів, таких як щось відоме користувачу (пароль),
щось фізично наявне (токен або смартфон) або щось, що характеризує
користувача фізіологічно (біометрія).
Шифрування даних є фундаментальним елементом захисту інформації
в базі даних. Воно забезпечує конфіденційність інформації навіть у випадку
компрометації системи. Шифрування може застосовуватися як для даних, що
зберігаються на диску (data at rest), так і для даних, що передаються мережею
(data in transit). Для шифрування даних на рівні зберігання використовуються
алгоритми симетричного шифрування, такі як AES-256, які дозволяють
ефективно захищати великі обсяги інформації. Для передавання даних
застосовуються протоколи TLS/SSL, що забезпечують захищене з’єднання
між клієнтами і сервером бази даних, запобігаючи перехопленню або підміні
даних.
Ще одним важливим аспектом є управління ключами шифрування.
Ключі повинні зберігатися у захищеному вигляді та мати обмежений доступ.
Багато сучасних систем використовують апаратні модулі безпеки (HSM) або
сервіси управління ключами (KMS) для генерації, зберігання та ротації
ключів. Регулярна ротація ключів дозволяє зменшити ризик їх компрометації
та підвищує загальний рівень безпеки системи.
Захист бази даних також включає аудит і моніторинг дій користувачів.
Всі операції, що здійснюються з даними, повинні логуватися у журналах
аудиту. Це дозволяє виявляти спроби несанкціонованого доступу, аналізувати
дії користувачів і реагувати на потенційні загрози. Логи мають зберігатися у
захищеному вигляді, щоб запобігти їх підробці або видаленню. Моніторинг
дозволяє відстежувати підозрілі дії в реальному часі, наприклад, масові спроби
доступу до конфіденційних таблиць або нестандартні запити SQL, що можуть
свідчити про спроби SQL-ін’єкції.
87
SQL-ін’єкції є однією з найпоширеніших загроз для баз даних. Вони
виникають, коли користувач може вставити шкідливий SQL-код у запит, що
виконується базою даних, і таким чином отримати несанкціонований доступ
або змінити дані. Для захисту від SQL-ін’єкцій застосовуються
параметризовані запити, підготовлені інструкції (prepared statements) і ORM
(Object-Relational Mapping) фреймворки, які автоматично екранують дані
користувачів перед виконанням запитів. Крім того, важливо обмежувати права
користувачів, щоб навіть у разі ін’єкції вони не могли виконувати критичні
операції.
Резервне копіювання і відновлення даних також є важливою складовою
захисту. Регулярні бекапи дозволяють відновити інформацію у разі випадкової
або цілеспрямованої втрати даних, пошкодження бази або атак типу
ransomware. Бекапи повинні зберігатися у захищеному вигляді та надійно
шифруватися. Часто використовуються стратегії комбінованого зберігання,
коли частина копій зберігається локально, а частина – у хмарі, що забезпечує
додатковий рівень безпеки та доступність.
Для підвищення безпеки сучасні бази даних підтримують сегментацію і
розмежування даних. Це дозволяє ізолювати критично важливі дані від менш
важливих, обмежуючи доступ лише для тих користувачів і додатків, які дійсно
потребують цієї інформації. Також застосовуються техніки маскування даних,
коли конфіденційна інформація частково приховується або модифікується для
тестових середовищ, щоб уникнути витоку при розробці та тестуванні.
Сучасні системи забезпечують інтеграцію з зовнішніми сервісами
безпеки, такими як SIEM (Security Information and Event Management), для
централізованого збору, аналізу та реагування на події безпеки у базах даних.
Це дозволяє швидко виявляти аномальні операції та підозрілі активності,
автоматизувати реагування на інциденти і забезпечувати відповідність
корпоративним політикам та стандартам безпеки.
88
Також передбачає постійне оновлення системи та застосування патчів
безпеки. Багато вразливостей виникають через застарілі версії баз даних або
програмного забезпечення. Регулярне оновлення забезпечує закриття відомих
дірок безпеки та підтримку сучасних стандартів шифрування і автентифікації.
Захист інформації при збереженні даних у базі даних є комплексним
процесом, що включає автентифікацію, авторизацію, шифрування, аудит,
контроль доступу, моніторинг, захист від SQL-ін’єкцій, резервне копіювання,
сегментацію даних та інтеграцію з системами безпеки. Використання цих
механізмів дозволяє забезпечити конфіденційність, цілісність і доступність
інформації, знизити ризики витоку або втрати даних і гарантувати стабільну
та безпечну роботу інформаційної системи.
Захист інформації при роботі з edge-архітектурами є надзвичайно
актуальним питанням у сучасних розподілених обчислювальних системах.
Edge-архітектура передбачає розподіл обчислювальних ресурсів і зберігання
даних ближче до кінцевих користувачів або пристроїв, що генерує дані,
замість централізованого розміщення у хмарних сервісах. Такий підхід
забезпечує зниження затримок, підвищення швидкості обробки даних та
оптимізацію пропускної здатності мережі, але водночас створює нові виклики
у сфері інформаційної безпеки.
Одним із ключових аспектів захисту в edge-мережах є контроль доступу.
Оскільки дані обробляються на численних розподілених вузлах, необхідно
забезпечити, щоб тільки авторизовані користувачі або пристрої могли
отримувати доступ до ресурсів. Для цього застосовуються як класичні
механізми, такі як рольова модель доступу (RBAC), так і більш гнучкі рішення
на основі атрибутів (ABAC). Важливим є також захист аутентифікації
пристроїв, що підключаються до edge-вузлів, використання цифрових
сертифікатів та багатофакторної аутентифікації для підвищення рівня безпеки.
Шифрування даних є критично важливим компонентом безпеки в edge-
архітектурах. Дані, що обробляються на периферійних вузлах, часто
89
передаються через відкриті або публічні мережі, що підвищує ризик
перехоплення або модифікації інформації. Тому використання симетричного
та асиметричного шифрування, таких як AES та RSA, стає обов’язковим. Крім
того, для передачі даних між edge-вузлами і центральним сервером
застосовуються захищені протоколи, наприклад TLS/SSL або VPN-з’єднання.
Ще одним важливим аспектом є забезпечення цілісності даних.
Оскільки edge-вузли часто працюють у автономному режимі або у складних
мережевих умовах, необхідно впроваджувати механізми перевірки цілісності
інформації. Для цього використовуються хеш-функції, цифрові підписи та
контрольні суми, які дозволяють виявити будь-які спроби несанкціонованої
модифікації даних.
Моніторинг і аудит дій користувачів та пристроїв є додатковим засобом
підвищення безпеки. Edge-архітектури генерують великі обсяги логів та
телеметрії, які дозволяють відстежувати підозрілі активності, виявляти
аномальні запити або несанкціоновані доступи. Центральні системи
управління безпекою, інтегровані з edge-вузлами, забезпечують
централізовану обробку логів та автоматизоване реагування на інциденти.
Захист від атак типу “man-in-the-middle” та спроб підробки вузлів є
також важливим елементом безпеки. Використання сертифікатів,
криптографічних протоколів та взаємної аутентифікації вузлів дозволяє
переконатися у достовірності джерела даних і запобігти несанкціонованому
втручанню. Для додаткового захисту часто застосовуються технології
блокчейну або розподілених реєстрів для верифікації транзакцій та даних між
вузлами.
Резервне копіювання та відновлення даних у edge-мережах також
потребує окремої уваги. Edge-вузли можуть піддаватися фізичним загрозам,
відмовам обладнання або атакам зловмисників, тому критичні дані повинні
регулярно синхронізуватися з центральним сервером або іншими безпечними
90
вузлами мережі. Шифрування резервних копій і контроль доступу до них є
обов’язковими умовами безпеки.
Важливим є сегментація мережі та ізоляція вузлів. Це дозволяє
обмежити наслідки можливого порушення безпеки на окремому вузлі та
запобігти поширенню атаки на всю систему. В edge-мережах часто
застосовуються віртуальні приватні мережі (VLAN), ізольовані контейнери та
мікросервісна архітектура для розмежування обчислювальних та зберігаючих
ресурсів.
Захист edge-архітектур включає і управління життєвим циклом
пристроїв. Всі edge-вузли потребують регулярного оновлення програмного
забезпечення, встановлення патчів безпеки та контролю конфігурацій. Це
дозволяє мінімізувати ризики, пов’язані з відомими вразливостями та
застарілими версіями компонентів системи.
Останнім часом дедалі більше уваги приділяється автоматизації безпеки
у edge-мережах. Використання штучного інтелекту та машинного навчання
дозволяє виявляти аномальні патерни доступу або змін у даних, передбачати
потенційні загрози та автоматично блокувати підозрілі дії. Це особливо
актуально в умовах великої кількості edge-вузлів і високих обсягів даних, коли
ручний моніторинг стає неефективним.
Захист інформації при роботі з edge-архітектурами є комплексним
завданням, яке включає автентифікацію користувачів і пристроїв, контроль
доступу, шифрування даних, забезпечення цілісності, аудит та моніторинг,
резервне копіювання, сегментацію мережі, управління життєвим циклом
вузлів та автоматизацію безпеки. Комплексне застосування цих заходів
дозволяє забезпечити високий рівень захисту інформації, стабільну роботу
розподілених систем та мінімізувати ризики втрати або компрометації даних.
91
4.2 Захист високонавантаженої системи
Реалізація захисту даних у високонавантажених системах збору веб-
аналітики є критично важливим елементом проектування і експлуатації. Дані
користувачів та вебпорталів містять конфіденційну інформацію, включаючи
поведінкові патерни, статистику відвідувань, інформацію про пристрої та
географічне розташування. Тому система повинна гарантувати
конфіденційність, цілісність і доступність даних на всіх етапах їх обробки –
від моменту збору на вебпорталі до збереження у базі даних та відображення
у порталі адміністратора.
Першим рівнем захисту є безпечний збір даних на вебпорталі. Для цього
використовується JavaScript скрипт, який інтегрується на сторінки сайту. Всі
події користувачів, включаючи кліки, прокрутку, перегляд сторінок та
взаємодію з формами, передаються у систему через захищений канал HTTPS.
Використання протоколу HTTPS забезпечує шифрування даних під час
передачі, запобігаючи перехопленню та модифікації інформації сторонніми
особами. Кожен скрипт має унікальний ідентифікатор, виданий
адміністратором, що прив’язує події до конкретного домену і запобігає
обробці даних з неавторизованих ресурсів.
Другим рівнем захисту є контроль доступу до системи та даних. Доступ
адміністратора до порталу забезпечується через процедуру автентифікації з
використанням логіна та пароля, які зберігаються у зашифрованому вигляді.
Для підвищення безпеки застосовується двофакторна автентифікація, яка
передбачає одноразовий код, отриманий на електронну пошту або мобільний
пристрій. Це значно знижує ризик несанкціонованого доступу до
конфіденційних даних, навіть якщо облікові дані були скомпрометовані.
Додатково система забезпечує контроль рівнів доступу. Адміністратори
можуть виконувати лише ті дії, які відповідають їхнім правам: перегляд
аналітики, формування звітів, аналіз поведінки користувачів. Вони не мають
92
доступу до конфігурацій серверів або бази даних, що запобігає випадковим
або навмисним змінам у роботі системи. Такий підхід дозволяє розділяти
адміністративні обов’язки та підвищує безпеку збереження даних.
Для забезпечення цілісності даних використовуються механізми
шифрування та контроль контрольних сум. Всі події, що надходять з
вебпорталів, обробляються на edge вузлах і надсилаються до центрального
сервера через API Gateway. На сервері дані записуються у базу DynamoDB,
яка забезпечує високу швидкість запису та підтримує масштабування без
втрати продуктивності. Для захисту від несанкціонованого доступу до бази
застосовується шифрування даних у стані спокою, що гарантує їхню
недоступність для сторонніх осіб навіть у разі компрометації сервера.
Ще одним важливим аспектом є аудит та моніторинг активності
системи. Всі дії з даними користувачів та адміністратора реєструються у
журналах, що дозволяє відстежувати спроби несанкціонованого доступу або
підозрілу активність. Ці журнали можуть включати час доступу, IP-адресу,
тип дії та змінені дані. Такий аудит дозволяє оперативно реагувати на загрози
і забезпечує прозорість у використанні системи.
Важливою частиною реалізації захисту є забезпечення відмовостійкості
та резервування даних. Edge вузли забезпечують первинну обробку подій та
тимчасове збереження даних у разі тимчасової недоступності центрального
сервера. У базі даних DynamoDB реалізовано автоматичне резервне
копіювання та розподіл даних між регіонами, що гарантує відновлення
інформації навіть у разі технічних збоїв або аварійних ситуацій. Це дозволяє
забезпечити безперервну роботу системи та захист від втрати важливих
аналітичних даних.
Крім цього, реалізація захисту передбачає обмеження використання
скрипта на конкретному домені. Скрипт працює лише на тому вебпорталі, для
якого адміністратор видав ключ. Будь-які спроби інтеграції на сторонніх
93
ресурсах ігноруються системою, що запобігає витоку даних і забезпечує
коректну ідентифікацію джерела подій.
Ще одним рівнем захисту є організація мережевої безпеки. Всі взаємодії
між edge вузлами, центральним сервером та базою даних відбуваються через
захищені канали з шифруванням TLS. Крім того, можна використовувати
обмеження доступу за IP, фільтрацію запитів та моніторинг аномальних
патернів трафіку. Це дозволяє попереджувати потенційні загрози, включаючи
DDoS-атаки або спроби несанкціонованого підключення до системи.
Система також забезпечує регулярне оновлення програмних
компонентів для виправлення вразливостей та покращення захисту даних.
Скрипт на вебпорталі, серверні модулі та база даних підтримуються у
актуальному стані, що дозволяє ефективно протидіяти сучасним загрозам
інформаційної безпеки. Адміністратор може оперативно застосовувати нові
версії скрипта та оновлення системи, що підвищує надійність та стабільність
функціонування.
Отже, реалізація захисту даних у розробленій системі передбачає
багаторівневий підхід. Захист починається з безпечного збору інформації на
вебпорталі через HTTPS, продовжується контролем доступу та шифруванням
на сервері, включає аудит та моніторинг активності, резервування даних та
обмеження використання скрипта на конкретному домені. Додатково
забезпечується захист від зовнішніх загроз через мережеву безпеку та
регулярне оновлення компонентів системи. Такий комплексний підхід
дозволяє гарантувати конфіденційність, цілісність і доступність даних,
забезпечує надійну роботу системи у режимі високого навантаження та
дозволяє адміністраторам отримувати достовірну аналітику без ризику втрати
або компрометації інформації.
Реалізація захисту даних у хмарній інфраструктурі з edge вузлами
дозволяє поєднати високу продуктивність, масштабованість і надійність із
сучасними стандартами безпеки. Кожен рівень системи взаємодіє з іншими
94
таким чином, щоб запобігати витокам інформації, забезпечувати захист
конфіденційних даних користувачів та підтримувати ефективну роботу
системи навіть у умовах пікових навантажень. Завдяки цьому розроблена
система є надійним інструментом для збору веб-аналітики і може ефективно
використовуватися на багатьох вебпорталах одночасно без компрометації
безпеки та продуктивності.
4.3 Висновки до розділу 4
У розділі було детально розглянуто питання захисту інформації у
високонавантажених системах, що працюють у хмарних та розподілених edge-
архітектурах. Аналіз існуючих рішень показав, що ефективний захист
базується на багаторівневому підході, який включає автентифікацію,
авторизацію, шифрування, аудит та моніторинг, управління доступом,
резервне копіювання, контроль цілісності даних і захист мережевої
інфраструктури.
У контексті хмарної архітектури AWS використання сервісів IAM, KMS,
CloudTrail, CloudWatch, VPC, Shield, WAF та інших інструментів дозволяє
реалізувати комплексний контроль доступу, шифрування даних, аудит та
захист від зовнішніх загроз. Це забезпечує відповідність сучасним стандартам
безпеки та гарантує конфіденційність, цілісність і доступність даних у
хмарному середовищі.
Розгляд edge-архітектур підкреслив необхідність захисту даних на
периферійних вузлах, включаючи автентифікацію користувачів і пристроїв,
шифрування даних, контроль цілісності, аудит, резервування, сегментацію
мережі та управління життєвим циклом пристроїв. Такі механізми дозволяють
мінімізувати ризики втрати або компрометації інформації при розподіленій
обробці великих обсягів даних.
95
У високонавантажених системах збору веб-аналітики реалізація
багаторівневого захисту, що включає безпечний збір даних через HTTPS,
контроль доступу, шифрування у базі даних, аудит і моніторинг активності,
резервування та мережеву безпеку, дозволяє забезпечити стабільну роботу
системи навіть при пікових навантаженнях. Такий комплексний підхід
гарантує надійність, конфіденційність і цілісність даних користувачів,
забезпечує прозорість аналітики та захист від зовнішніх і внутрішніх загроз.
Захист високонавантажених систем у хмарних і edge-архітектурах
повинен бути комплексним, багаторівневим та інтегрованим у всі компоненти
системи. Це дозволяє поєднувати високу продуктивність, масштабованість і
надійність із сучасними стандартами безпеки, забезпечуючи ефективне та
безпечне використання даних у реальному часі.
96
ВИСНОВКИ
У рамках виконаної кваліфікаційної роботи було проведено всебічне
дослідження предметної області високонавантажених вебсистем, що
дозволило сформувати науково обґрунтовані вимоги до розробки системи
збору вебаналітики. Аналіз сучасних тенденцій цифрових технологій
засвідчив стрімке зростання обсягів даних, необхідність обробки подій у
режимі реального часу, а також потребу у високій швидкодії, масштабованості
та гарантованій відмовостійкості інформаційних платформ. У роботі
визначено основні виклики високонавантажених систем ‒ забезпечення
консистентності даних у розподіленому середовищі, зменшення затримок,
балансування навантаження та безперервність надання сервісів.
Проаналізовані архітектурні концепції ‒ монолітні, мікросервісні,
serverless, event-driven та edge-обчислення ‒ дали змогу оцінити можливості
й обмеження кожного підходу в контексті майбутньої системи. Зроблено
висновок, що оптимальна архітектура повинна поєднувати переваги кількох
моделей, зокрема застосування edge-компонентів для локальної попередньої
обробки даних та використання хмарних технологій для розподіленої
паралельної обробки великих потоків інформації.
У роботі проведено оцінку популярних хмарних рішень, платформ
розробки та систем управління базами даних. Обґрунтовано вибір AWS як
основи інфраструктури, оскільки ця платформа забезпечує автоматичне
масштабування, високу доступність сервісів, підтримку serverless-функцій і
керованих сховищ даних. Аналіз інструментів підтвердив доцільність
застосування асинхронної взаємодії, черг повідомлень та нереляційних баз
даних для ефективної обробки інтенсивних потоків подій.
На основі дослідження було розроблено високонадійну систему збору
веб-аналітики, здатну виконувати обробку даних у реальному часі,
97
мінімізувати затримки й забезпечувати стабільну роботу за умов значних
навантажень. Запропонована архітектура передбачає багаторівневу структуру
‒ клієнтський, транспортний, обчислювальний, аналітичний і візуалізаційний
рівні зі застосуванням edge-вузлів для попередньої обробки подій
користувачів та хмарних сервісів AWS Lambda, SQS, Kinesis і DynamoDB для
масштабованого зберігання й аналізу.
Суттєва увага приділена питанням інформаційної безпеки. Реалізовано
багаторівневий механізм захисту даних: шифрування під час передавання та
зберігання, автентифікація та авторизація користувачів, аудит доступів,
моніторинг активності, мережевий захист і резервування. Такий комплексний
підхід відповідає сучасним стандартам кібербезпеки та забезпечує
конфіденційність, цілісність і доступність аналітичних даних.
Створена система демонструє високу продуктивність, масштабованість,
адаптивність до змінного трафіку та надійну роботу в умовах інтенсивної
взаємодії з користувачами. Забезпечено зручний інтерфейс для
адміністрування та перегляду аналітики, що дозволяє формувати управлінські
рішення на основі актуальних даних у реальному часі
Робота підтверджує актуальність розробки високонавантажених систем
збору вебаналітики у сучасному цифровому середовищі та демонструє
можливість ефективного поєднання новітніх архітектурних підходів, хмарних
технологій і механізмів захисту інформації. Отримані результати мають
практичне значення і можуть бути застосовані при впровадженні рішень для
аналізу поведінки користувачів та оптимізації роботи вебплатформ.
98
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
API – Application Programming Interface (інтерфейс програмування додатків)
AWS – Amazon Web Services (хмарна платформа від Amazon)
DB – Database (база даних)
DBMS – Database Management System (система управління базами даних)
CPU – Central Processing Unit (центральний процесор)
CLOUD – Хмарні обчислення (Cloud Computing)
HTTP / HTTPS – Hypertext Transfer Protocol / Secure (протокол передачі
гіпертексту, захищений)
IoT – Internet of Things (Інтернет речей)
JSON – JavaScript Object Notation (формат обміну даними)
MQTT –Message Queuing Telemetry Transport (протокол передачі повідомлень
для IoT)
RBAC – Role-Based Access Control (рольова модель контролю доступу)
SQL – Structured Query Language (структурована мова запитів для роботи з
реляційними БД)
NoSQL – Non-Relational Database (нереляційна база даних, як MongoDB)
TLS / SSL – Transport Layer Security / Secure Sockets Layer (криптографічні
протоколи захисту даних)
VPN – Virtual Private Network (віртуальна приватна мережа)
Edge – Обчислення на периферії мережі (Edge Computing)
Node.js – Середовище виконання JavaScript на сервері
PWA – Progressive Web Application (прогресивний веб-додаток)
99
CRUD – Create, Read, Update, Delete (операції створення, читання, оновлення
та видалення даних)
ORM – Object-Relational Mapping (технологія зв’язку об’єктів та реляційної
БД)
SDK – Software Development Kit (набір засобів для розробки програмного
забезпечення)
CLI – Command Line Interface (інтерфейс командного рядка)
IDE – Integrated Development Environment (інтегроване середовище розробки)
100
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Bernard Golden “Amazon Web Services for Dummies.” Hoboken: Wiley,
2017. 456 p.
2. Eberhard Wolff “Microservices with Docker, Kubernetes, and AWS.”
Munich: Addison-Wesley, 2020. 400 p.
3. Yan Cui “Serverless Architectures on AWS: With Examples Using AWS
Lambda.” Birmingham: Packt Publishing, 2021. 340 p.
4. Brendan Burns “Designing Distributed Systems: Patterns and Paradigms for
Scalable, Reliable Services.” Sebastopol: O’Reilly Media, 2018. 204 p.
5. Niall Richard Murphy, Betsy Beyer et al. “Site Reliability Engineering.”
Sebastopol: O’Reilly, 2016. 552 p.
6. Sam Newman “Building Microservices. 2nd Edition.” Sebastopol: O’Reilly,
2021. 570 p.
7. Gregor Hohpe, Bobby Woolf “Enterprise Integration Patterns.” Boston:
Addison-Wesley, 2017. 736 p.
8. Tyler Akidau, Slava Chernyak “Streaming Systems.” Sebastopol: O’Reilly,
2018. 352 p.
9. Adam Bellemare “Building Event-Driven Microservices.” Sebastopol:
O’Reilly, 2020. 300 p.
10. Michael Wittig, Andreas Wittig “Amazon Web Services in Action. 3rd
Edition.” Shelter Island: Manning, 2023. 488 p.
11. Martin Kleppmann “Designing Data-Intensive Applications.” Sebastopol:
O’Reilly, 2017. 616 p.
12. Sreeram Mahadevan “Cloud-Native Applications with AWS.” Birmingham:
Packt, 2022. 412 p.
13. Tom Gillis, Chowdary Yanamadala “AWS Security Best Practices.”
Birmingham: Packt, 2020. 322 p.
101
14. Mohamed Fahmy, Rohit Srivastwa “Effective Amazon DynamoDB.”
Birmingham: Packt, 2021. 280 p.
15. Chris Richardson “Microservices Patterns.” Shelter Island: Manning, 2019.
552 p.
16. Lee Atchison “Architecting for Scale.” Sebastopol: O’Reilly, 2020. 310 p.
17. Peter Sbarski, Sam Kroonenburg “Serverless Architectures on AWS.”
Birmingham: Packt, 2017. 310 p.
18. Praveen Palanisamy “Hands-On Edge Analytics with Azure IoT and AWS
IoT.” Birmingham: Packt, 2020. 360 p.
19. Randy Shoup “High-Performance Web Systems.” Cambridge: MIT Press,
2021. 288 p.
20. Zdenek Sloup, Jan Tauchman “Web Analytics Architecture and
Implementation.” Prague: CTU, 2019. 210 p.
21. Василенко В. “Хмарні технології в інформаційних системах.” Київ:
Кондор, 2020. 256 с.
22. Долінський О. “Архітектура розподілених інформаційних систем.”
Львів: Видавництво ЛНУ, 2019. 312 с.
23. Литвинов В. “Захист інформації в комп’ютерних системах і мережах.”
Харків: Фактор, 2021. 384 с.
24. Корольов В., Круглик В. “Інтернет речей: технології та застосування.”
Київ: ДУТ, 2022. 228 с.
25. Гаврилюк О. “Веб-аналітика: методи збору та обробки даних.” Київ:
КНЕУ, 2020. 196 с.
ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
к.т.н., доцент Артем ЛАВДАНСЬКИЙ
__________________
“___” _____________ 2025р.
Дослідження архітектур і проектування оптимальної інфраструктури
для високонавантажених систем
Специфікація
482.ЧДТУ.52469-01
Листів 2
Розробник _______________ Максим СЛАБОШПИЦЬКИЙ
Керівник _______________ Віра БАБЕНКО
Черкаси 2025
2
482.ЧДТУ.52469-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.52469-01 12 01 Текст програми
482.ЧДТУ.52469-01 34 01 Інструкція користувача
ДОДАТОК Б
Дослідження архітектур і проектування оптимальної інфраструктури
для високонавантажених систем
Текс програми
482.ЧДТУ.52469-01 12 01
Листів 22
Розробник _______________ Максим СЛАБОШПИЦЬКИЙ
Черкаси 2025
2
482.ЧДТУ.52469-01 12 01
package com.analytics.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBea
n;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbParti
tionKey;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSort
Key;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@DynamoDbBean
public class AnalyticsEvent {
private String portalId; // Partition Key
private String eventId; // Sort Key
private String userId;
private String eventType;
private String eventData;
private LocalDateTime timestamp;
private String sessionId;
private String ipAddress;
private String userAgent;
private long createdAt;
@DynamoDbPartitionKey
public String getPortalId() {
return portalId;
}
@DynamoDbSortKey
public String getEventId() {
3
482.ЧДТУ.52469-01 12 01
return eventId;
}
}
package com.analytics.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBea
n;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbParti
tionKey;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSort
Key;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@DynamoDbBean
public class UniqueUserMetric {
private String portalId; // Partition Key
private String userDateKey; // Sort Key (userId#date)
private String userId;
private LocalDateTime date;
private long timestamp;
@DynamoDbPartitionKey
public String getPortalId() {
return portalId;
}
@DynamoDbSortKey
public String getUserDateKey() {
return userDateKey;
}
4
482.ЧДТУ.52469-01 12 01
}
package com.analytics.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBea
n;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbParti
tionKey;
import
software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSort
Key;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@DynamoDbBean
public class PortalVisitStats {
private String portalId; // Partition Key
private String dateKey; // Sort Key (date#hour)
private long totalVisits;
private long uniqueUsers;
private LocalDateTime lastUpdated;
@DynamoDbPartitionKey
public String getPortalId() {
return portalId;
}
@DynamoDbSortKey
public String getDateKey() {
return dateKey;
}
}
package com.analytics.domain.jpa;
5
482.ЧДТУ.52469-01 12 01
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Entity
@Table(name = "portals")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Portal {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;
@Column(nullable = false, unique = true)
private String name;
@Column(nullable = false, unique = true)
private String domain;
@Column(columnDefinition = "TEXT")
private String description;
@Column(nullable = false)
private Boolean active = true;
@Column(nullable = false)
private LocalDateTime createdAt = LocalDateTime.now();
private LocalDateTime updatedAt;
@Column(nullable = false)
private String createdBy;
}
package com.analytics.domain.jpa;
6
482.ЧДТУ.52469-01 12 01
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Collections;
@Entity
@Table(name = "admin_users")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AdminUser implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String firstName;
@Column(nullable = false)
private String lastName;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private UserRole role;
@Column(nullable = false)
private Boolean active = true;
7
482.ЧДТУ.52469-01 12 01
@Column(nullable = false)
private LocalDateTime createdAt = LocalDateTime.now();
private LocalDateTime lastLogin;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Collections.singletonList(new SimpleGrantedAuthority("ROLE_" +
role.name()));
}
@Override
public String getUsername() {
return email;
}
@Override
public String getPassword() {
return password;
}
@Override
public boolean isAccountNonExpired() {
return active;
}
@Override
public boolean isAccountNonLocked() {
return active;
}
@Override
public boolean isCredentialsNonExpired() {
return active;
}
@Override
public boolean isEnabled() {
return active;
}
8
482.ЧДТУ.52469-01 12 01
public enum UserRole {
ADMIN, MANAGER, VIEWER
}
}
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AnalyticsEventRequest {
@JsonProperty("portal_id")
private String portalId;
@JsonProperty("user_id")
private String userId;
@JsonProperty("event_type")
private String eventType;
@JsonProperty("event_data")
private Map<String, Object> eventData;
@JsonProperty("session_id")
private String sessionId;
@JsonProperty("timestamp")
private Long timestamp;
}
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
9
482.ЧДТУ.52469-01 12 01
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AuthRequest {
@JsonProperty("email")
private String email;
@JsonProperty("password")
private String password;
}
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AuthResponse {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("token_type")
private String tokenType = "Bearer";
@JsonProperty("expires_in")
private Long expiresIn;
@JsonProperty("user")
private UserInfo user;
}
10
482.ЧДТУ.52469-01 12 01
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserInfo {
private String id;
private String email;
@JsonProperty("first_name")
private String firstName;
@JsonProperty("last_name")
private String lastName;
private String role;
@JsonProperty("created_at")
private LocalDateTime createdAt;
}
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@NoArgsConstructor
@AllArgsConstructor
11
482.ЧДТУ.52469-01 12 01
@Builder
public class PortalDto {
private String id;
private String name;
private String domain;
private String description;
private Boolean active;
@JsonProperty("created_at")
private LocalDateTime createdAt;
@JsonProperty("created_by")
private String createdBy;
@JsonProperty("updated_at")
private LocalDateTime updatedAt;
}
package com.analytics.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class AnalyticsStatsResponse {
@JsonProperty("portal_id")
private String portalId;
@JsonProperty("total_visits")
private Long totalVisits;
@JsonProperty("unique_users")
private Long uniqueUsers;
@JsonProperty("date")
12
482.ЧДТУ.52469-01 12 01
private String date;
}
package com.analytics.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ApiResponse<T> {
private boolean success;
private String message;
private T data;
private String error;
private long timestamp;
public static <T> ApiResponse<T> success(T data, String message) {
return ApiResponse.<T>builder()
.success(true)
.message(message)
.data(data)
.timestamp(System.currentTimeMillis())
.build();
}
public static <T> ApiResponse<T> error(String message, String error) {
return ApiResponse.<T>builder()
.success(false)
.message(message)
.error(error)
.timestamp(System.currentTimeMillis())
.build();
}
}
package com.analytics.config;
13
482.ЧДТУ.52469-01 12 01
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
@Configuration
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT",
"DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowCredentials(true);
configuration.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new
UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
package com.analytics.config;
import com.analytics.security.JwtAuthenticationEntryPoint;
import com.analytics.security.JwtAuthenticationFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
14
482.ЧДТУ.52469-01 12 01
import
org.springframework.security.config.annotation.authentication.configuration.Authe
nticationConfiguration;
import
org.springframework.security.config.annotation.method.configuration.EnableMeth
odSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSec
urity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import
org.springframework.security.web.authentication.UsernamePasswordAuthenticatio
nFilter;
@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class WebSecurityConfig {
@Autowired
private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
@Bean
public JwtAuthenticationFilter jwtAuthenticationFilter() {
return new JwtAuthenticationFilter();
}
@Bean
public AuthenticationManager
authenticationManager(AuthenticationConfiguration authConfig) throws
Exception {
return authConfig.getAuthenticationManager();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.exceptionHandling()
.authenticationEntryPoint(jwtAuthenticationEntryPoint)
15
482.ЧДТУ.52469-01 12 01
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeHttpRequests()
.requestMatchers("/api/auth/**").permitAll()
.requestMatchers("/api/events/**").permitAll() // Analytics events
endpoint is open
.requestMatchers("/admin/**").authenticated()
.anyRequest().authenticated()
.and()
.addFilterBefore(jwtAuthenticationFilter(),
UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
package com.analytics.config;
import io.awspring.cloud.dynamodb.DynamoDbOperations;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import
org.springframework.boot.context.properties.EnableConfigurationProperties;
@Configuration
@EnableConfigurationProperties
public class DynamoDbConfig {
// DynamoDbOperations bean is auto-configured by spring-cloud-aws-starter-
dynamodb
// No additional configuration needed for basic setup
}
package com.analytics.security;
import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UserDetails;
16
482.ЧДТУ.52469-01 12 01
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.util.Date;
@Slf4j
@Component
public class JwtTokenProvider {
@Value("${app.security.jwt.secret-key}")
private String jwtSecret;
@Value("${app.security.jwt.expiration}")
private long jwtExpirationMs;
@Value("${app.security.jwt.refresh-expiration}")
private long refreshExpirationMs;
private Key getSigningKey() {
byte[] keyBytes = jwtSecret.getBytes(StandardCharsets.UTF_8);
return Keys.hmacShaKeyFor(keyBytes);
}
public String generateToken(UserDetails userDetails) {
return generateToken(userDetails.getUsername());
}
public String generateToken(String email) {
return createToken(email, new Date(), new Date(System.currentTimeMillis()
+ jwtExpirationMs));
}
public String generateRefreshToken(String email) {
return createToken(email, new Date(), new Date(System.currentTimeMillis()
+ refreshExpirationMs));
}
private String createToken(String email, Date issuedAt, Date expirationDate) {
return Jwts.builder()
.subject(email)
.issuedAt(issuedAt)
.expiration(expirationDate)
17
482.ЧДТУ.52469-01 12 01
.signWith(getSigningKey(), SignatureAlgorithm.HS512)
.compact();
}
public String getEmailFromToken(String token) {
return getClaims(token).getSubject();
}
public boolean validateToken(String token) {
try {
Jwts.parserBuilder()
.setSigningKey(getSigningKey())
.build()
.parseClaimsJws(token);
return true;
} catch (MalformedJwtException e) {
log.error("Invalid JWT token: {}", e.getMessage());
} catch (ExpiredJwtException e) {
log.error("Expired JWT token: {}", e.getMessage());
} catch (UnsupportedJwtException e) {
log.error("Unsupported JWT token: {}", e.getMessage());
} catch (IllegalArgumentException e) {
log.error("JWT claims string is empty: {}", e.getMessage());
} catch (SignatureException e) {
log.error("JWT signature validation failed: {}", e.getMessage());
}
return false;
}
private Claims getClaims(String token) {
return Jwts.parserBuilder()
.setSigningKey(getSigningKey())
.build()
.parseClaimsJws(token)
.getBody();
}
}
package com.analytics.security;
import com.analytics.dto.ApiResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.ServletException;
18
482.ЧДТУ.52469-01 12 01
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Slf4j
@Component
public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse
response,
AuthenticationException authException) throws IOException,
ServletException {
log.error("Responding with unauthorized error. Message: {}",
authException.getMessage());
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
final ApiResponse<?> body = ApiResponse.error(
"Unauthorized",
authException.getMessage()
);
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getOutputStream(), body);
}
}
package com.analytics.security;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationTo
ken;
import org.springframework.security.core.context.SecurityContextHolder;
19
482.ЧДТУ.52469-01 12 01
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import
org.springframework.security.web.authentication.WebAuthenticationDetailsSource
;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
public class JwtAuthenticationFilter extends OncePerRequestFilter {
@Autowired
private JwtTokenProvider jwtTokenProvider;
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
try {
String jwt = getJwtFromRequest(request);
if (StringUtils.hasText(jwt) && jwtTokenProvider.validateToken(jwt)) {
String email = jwtTokenProvider.getEmailFromToken(jwt);
UserDetails userDetails =
userDetailsService.loadUserByUsername(email);
UsernamePasswordAuthenticationToken authentication =
new UsernamePasswordAuthenticationToken(userDetails, null,
userDetails.getAuthorities());
authentication.setDetails(new
WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
20
482.ЧДТУ.52469-01 12 01
log.debug("Set the security context for user: {}", email);
}
} catch (Exception ex) {
log.error("Could not set user authentication in security context", ex);
}
filterChain.doFilter(request, response);
}
private String getJwtFromRequest(HttpServletRequest request) {
String bearerToken = request.getHeader("Authorization");
if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer "))
{
return bearerToken.substring(7);
}
return null;
}
}
package com.analytics.repository.jpa;
import com.analytics.domain.jpa.AdminUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface AdminUserRepository extends JpaRepository<AdminUser,
String> {
Optional<AdminUser> findByEmail(String email);
boolean existsByEmail(String email);
}
package com.analytics.repository.jpa;
import com.analytics.domain.jpa.Portal;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
public interface PortalRepository extends JpaRepository<Portal, String> {
21
482.ЧДТУ.52469-01 12 01
Optional<Portal> findByName(String name);
Optional<Portal> findByDomain(String domain);
List<Portal> findByActive(Boolean active);
boolean existsByDomain(String domain);
boolean existsByName(String name);
}
package com.analytics.repository.dynamodb;
import com.analytics.domain.entity.AnalyticsEvent;
import io.awspring.cloud.dynamodb.DynamoDbOperations;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
import
software.amazon.awssdk.enhanced.dynamodb.model.PutItemEnhancedRequest;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Repository
public class AnalyticsEventRepository {
@Autowired
private DynamoDbEnhancedClient dynamoDbEnhancedClient;
@Autowired
private DynamoDbOperations dynamoDbOperations;
private static final String TABLE_NAME = "analytics-events";
private DynamoDbTable<AnalyticsEvent> getTable() {
return dynamoDbEnhancedClient.table(TABLE_NAME,
TableSchema.fromBean(AnalyticsEvent.class));
}
public void save(AnalyticsEvent event) {
try {
DynamoDbTable<AnalyticsEvent> table = getTable();
table.putItem(event);
22
482.ЧДТУ.52469-01 12 01
log.info("Saved analytics event for portal: {}", event.getPortalId());
} catch (Exception e) {
log.error("Error saving analytics event", e);
throw new RuntimeException("Failed to save analytics event", e);
}
}
public void saveAll(List<AnalyticsEvent> events) {
events.forEach(this::save);
}
ДОДАТОК В
Дослідження архітектур і проектування оптимальної інфраструктури
для високонавантажених систем
Інструкція користувача
482.ЧДТУ.52469-01 34 01
Листів 4
Розробник _______________ Максим СЛАБОШПИЦЬКИЙ
Черкаси 2025
2
482.ЧДТУ.52469-01 34 01
Розроблена система збору веб-аналітики призначена для
високонавантажених середовищ та забезпечує збір, обробку і відображення
даних про відвідування та поведінку користувачів на вебпорталах.
Адміністратор системи має повний контроль над налаштуванням
інфраструктури, створенням доступів для порталів і управлінням
аналітичними даними. Для коректної роботи системи важливо дотримуватися
визначеного порядку дій, починаючи з розгортання в AWS і першого запуску,
і закінчуючи управлінням доступами та переглядом аналітики.
Першим кроком є підготовка хмарної інфраструктури для системи.
Адміністратор повинен мати активний обліковий запис AWS і доступ до
консолі управління. Розгортання починається зі створення необхідних
ресурсів: EC2-сервер для обробки даних, бази DynamoDB для зберігання
аналітики, API Gateway для маршрутизації запитів від edge вузлів, а також
налаштування S3 для зберігання резервних копій. При створенні EC2 важливо
обрати інстанс з достатньою продуктивністю CPU і RAM, щоб забезпечити
обробку високого потоку подій. База DynamoDB налаштовується з
параметрами високої пропускної здатності і автоматичним масштабуванням
для забезпечення стабільної роботи під навантаженням.
Далі необхідно налаштувати edge вузли, які будуть розміщені ближче
до користувачів або на окремих географічних локаціях. Вони відповідають за
первинну обробку подій користувачів і надсилання даних на центральний
сервер через API Gateway. Налаштування edge вузлів передбачає визначення
доменів, для яких буде здійснюватися збір аналітики, та прив’язку скриптів до
конкретних порталів. Адміністратор повинен перевірити, щоб усі вузли мали
доступ до центрального сервера і були підключені через захищений канал
HTTPS.
Після розгортання всіх ресурсів у AWS, наступним кроком є перший
запуск системи. Адміністратор повинен переконатися, що EC2-сервер успішно
3
482.ЧДТУ.52469-01 34 01
запущений, API Gateway приймає запити, а edge вузли підключені. Для
тестового запуску можна використовувати обмежену кількість вебпорталів,
щоб перевірити коректність збору та обробки даних. Під час першого запуску
адміністратор має також перевірити логування активності, щоб упевнитися у
відсутності помилок і стабільності роботи системи.
Для початку збору аналітики необхідно створити доступи для
конкретних вебпорталів. Кожному порталу присвоюється унікальний
ідентифікатор, який використовується у JavaScript скрипті для збору даних.
Адміністратор системи додає новий портал у панелі управління, вводить його
домен і генерує ключ доступу. Скрипт, інтегрований на портал, прив’язується
до цього ключа і передає події користувачів на edge вузли та центральний
сервер. Важливо, щоб ключ був унікальним для кожного домену, і скрипт
використовувався тільки на дозволеному сайті. Це забезпечує точну
ідентифікацію джерела даних і запобігає змішуванню аналітики з інших
порталів.
Адміністратор має можливість редагувати або відкликати ключ доступу,
що дозволяє контролювати інтеграцію порталів у систему. Крім того, система
дозволяє налаштувати обмеження на кількість подій, які можуть надсилатися
з одного порталу, а також перевіряти правильність роботи скрипта у
реальному часі через панель моніторингу.
Після інтеграції вебпорталів і підтвердження їх роботи адміністратор
може переглядати результати аналітики через портал адміністратора. Портал
побудований без використання складних фреймворків і дозволяє швидко
отримати інформацію про унікальні відвідування, загальну кількість
переглядів, взаємодію з елементами сайту, кліки, прокрутки та інші дії
користувачів. Дані можна фільтрувати за періодом, порталом або типом подій.
Портал також дозволяє формувати звіти і експортувати дані для подальшого
аналізу.
4
482.ЧДТУ.52469-01 34 01
Для забезпечення безпеки доступу до аналітики, портал адміністратора
вимагає авторизації. Адміністратор вводить логін та пароль, а при
необхідності використовує двофакторну автентифікацію. Це гарантує, що
доступ до даних отримують лише уповноважені особи. Усі дії адміністраторів
реєструються в журналах, що дозволяє відстежувати зміни, спроби входу та
інші важливі події.
Для стабільної роботи системи адміністратор повинен регулярно
проводити моніторинг інфраструктури в AWS. Це включає перевірку стану
EC2-сервера, edge вузлів, бази даних і API Gateway. Також важливо стежити
за журналами подій та статистикою роботи скриптів на порталах, щоб
своєчасно виявляти технічні проблеми або помилки у зборі даних. У разі
необхідності адміністратор може масштабувати ресурси, додавати нові edge
вузли або регіональні копії бази даних, щоб підтримувати стабільну роботу
при високих навантаженнях.
Регулярне оновлення системи також є важливою процедурою.
Адміністратор встановлює нові версії скрипта, серверного програмного
забезпечення та бази даних для виправлення помилок, покращення
продуктивності та підвищення безпеки. Це дозволяє системі залишатися
актуальною, захищеною та ефективною навіть при збільшенні обсягів даних
та кількості інтегрованих порталів.
Дана інструкція адміністратора системи охоплює всі ключові етапи
роботи: розгортання інфраструктури в AWS, перший запуск, налаштування
доступів для вебпорталів, інтеграцію скриптів, перегляд аналітики та
моніторинг роботи системи. Дотримання цих кроків забезпечує надійну
роботу системи, коректний збір і обробку даних, а також безпечне управління
доступом та аналітикою для всіх інтегрованих порталів. Завдяки зрозумілій
послідовності дій адміністратор може ефективно керувати системою та
підтримувати її працездатність навіть при високих навантаженнях.