Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/8663| Назва: | Дослідження методів масштабування програмного забезпечення у великих корпоративних комп'ютерних мережах |
| Автори: | БАБЕНКО, Віра КОЛОТИЛО, Олексій |
| Дата публікації: | 2023 |
| Короткий огляд (реферат): | Сучасні корпоративні мережі відіграють важливу роль у комунікації та обміні даними в організаціях. Зростання обсягів інформації вимагає ефективного програмного забезпечення та методів масштабування. Ця кваліфікаційна робота досліджує методи масштабування програм у корпоративних мережах для поліпшення їх продуктивності та стійкості. Метою випускної кваліфікаційної роботи магістра є створення спеціального сервісу, який буде використовувати декілька серверів і надасть можливість аналізу засобів комунікації в такому програмному забезпеченні. Сервіс може мати різні модулі, які будуть розподіляти навантаження між декількома серверами. Об’єкт дослідження – створений спеціальний сервіс, який використовує декілька серверів і надає можливість аналізу засобів комунікації в програмному забезпеченні. Предмет дослідження – методи масштабування програмного забезпечення у великих корпоративних комп'ютерних мережах. Наукова новизна отриманих результатів полягає в розробці та впровадженні методів масштабування програмного забезпечення у великих корпоративних комп'ютерних мережах для створення спеціального сервісу з метою аналізу засобів комунікації в програмному забезпеченні. Досліджено різні модулі, які розподіляють навантаження між декількома серверами, що сприяє оптимізації продуктивності та ефективності використання ресурсів. Отримані результати відкривають нові можливості для покращення роботи програмного забезпечення в масштабах великих корпоративних мереж і є актуальними для подальших досліджень у сфері інформаційних технологій. Практична цінність результатів полягає в можливості використання розробленого методу масштабування програмного забезпечення у великих корпоративних комп'ютерних мережах для створення спеціального сервісу. Отримані практичні рекомендації та висновки дозволяють ефективно розподіляти навантаження між серверами та оптимізувати роботу програмного забезпечення в умовах великих мереж. Це може бути корисним для розробників, архітекторів програмних систем, та інших фахівців у сфері інформаційних технологій, що працюють з корпоративними мережами та системами масштабування. Результати дослідження можуть бути використані для покращення продуктивності та надійності програмних рішень у великих корпоративних оточеннях. У першому розділі було розглянуто поняття корпоративні мережі, програмне забезпечення та розподіленні обчислення. Сформовано постановку задач відповідно до теми кваліфікаційної роботи. У другому розділі було розглянуто програмне забезпечення, приклади масштабованих систем. Обрано технології, які найкраще підходять для масштабування програмного забезпечення у великих корпоративних комп'ютерних мережах. У третьому розділі описується архітектура системи, заходи безпеки, конкретні технічні вимоги та оцінки її продуктивності. Висновки включають в себе основні результати роботи. У додатках наведено специфікацію, текст програми та інструкцію користувача. Загальний обсяг роботи становить 97 сторінок. У кваліфікаційній роботі магістра 16 рисунків та 3 додатки. Для виконання роботи використано 22 літературних джерела. |
| URI (Уніфікований ідентифікатор ресурсу): | https://er.chdtu.edu.ua/handle/ChSTU/8663 |
| Розташовується у зібраннях: | 123 Комп’ютерна інженерія (Комп'ютерні системи та мережі) |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| 1_ТИТУЛКА_Колотило-merged.pdf Restricted Access | 1.44 MB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ І СИСТЕМ
КАФЕДРА ІНФОРМАЦІЙНОЇ БЕЗПЕКИ ТА КОМП’ЮТЕРНОЇ ІНЖЕНЕРІЇ
Пояснювальна записка
до кваліфікаційної роботи магістра
на тему: «Дослідження методів масштабування
програмного забезпечення у великих
корпоративних комп'ютерних мережах»
ЧДТУ.232281.005 ПЗ
Виконав: студент 2 курсу, групи МКМ-2205
спеціальності 123 – Комп’ютерна інженерія
за освітньою програмою – Комп’ютерні системи
та мережі
Олексій КОЛОТИЛО
Керівник
д.т.н., професор Віра БАБЕНКО
Н. контроль
Світлана ГРЕСЬКО
Рецензент
старший викладач кафедри інформаційних
технологій, ЧНУ ім. Б. Хмельницького
к.т.н. Тетяна СТАБЕЦЬКА
«ЗАХИСТ ДОЗВОЛЯЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор ___________ Віра БАБЕНКО
Черкаси 2023 року
Форма № Н-9.01
Черкаський державний технологічний університет
Факультет інформаційних технологій і систем
Кафедра інформаційної безпеки та комп‘ютерної інженерії
Освітньо-кваліфікаційний рівень Магістр
Спеціальність 123 – Комп’ютерна інженерія
Освітня програма Комп’ютерні системи та мережі
«ЗАТВЕРДЖУЮ»
Завідувач кафедри _____ Володимир РУДНИЦЬКИЙ
«10» жовтня 2023 року
ЗАВДАННЯ
на кваліфікаційну роботу магістра студенту
Колотилу Олексію Миколайовичу
(прізвище, ім‘я, по батькові)
1. Тема роботи Дослідження методів масштабування програмного забезпечення
у великих корпоративних комп'ютерних мережах
Керівник роботи д.т.н., професор Бабенко Віра Григорівна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «06» жовтня 2023 р. № 267/04
2. Строк подання студентом роботи
3. Вихідні дані до роботи:
Масштабування програмного забезпечення, корпоративні мережі, розподілені обчислення,
архітектура програмного забезпечення, мікросервісна архітектура, HTTP, HTTPS, AWS.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
Розділ 1 Аналіз предметної області та постановка задачі дослідження
Розділ 2 Вибір технології та інструментальних засобів розробки системи
Розділ 3 Оптимізація методів масштабування програмного забезпечення у великих
корпоративних комп'ютерних мережах
Висновки
Перелік скорочень та умовних позначень
Список використаних джерел
Додатки
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
Додаток А Специфікація
Додаток Б Текст програм
Додаток В Інструкція користувача
6. Консультанти розділів роботи
Підпис, дата
Розділ Прізвище, ініціали та
посада завдання видав завдання прийняв
консультанта
7. Дата видачі завдання 10 жовтня 2023 року
КАЛЕНДАРНИЙ ПЛАН
№ з/п Назва етапів кваліфікаційної роботи магістра Строк виконання
етапів роботи Примітка
1 Збір матеріалу 21.10 – 28.10 виконано
2 Обробка матеріалу 29.10 – 06.11 виконано
3 Обґрунтування актуальності виконання виконано
досліджень 12.11 – 15.11
4 Оцінка стану проблеми, виокремлення виконано
дослідницьких задач, постановка задачі 16.11 – 18.11
дослідження
5 Викладення сутності і результатів дослідження 20.11– 25.11 виконано
6 Практичне застосування результатів
дослідження 26.11 – 27.11 виконано
7 Оформлення результатів в пояснювальну записку 27.11 – 30.11 виконано
8 Подання роботи на відгук та рецензування 01.12.23 виконано
Студент-магістрант ____________________________ Олексій КОЛОТИЛО
(підпис)
Керівник роботи _____________________________ Віра БАБЕНКО
(підпис)
АНОТАЦІЯ
Сучасні корпоративні мережі відіграють важливу роль у комунікації та
обміні даними в організаціях. Зростання обсягів інформації вимагає
ефективного програмного забезпечення та методів масштабування. Ця
кваліфікаційна робота досліджує методи масштабування програм у
корпоративних мережах для поліпшення їх продуктивності та стійкості.
Метою випускної кваліфікаційної роботи магістра є створення
спеціального сервісу, який буде використовувати декілька серверів і надасть
можливість аналізу засобів комунікації в такому програмному забезпеченні.
Сервіс може мати різні модулі, які будуть розподіляти навантаження
між декількома серверами.
Об’єкт дослідження – створений спеціальний сервіс, який
використовує декілька серверів і надає можливість аналізу засобів
комунікації в програмному забезпеченні.
Предмет дослідження – методи масштабування програмного
забезпечення у великих корпоративних комп'ютерних мережах.
Наукова новизна отриманих результатів полягає в розробці та
впровадженні методів масштабування програмного забезпечення у великих
корпоративних комп'ютерних мережах для створення спеціального сервісу з
метою аналізу засобів комунікації в програмному забезпеченні. Досліджено
різні модулі, які розподіляють навантаження між декількома серверами, що
сприяє оптимізації продуктивності та ефективності використання ресурсів.
Отримані результати відкривають нові можливості для покращення роботи
програмного забезпечення в масштабах великих корпоративних мереж і є
актуальними для подальших досліджень у сфері інформаційних технологій.
Практична цінність результатів полягає в можливості використання
розробленого методу масштабування програмного забезпечення у великих
корпоративних комп'ютерних мережах для створення спеціального сервісу.
Отримані практичні рекомендації та висновки дозволяють ефективно
розподіляти навантаження між серверами та оптимізувати роботу
програмного забезпечення в умовах великих мереж. Це може бути корисним
для розробників, архітекторів програмних систем, та інших фахівців у сфері
інформаційних технологій, що працюють з корпоративними мережами та
системами масштабування. Результати дослідження можуть бути використані
для покращення продуктивності та надійності програмних рішень у великих
корпоративних оточеннях.
У першому розділі було розглянуто поняття корпоративні мережі,
програмне забезпечення та розподіленні обчислення. Сформовано
постановку задач відповідно до теми кваліфікаційної роботи.
У другому розділі було розглянуто програмне забезпечення, приклади
масштабованих систем. Обрано технології, які найкраще підходять для
масштабування програмного забезпечення у великих корпоративних
комп'ютерних мережах.
У третьому розділі описується архітектура системи, заходи безпеки,
конкретні технічні вимоги та оцінки її продуктивності.
Висновки включають в себе основні результати роботи. У додатках
наведено специфікацію, текст програми та інструкцію користувача.
Загальний обсяг роботи становить 97 сторінок. У кваліфікаційній роботі
магістра 16 рисунків та 3 додатки. Для виконання роботи використано
22 літературних джерела.
ANOTATION
Modern corporate networks play an important role in communication and
data exchange in organizations. Growing volumes of information require efficient
software and scaling methods. This thesis explores methods of scaling applications
in enterprise networks to improve their performance and resilience.
The goal of the final work is to create a special service that will use several
servers and will provide an opportunity to analyze the means of communication in
such software.
The service can have different modules that will distribute the load between
several servers.
The object of the research is a special service created that uses several
servers and provides the possibility of analyzing the means of communication in
the software.
The subject of research is methods of scaling software in large corporate
computer networks.
The scientific novelty of the obtained results lies in the development and
implementation of software scaling methods in large corporate computer networks
to create a special serviceinordertoanalyzemeansofcommunicationinsoftware.
Various modules have been studied that distribute the load between several
servers, which helps to optimize performance and resource efficiency. The
obtained results open up new opportunities for improving the operation of software
on the scale of large corporate networks and are relevant for further research in the
field of information technologies.
The practical value of the results lies in the possibility of using the
developed software scaling method in large corporate computer networks to create
a special service. The received practical recommendations and conclusions allow
you to effectively distribute the load between servers and optimize the operation of
the software in the conditions of large networks. It can be useful for developers,
software system architects, and other IT professionals working with enterprise
networks and scaling systems. The results of the research can be used to improve
the performance and reliability of software solutions in large corporate
environments.
The first chapter discussed what corporate networks are, software, and
distributed computing. A set of tasks was created according to the topic of the
qualification work;
In the second chapter, software, examples of scalable systems were
considered. Selected technologies that are best suited for scaling software in large
corporate computer networks;
The third section describes the system architecture, security measures,
specific technical requirements and performance evaluations.
The conclusions include the main results of the work. Appendices include
specification, program text, and user manual. The total volume of work is
97 pages. There are 16 drawings and 3 appendices in the master's qualification
work, 22 literary sources were used to perform the work.
2
ЗМІСТ
ВСТУП……………………………………………………………………….… 4
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ…………………………………………………..... 7
1.1Аналіз предметної області…………………………………...…….. 7
1.2 Вибір напряму дослідження………………………………………. 18
1.3 Постановка задачі………………………………………………….. 27
1.4 Висновки до розділу 1……………………………………………... 29
РОЗДІЛ2ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ………………………………………………………. 30
2.1 Огляд існуючих технологій……………………………………….. 30
2.2 Вибір технологій ………………………………………………….. 41
2.3 Висновки до розділу 2……………………………………………... 52
РОЗДІЛ 3 ОПТИМІЗАЦІЯ МЕТОДІВ МАСШТАБУВАННЯ
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ У ВЕЛИКИХ КОРПОРАТИВНИХ
КОМП'ЮТЕРНИХ МЕРЕЖАХ……………………………………………… 53
3.1 Структура системи……………………………………………….... 53
3.2 Опис функцій системи…………………………………………….. 61
3.3 Забезпечення захисту інформації при роботі зі створеною
системою ………………………………………………………………. 66
3.4 Технічні вимоги для роботи з системою………………………..... 71
3.5 Оцінка ефективності застосування методів масштабування
програмного забезпечення у великих корпоративних комп'ютерних
мережах………………………………………………………..……….. 74
3.6 Висновки до розділу 3………………………………………….….. 76
ВИСНОВКИ…………………………………………………………………... 77
3
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ…………………… 78
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ…………………………………….. 79
ДОДАТКИ:
А – 482.ЧДТУ.32281-01 Дослідження методів масштабування
програмного забезпечення у великих корпоративних
комп'ютерних мережах
4
ВСТУП
Актуальність теми дослідження є вкрай актуальною в контексті
швидко зростаючого обсягу та складності інформаційних систем сучасного
бізнесу. Великі корпоративні комп'ютерні мережі, які об'єднують
різноманітні ресурси та пристрої, потребують ефективних методів
масштабування для забезпечення стійкості та високої продуктивності.
Розробка та вдосконалення методів масштабування програмного
забезпечення у великих мережах стає ключовим завданням для забезпечення
надійності, безпеки та швидкодії інформаційних систем. Зростання обсягів
даних, кількості користувачів та різноманіття сервісів ставить перед
розробниками та архітекторами програмного забезпечення виклик, який
вимагає досліджень та впровадження новаторських підходів до
масштабування.
Дослідження в області методів масштабування в контексті
корпоративних мереж має потенціал внести суттєвий вклад у розуміння
принципів оптимального розподілу ресурсів, забезпечення безпеки та
здатності системи до адаптації до змін у вимогах та обсягах роботи.
Врахування сучасних викликів та тенденцій у розвитку корпоративних
інформаційних технологій дозволяє піднятися на новий рівень в управлінні
та оптимізації мережевих інфраструктур.
Метою випускної роботи магістра є створення спеціального сервісу,
який буде використовувати декілька серверів і надасть можливість аналізу
засобів комунікації в такому програмному забезпеченні.
Сервіс може мати різні модулі, які будуть розподіляти навантаження
між декількома серверами.
На тему, що стосується методів масштабування програмного
забезпечення у великих корпоративних комп'ютерних мережах існує безліч
літератури, яка пропонує різні підходи та стратегії для розробки та
5
управління програмним забезпеченням в великих корпоративних
середовищах. Наприклад книга “Scalability Rules: Principles for Scaling Web
Sites" авторів Martin L. Abbott та Michael T. Fisher надає практичні поради та
принципи щодо масштабування веб-сайтів. Вона включає в себе важливі
аспекти, такі як архітектурні вирішення, ефективність та оптимізація для
досягнення стійкості та високої продуктивності. Також книга "Building
Microservices: DesigningFine-GrainedSystems" автора Sam Newman розглядає
мікросервісну архітектуру, яка є популярним підходом до масштабування
програмних систем. Вона охоплює технічні та організаційні аспекти роботи з
мікросервісами.
Об’єкт дослідження – створений спеціальний сервіс, який
використовує декілька серверів і надає можливість аналізу засобів
комунікації в програмному забезпеченні.
Предмет дослідження – методи масштабування програмного
забезпечення у великих корпоративних комп'ютерних мережах.
Наукова новизна отриманих результатів полягає в розробці та
впровадженні методів масштабування програмного забезпечення у великих
корпоративних комп'ютерних мережах для створення спеціального сервісу з
метою аналізу засобів комунікації в програмному забезпеченні. Досліджено
різні модулі, які розподіляють навантаження між декількома серверами, що
сприяє оптимізації продуктивності та ефективності використання ресурсів.
Отримані результати відкривають нові можливості для покращення роботи
програмного забезпечення в масштабах великих корпоративних мереж і є
актуальними для подальших досліджень у сфері інформаційних технологій.
Практична цінність результатів полягає в можливості використання
розробленого методу масштабування програмного забезпечення у великих
корпоративних комп'ютерних мережах для створення спеціального сервісу.
Отримані практичні рекомендації та висновки дозволяють ефективно
розподіляти навантаження між серверами та оптимізувати роботу
програмного забезпечення в умовах великих мереж. Це може бути корисним
6
для розробників, архітекторів програмних систем, та інших фахівців у сфері
інформаційних технологій, що працюють з корпоративними мережами та
системами масштабування. Результати дослідження можуть бути використані
для покращення продуктивності та надійності програмних рішень у великих
корпоративних оточеннях.
Кваліфікаційна робота складається з 3-х розділів, в яких подається
інформація про:
1. У першому розділі було розглянуто, що таке корпоративні мережі,
програмне забезпечення та розподіленні обчислення. Сформовано
постановку задач відповідно до теми кваліфікаційної роботи;
2. У другому розділі було розглянуто програмне забезпечення,
приклади масштабованих систем. Обрано технології, які найкраще підходять
для масштабування програмного забезпечення у великих корпоративних
комп'ютерних мережах;
3. У третьому розділі описується архітектура системи, заходи безпеки,
конкретні технічних вимог та оцінки її продуктивності.
Використана література, під час написання кваліфікаційної роботи,
досить добре розкриває тему та відображає потреби для аналізу.
7
РОЗДІЛ 1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА
ЗАДАЧІ ДОСЛІДЖЕННЯ
1.1 Аналіз предметної області
Корпоративна мережа є інфраструктурою зв'язку, спеціально
призначеною для забезпечення ефективної діяльності конкретного
підприємства, яке контролює та використовує цю мережу. Її користувачами є
виключно співробітники даного підприємства, і в загальному, вона не надає
послуг стороннім організаціям чи індивідуальним користувачам. В
залежності від розмірів підприємства і складності вирішуваних завдань,
можна виділити мережі відділу, мережі кампусу та корпоративні мережі.
Організація представляє собою взаємодію системи елементів
(підрозділів), кожен з яких може мати свою власну структуру. Елементи
співпрацюють як функціонально, виконуючи конкретні види робіт в рамках
єдиного бізнес-процесу, так і інформаційно, обмінюючись документами,
факсами, письмовими та усними директивами. Крім того, ці елементи
взаємодіють із зовнішніми системами, і ця взаємодія може бути як
інформаційною, так і функціональною. Цей опис відображає сутність будь-
якої організації, незалежно від її виду діяльності - чи це буде урядова
установа, банк, промислове підприємство, комерційна фірма.
Загальний погляд на організацію дозволяє сформулювати загальні
принципи створення корпоративних інформаційних систем, тобто
інформаційних систем на рівні всієї організації.
Корпоративною мережею вважається будь-яка мережа, яка
використовує протокол TCP/IP та інтегрує комунікаційні стандарти
Інтернету. Вона також використовує сервісні застосування для надання
користувачам мережі доступу до інформації. Наприклад, підприємство може
встановити сервер Web для оприлюднення оголошень, виробничих графіків
та інших службових документів, а службовці можуть отримати доступ до цих
8
документів через веб-браузери [1].
Сервери Web корпоративної мережі можуть надавати користувачам
послуги, аналогічні тим, які надаються в Інтернеті, такі як робота з
гіпертекстовими сторінками, надання ресурсів за запитами клієнтів Web та
доступ до баз даних. У цьому контексті всі служби публікації отримують
назву "Служби Інтернету", незалежно від того, де вони використовуються - в
Інтернеті чи корпоративній мережі.
Корпоративна мережа зазвичай є територіально розподіленою,
об'єднуючи офіси, підрозділи та інші структури, які можуть знаходитися на
великій відстані одна від одної. Принципи побудови корпоративної мережі
відрізняються від тих, що використовуються для локальної мережі, і це
принципове відмежування враховується під час проектування.
Створення корпоративної інформаційної системи включає кілька
ключових етапів:
1. Інформаційне обстеження організації. Проведення всебічного аналізу
інформаційних потреб та особливостей організації. Визначення вимог і
очікувань користувачів системи;
2. Вибір архітектури та апаратно-програмних засобів. На основі
результатів обстеження визначення оптимальної архітектури та вибір
необхідного апаратно-програмного забезпечення для ефективної
реалізації інформаційної системи;
3. Розробка ключових компонентів. Вибір або розробка ключових
елементів інформаційної системи, таких як бази даних, модулі обробки
даних, інтерфейси користувача тощо. Забезпечення їхньої сумісності та
відповідності вимогам організації;
4. Імплементація та тестування. Впровадження розроблених компонентів
в роботу, проведення системних і випробувальних тестів для перевірки
функціональності та надійності системи;
5. Навчання та впровадження. Організація навчання персоналу, який буде
використовувати систему. Поступове впровадження інформаційної
9
системи в роботу організації з мінімізацією впливу на робочі процеси;
6. Підтримка та оптимізація. Забезпечення постійної технічної підтримки
та вдосконалення системи відповідно до змін в потребах організації та
технологічних вимог.
Цей процес дозволяє створити ефективну та відповідальну
корпоративну інформаційну систему, яка відповідає унікальним потребам та
завданням конкретної організації.
Інформаційне обстеження є важливим етапом у впровадженні
інформаційної системи в організації. Мета цього процесу полягає в
ретельному вивченні потреб і завдань організації для забезпечення
оптимальної інформаційно-комунікаційної підтримки її основної та
допоміжної діяльності. Перед тим, як говорити про структуру та
функціональне наповнення інформаційної системи, необхідно чітко
зрозуміти цілі та завдання самої організації, щоб ефективно визначити обсяг
автоматизації.
Основні цілі інформаційного обстеження включають:
1. Формулювання та опис функцій кожного підрозділу компанії.
Визначення функцій та завдань кожного підрозділу, що сприяє
розумінню, що саме потрібно автоматизувати;
2. Опис технології роботи підрозділів і визначення об'єктів автоматизації.
Розуміння роботи кожного підрозділу та ідентифікація областей, які
можуть бути автоматизовані та оптимізовані;
3. Аналіз інформаційних потоків та їх взаємодії. Вивчення шляхів та
алгоритмів обробки вхідних, внутрішніх і вихідних документів для
уточнення інформаційних потреб компанії;
4. Створення моделей діяльності та інфраструктури компанії. Розробка
моделей, які відображають діяльність компанії та її інформаційну
інфраструктуру, що служить основою для подальшого проектування
корпоративної інформаційної системи.
Результатом інформаційного обстеження є комплексні моделі, які
10
враховують робочі процеси та інфраструктуру компанії. Ці моделі служать
основою для розробки проекту корпоративної інформаційної системи та
визначення вимог до програмно-апаратних засобів і специфікацій для
розробки відповідного програмного забезпечення, якщо це необхідно.
У сфері корпоративних систем рекомендовано використовувати
архітектуру клієнт/сервер. Ця архітектура забезпечує технологію доступу
кінцевого користувача до інформації в масштабах підприємства. Система
клієнт/сервер створює спільний інформаційний простір, в якому кінцевий
користувач отримує своєчасний та авторизований доступ до корпоративної
інформації.
Визначення системи управління базою даних є ключовим моментом у
розробці інформаційної системи. На ринку доступні практично всі перевірені
СУБД високого класу, такі як Oracle, Informix, Sybase, Ingres. Вибір
конкретної СУБД вирішується лише після проведення попереднього
обстеження та отримання інформаційних моделей діяльності [2]. Цей підхід
дозволяє врахувати унікальні потреби та характеристики організації для
оптимального вибору системи управління базою даних.
Ефективне управління документами, уникнення їх затримок, втрат,
дублювання та оптимізація переміщення в межах компанії є критично
важливим завданням для будь-якої організації. Отже, система автоматизації
документообігу, яка автоматизує ручні операції, автоматично відстежує та
контролює переміщення документів всередині корпорації, а також надає
контроль за виконанням завдань, пов'язаних з документами, стає однією з
ключових складових інформаційної системи.
З'явлення на ринку систем управління електронними документами
(EDMS - ElectronicDocumentManagementSystems) виникло з метою спростити
обіг паперових документів та частково зменшити труднощі, пов'язані з їхнім
зберіганням, пошуком та обробкою. У порівнянні з паперовими
документами, електронні документи забезпечують переваги у створенні,
спільному використанні, пошуку, розповсюдженні та зберіганні інформації.
11
Системи EDMS дозволяють ефективно організовувати зберігання
адміністративних та фінансових документів, факсів, технічної бібліотеки,
зображень та інших документів, що циркулюють в організації.
Кожна компанія має свою унікальну специфіку, визначену характером
її діяльності. Вибір спеціалізованих прикладних програмних засобів значно
залежить від цієї специфіки. Хоча стандартні програми, такі як текстові
редактори та електронні таблиці, необхідні для всіх компаній, специфічні
потреби вимагають використання спеціалізованих програм. Критерієм
вибору таких систем повинна бути їхня легка інтеграція в корпоративну
інформаційну систему.
Сервери утворюють мережу, яка дозволяє передавати інформацію в
корпоративному середовищі від одного користувача до іншого.
Корпоративна мережа може включати одну або більше організацій. Одна
організація може мати свої власні сервери, обслуговувати декілька серверів
або один сервер може обслуговувати декілька організацій. Можливі
різноманітні схеми, які можуть включати різні комбінації зазначених
випадків.
Мережа та система адресації в мережі відповідає рекомендаціям
протоколу X-400, особливо там, де вимагається підвищена надійність
передачі даних.
Для обміну повідомленнями між серверами та автоматизованими
робочими місцями використовується протокол TcpFoss. Для взаємодії між
сервером та інтерактивним клієнтом застосовується протокол CORBA, а для
взаємодії між сервером і веб-клієнтом використовується протокол HTTPS.
Топологія "Зірка" є однією з основних структур в комп'ютерних
мережах, де всі пристрої підключені до центрального вузла або
концентратора, приклад зображений на рисунку 1.1.
12
Рисунок 1.1. – Топологія мережі “Зірка”
У цій топології кожен пристрій (комп'ютер, сервер чи інший
мережевий пристрій) має окреме з'єднання з центральним вузлом.
Центральний вузол (концентратор або комутатор) виступає в ролі
центрального елемента, до якого підключаються всі інші пристрої в мережі.
Зіркова топологія є простою для встановлення та обслуговування. Додавання
чи вилучення пристроїв не впливає на решту мережі.
У випадку відмови одного пристрою, інші пристрої можуть
продовжувати працювати. Однак, якщо відмовить центральний вузол, вся
мережа може бути вимкнена.
Пропускна здатність мережі може бути обмеженою пропускною
здатністю центрального вузла. Вимагає багато кабелів для підключення
кожного пристрою до центрального вузла, що може збільшувати витрати на
кабелі. Ефективність мережі може залежати від працездатності центрального
вузла. Його відмова може призвести до припинення роботи всієї мережі [3].
Переваги полягають в тому, що робота одного вузла може вийти із
ладу, але це не вплине на функціонування всієї мережі. Вона продовжить
працювати, не порушуючи зв'язку з іншими вузлами. Точки підключення
розташовані в одному місці, що спрощує контроль та управління мережею.
Локалізація несправностей можлива шляхом відключення від центрального
вузла конкретних абонентів.
13
Недоліки полягають у високій вартості мережного устаткування.
Купівля концентратора може бути вартісною, що підвищує загальні витрати
на створення мережі. Можливості розширення кількості підключених вузлів
обмежуються кількістю портів у концентраторі. При досягненні цього
обмеження необхідно буде придбати додатковий мережевий обладнання.
Топологія мережі "Змішана" є комбінацією різних типів топологій для
створення більш гнучкої та оптимальної мережевої інфраструктури. У цьому
випадку використовуються елементи різних топологій, таких як зірка, кільце,
шина, дерево чи інші, схема зображена на рисунку 1.2.
Рисунок 1.2 – Топологія мережі "Змішана"
Змішана топологія надає можливість використання різних типів
топологій у відповідності з конкретними потребами та вимогами мережі.
Використання різних топологій дозволяє оптимізувати ресурси та
забезпечити кращу ефективність мережі в залежності від конкретних завдань.
Комбінування різних топологій може покращити надійність мережі,
оскільки вона може бути менш вразливою до відмов у порівнянні з однією
типовою топологією. Змішана топологія може вимагати більш складного
управління та конфігурації порівняно з простими типами топологій [4].
Користуючись перевагами різних топологій, можна забезпечити високу
пропускну здатність для певних сегментів мережі.
Реалізація змішаної топології може вимагати додаткових витрат та часу
14
порівняно з простішими топологіями.
Топологія мережі "Змішана" є ефективним рішенням для тих сценаріїв,
де різні вимоги вимагають різних типів мережевих структур.
Масштабування програмного забезпечення– це здатність програми
або системи ефективно зростати (збільшувати масштаб) для обробки більшої
кількості завдань чи об'ємів даних, зазвичай відповідно до зростання
навантаження або збільшення ресурсів.
Вертикальне масштабування (ScaleUp) – це стратегія масштабування
програмного забезпечення, яка передбачає збільшення продуктивності або
потужності окремого сервера чи вузла, щоб підвищити загальну ефективність
системи, зображено на рисунку 1.3. Цей підхід включає в себе оновлення
апаратних компонентів (наприклад, процесорів, оперативної пам'яті, сховища
даних) із збільшенням їх характеристик.
Рисунок 1.3 – Вертикальне масштабування (ScaleUp)
Збільшення продуктивності шляхом додавання більш потужних або
продуктивних компонентів до існуючого обладнання.
Вищі витрати пов'язані з одноразовим оновленням апаратного
забезпечення, яке може включати в себе встановлення нових процесорів чи
15
додаткової пам'яті.
З управлінської точки зору, вертикальне масштабування може бути
менш складним, оскільки всі обчислювальні ресурси об'єднуються в одному
вузлі.
Існує обмеження щодо того, наскільки потужньо може бути один
сервер. З часом може виникнути необхідність переходити до
горизонтального масштабування для подальшого збільшення потужності [5].
У випадку відмови центрального вузла може виникнути відмова всієї
системи. Тому необхідно приділяти увагу резервуванню та надійності
центрального вузла.
Вертикальне масштабування є ефективним для систем, які можуть
працювати зі збільшеною продуктивністю окремого сервера без необхідності
значних змін у програмному забезпеченні.
Горизонтальне масштабування (ScaleOut) – це стратегія масштабування
програмного забезпечення, яка передбачає збільшення продуктивності або
потужності системи шляхом додавання нових серверів або вузлів до існуючої
інфраструктури, зображено на рисунку 1.3.
Рисунок 1.4 – Горизонтальне масштабування (ScaleOut)
16
Цей підхід дозволяє розподілити навантаження між багатьма
серверами, щоб підтримувати зростаючу кількість користувачів або обсяги
даних [6].
Замість збільшення потужності одного сервера, горизонтальне
масштабування полягає в додаванні нових серверів, які можуть розподіляти
завдання між собою.
Дозволяє легко збільшувати обчислювальні ресурси, додавши нові
сервери за необхідності.
Забезпечує ефективне використання ресурсів, оскільки завдання може
бути розподілене між різними серверами.
Вимагає більш ефективного управління і контролю, оскільки існуюча
інфраструктура повинна бути синхронізована та узгоджена.
Забезпечує більш високий рівень відмовостійкості, оскільки відмова
одного сервера не призводить до відмови всієї системи.
Зазвичай є економічно вигіднішим, оскільки можна використовувати
доступне серверне обладнання та додавати нові сервери по мірі необхідності.
Горизонтальне масштабування особливо ефективне в сучасних
розподілених системах та хмарних обчисленнях, де динамічність та гнучкість
виконання завдань є ключовими факторами.
Автоматичне масштабування - це властивість системи або програмного
забезпечення автоматично адаптуватися до змін у вимогах чи навантаженні,
без необхідності втручання з боку адміністратора. Це дозволяє системі
ефективно пристосовуватися до коливань навантаження, забезпечуючи
оптимальне використання ресурсів і підтримуючи високу продуктивність.
Система автоматично розширює або скорочує обчислювальні ресурси в
залежності від поточного навантаження. Автоматичне налаштування
параметрів системи, таких як кількість серверів, обсяг пам'яті, потужність
обчислювальних вузлів тощо. Розподіл завдань між різними частинами
системи для забезпечення рівномірного навантаження на всі ресурси.
Система в режимі реального часу моніторить параметри роботи,
17
аналізує дані та виявляє потреби в збільшенні чи зменшенні ресурсів.
Система реагує на зміни в навантаженні, автоматично виконуючи дії з
масштабування для забезпечення оптимальної продуктивності. Використання
алгоритмів штучного інтелекту та машинного навчання для передбачення
змін у вимогах та адаптації системи до них.
Автоматичне масштабування є ключовим елементом сучасних
інфраструктур, особливо в хмарних середовищах, де динамічність та
ефективне використання ресурсів є критичними для успішного
функціонування.
Масштабування програмного забезпечення є важливим аспектом для
забезпечення ефективної роботи системи в умовах зростаючих обсягів даних
та користувацьких запитів. Це особливо важливо в сучасному середовищі, де
компанії та організації стикаються з постійним зростанням об'ємів інформації
та вимог до швидкості та доступності програм.
Розподілені обчислення– це парадигма обчислень, в якій завдання
розбиваються на підзадачі і виконуються паралельно на різних
обчислювальних ресурсах, які можуть бути розташовані в різних місцях та
пов'язані мережею. Головна ідея полягає в тому, щоб розподілити
навантаження обчислень між кількома вузлами для прискорення виконання
завдань.
Завдання розбиваються на менші підзадачі, які виконуються
паралельно. Це дозволяє одночасно обробляти більше даних та зменшує час
виконання.
Здатність системи розподілених обчислень зростати із збільшенням
кількості обчислювальних вузлів або завдань. Використання різних типів
обчислювальних ресурсів або пристроїв у складі системи. Здатність системи
продовжувати роботу навіть після відмови деяких її складових [7].
Необхідність ефективного обміну даними між різними вузлами
системи. Ефективне розподілення та керування обчислювальними ресурсами
для максимізації продуктивності.
18
Використання спеціалізованого програмного забезпечення або
фреймворків для реалізації розподілених обчислень. Розподілені обчислення
використовуються в різних областях, таких як наукові дослідження, обробка
великих обсягів даних, великомасштабні обчислення в хмарних середовищах
та інші, де потрібно ефективно використовувати обчислювальні ресурси.
1.2 Вибір напряму дослідження
Програмне забезпечення– це сукупність програм, процедур,
алгоритмів та даних, які забезпечують роботу комп'ютерної системи. Це
набір інструкцій, що визначають порядок виконання завдань комп'ютера,
спрямованих на досягнення певної мети або вирішення конкретної задачі.
Програмне забезпечення визначає роботу комп'ютера, надаючи інструкції та
сценарії для його функціонування. Цей термін охоплює різноманітні
програми та скрипти, які використовуються на персональних комп'ютерах,
мобільних телефонах, планшетах, ноутбуках та інших пристроях. Важливо
відрізняти програмне забезпечення від апаратного, яке представляє фізичні
компоненти комп'ютера, здатні виконувати роботу.
Без програмного забезпечення більшість комп'ютерів стало б
практично непридатними. Наприклад, веб-браузер є програмою, що дозволяє
користувачам отримати доступ до Інтернету. Операційна система (ОС)
служить інтерфейсом між іншими додатками та апаратним забезпеченням на
комп'ютері чи мобільному пристрої. Протокол TCP/IP вбудований у всі
основні операційні системи для сприяння комунікації комп'ютерів у великих
мережах. Без ОС або вбудованих протоколів стало б неможливо
користуватися веб-браузером.
Більшість програмного забезпечення розробляється на мовах
програмування високого рівня, оскільки вони ближчі до природної мови
людини, а не до машинного коду. Після написання високорівневого коду він
транслюється в машинний код за допомогою компілятора або інтерпретатора,
щоб комп'ютер міг ефективно виконувати ці інструкції.
19
На різних комп'ютерних платформах програмне забезпечення можна
класифікувати в декілька широких категорій, враховуючи його
функціональність. Зокрема, залежно від мети використання, комп'ютерне
програмне забезпечення можна розподілити на такі категорії:
Прикладне програмне забезпечення - цей тип програм використовує
систему для виконання конкретних завдань або забав, що перевищують
основні обов'язки комп'ютера. Споживачі можуть використовувати
прикладне програмне забезпечення для розваг, виконання конкретних
завдань або взаємодії з різноманітними функціями. Ця категорія включає
численні розробки, оскільки сучасне обладнання спроможне виконувати
широкий спектр завдань.
Системне програмне забезпечення безпосередньо управляє
комп'ютерним обладнанням, забезпечуючи базові функціональні можливості,
необхідні для користувачів та інших програм. Крім того, воно створює
платформу для запуску прикладного програмного забезпечення.
Операційні системи є ключовими компонентами, які управляють
ресурсами комп'ютера та надають загальні служби для інших програм, що
працюють на їх основі. Вони включають контрольні програми,
завантажувачі, оболонки та віконні системи. Операційні системи
забезпечують основну платформу для виконання різноманітних завдань.
На практиці операційні системи постачаються в комплекті з
додатковим програмним забезпеченням, включаючи прикладне, що дозволяє
користувачам виконувати різноманітні завдання з моменту встановлення
операційної системи.
Драйвери пристроїв відповідають за управління конкретними типами
пристроїв, які підключені до комп'ютера. Кожному пристрою потрібний
щонайменше один відповідний драйвер. Оскільки зазвичай комп'ютер
обладнаний щонайменше одним пристроєм введення та виведення, для нього
зазвичай необхідні драйвери різних типів.
20
Утиліти є програмами, призначеними для надання допомоги
користувачам у обслуговуванні та догляді за пристроями. Вони
використовуються для поліпшення функціоналу або оптимізації роботи
певного обладнання.
Щодо системного програмного забезпечення, до нього входять не лише
драйвери та утиліти, але й шкідливі програми, призначені для завдання
шкоди комп'ютерам. Розвиток такого програмного забезпечення тісно
пов'язаний із злочинами в галузі цифрових технологій. Важливо враховувати,
що користувачі не завжди можуть розпізнати наявність такого програмного
забезпечення на своїх пристроях. Класифікація системного програмного
забезпечення може бути доповнена різними спеціалізованими розробками.
Програмне забезпечення можна класифікувати залежно від його
призначення та області застосування. Серед цих категорій особливе місце
займають наступні:
Настільні додатки:
1. Розроблені для конкретної області застосування;
2. Найбільш численна категорія програмного забезпечення;
3. Прикладами є веб-браузери, Microsoft Office та різні сервіси для
смартфонів і планшетів;
4. Відзначається тенденцією поєднувати настільні додатки з мобільними,
що виявилося, наприклад, при розробці Windows 8 та пізніших версій
UbuntuTouch, де фахівці намагалися створити єдиний інтерфейс
програм для стаціонарних комп'ютерів, ноутбуків та мобільних
телефонів.
СкриптиJavaScript представляють собою спеціальне програмне
забезпечення, яке традиційно вбудоване в веб-сторінки і виконується
безпосередньо в браузері, без потреби у використанні плагінів. Зазначимо,
що інше програмне забезпечення, написане на інших мовах програмування,
також може бути запущена у веб-браузері, якщо його в перекладено в
21
JavaScript або встановлено розширення, яке підтримує цю мову. Прикладом є
сценарій ActionScript, який підтримується плагіномAdobeFlash.
Програмне забезпечення сервера зазвичай запускається на веб-сервері
та генерує динамічні веб-сторінки для браузерів. Це може бути реалізовано за
допомогою мов програмування, таких як PHP, Java, ASP.NET або навіть
JavaScript.
Плагіни і розширення є програмним забезпеченням, яке розширює або
змінює функціонал інших сервісів. Вони необхідні для підвищення або зміни
можливостей основної програми, при цьому вбудована є прошивкою,
спрямованою на виконання однієї або кількох додаткових цілей.
Класифікація програмного забезпечення охоплює інструменти
програмування, які можуть представляти собою сервіси і додатки,
використовувані розробниками для створення, налагодження,
обслуговування чи підтримки програмних продуктів.
Програмне забезпечення визначає можливості та функціональність
комп'ютерних систем та є ключовим елементом для виконання завдань
користувачів та оптимізації роботи обладнання.
Масштабовані системи грають важливу роль у сучасному світі, де
обсяги даних та користувацькі запити постійно зростають. Масштабування є
ключовим аспектом для забезпечення ефективності, продуктивності та
надійності інформаційних систем. Деякі приклади масштабованих систем, що
впроваджуються в різних галузях:
Системи хмарних обчислень (CloudComputing) представляють собою
модель надання ресурсів і послуг через Інтернет. Ця технологія дозволяє
отримувати доступ до обчислювальних потужностей, зберігання даних та
інших ресурсів без прямого фізичного володіння апаратного забезпечення.
Основні характеристики систем хмарних обчислень включають:
Користувачі можуть отримувати доступ до ресурсів (обчислювальна
потужність, зберігання, мережі тощо) через Інтернет на вимогу, без
необхідності фізичного розміщення обладнання [8].
22
Інфраструктура хмарних обчислень керується централізовано, що
дозволяє автоматизувати багато процесів, таких як масштабування ресурсів
чи резервне копіювання.
Користувачі можуть легко збільшувати або зменшувати свої
обчислювальні ресурси в залежності від потреб, забезпечуючи ефективне
використання ресурсів. Можуть самостійно налаштовувати та керувати
своїми ресурсами через веб-інтерфейси без прямого втручання
постачальника послуг.
Хмарні послуги надаються через мережу, що дозволяє отримувати
доступ до них з будь-якого місця, де є Інтернет. Існують різні моделі хмарних
обчислень, такі як Інфраструктура як сервіс (IaaS), Платформа як сервіс
(PaaS) та Програмне забезпечення як сервіс (SaaS), кожна з яких вирішує
певні потреби користувачів та бізнесів.
Сучасні платформи хмарних обчислень, такі як AmazonWebServices
(AWS), Microsoft Azure та GoogleCloudPlatform, надають компаніям
гнучкість та масштабованість, найбільш популярні зображені на рисунку 1.5.
Рисунок 1.5 – Сучасні платформи хмарних обчислень
23
Забезпечуючи віртуальні машини, зберігання та інші ресурси, вони
дозволяють підприємствам легко масштабувати свою інфраструктуру вгору
або вниз в залежності від потреб.
Соціальні мережі є відмінним прикладом масштабованих систем,
оскільки вони об'єднують велику кількість користувачів і забезпечують їм
можливість взаємодії та обміну інформацією. Сучасні соціальні мережі
мають величезну кількість активних користувачів. Найпопулярніші сервіси,
такі як Facebook,Instagram, Twitter, LinkedIn, об'єднують мільярди
користувачів з усього світу.
Користувачі соціальних мереж створюють і споживають величезний
обсяг контенту щоденно. Фотографії, відео, повідомлення, коментарі та інші
види інформації активно обмінюються в цих системах.
Соціальні мережі розвивають складні мережі взаємодії між
користувачами. Це включає підписки, дружбу, спільноти та інші форми
підключень, які масштабуються з ростом кількості користувачів.
Системи соціальних мереж надають гнучкість для користувачів у
виборі контенту, персоналізації своїх профілів та визначенні свого
соціального оточення. Для обробки великого обсягу даних і взаємодії
користувачів, соціальні мережі використовують масштабовані серверні
інфраструктури, які забезпечують надійність та доступність.
Системи соціальних мереж використовують складні алгоритми
рекомендацій для пропозиції користувачам контенту, який їм може бути
цікавим, забезпечуючи персоналізований досвід для кожного користувача.
Соціальні мережі постійно розширюють свої можливості та додають нові
функції відповідно до змін у вимогах користувачів та технологічних
можливостей.
Всі ці аспекти вказують на те, що соціальні мережі успішно
масштабуються для взаємодії з великою та постійно зростаючою кількістю
24
користувачів, забезпечуючи їм зручний та ефективний спосіб комунікації та
обміну інформацією.
Платформи електронної комерції представляють собою масштабовані
системи, які забезпечують онлайн-торгівлю та обробку транзакцій через
Інтернет. Платформи мають велику кількість торгових партнерів, таких як
продавці, покупці, постачальники та інші учасники, які взаємодіють на
платформі.
Ці платформи пропонують широкий вибір товарів і послуг, що
охоплює різні категорії і варіації, що вимагає масштабованої інфраструктури
для обробки різноманітності продуктів. Ведуть великий обсяг транзакцій,
оскільки користувачі здійснюють покупки, платежі та інші операції в режимі
реального часу.
З огляду на обробку платежів та особистої інформації користувачів,
платформи електронної комерції повинні забезпечувати високий рівень
безпеки та конфіденційності. Це включає в себе масштабовані системи
безпеки та шифрування даних.
Ефективна робота платформ електронної комерції вимагає
масштабованих систем логістики та управління запасами для ефективності
доставки товарів та відстеження запасів.
Масштабовані системи аналізу даних використовуються для надання
персоналізованих рекомендацій користувачам, що полегшує їхні покупки та
забезпечує зручний досвід.
Платформи забезпечують многовекторну взаємодію, включаючи
взаємодію між користувачами, продавцями, платіжними системами,
службами доставки та іншими сторонами.
Забезпечення високої доступності та швидкодії великої кількості
запитів вимагає масштабованих обчислювальних ресурсів, що можуть
включати серверні ферми, хмарні рішення та кешування.
Ці аспекти підкреслюють потребу у масштабованих технологіях та
інфраструктурі для забезпечення ефективного функціонування платформ
25
електронної комерції в умовах постійного зростання користувачів та обсягів
транзакцій.
Онлайн-ігри представляють собою масштабовані системи, які
об'єднують гравців з усього світу в інтерактивному віртуальному середовищі.
Вони вимагають потужної та надійної інфраструктури для забезпечення
плавної гри та взаємодії між учасниками. Зазвичай мають велику кількість
активних гравців, які одночасно взаємодіють у грі. Це може охоплювати
тисячі, мільйони чи навіть десятки мільйонів гравців, що вимагає високої
масштабованості серверної інфраструктури.
Багато онлайн-ігор працюють в режимі реального часу, де кожна дія
гравця повинна бути оброблена негайно. Це вимагає мінімальної затримки
(лагу) для забезпечення плавної гри та справжнього відчуття взаємодії.
Часто мають вражаючу графіку та великий обсяг контенту. Це вимагає
потужних графічних обчислювальних ресурсів для обробки та відтворення
великої кількості деталей. Системи баз даних повинні масштабуватися для
зберігання і управління великим обсягом гравців, їхніх досягнень, інвентарю
тощо.
З огляду на велику кількість гравців, онлайн-ігри повинні мати
масштабовані системи безпеки для захисту від шахрайства, чіткої
ідентифікації гравців та управління доступом.
Регулярні оновлення гри та додатковий контент вимагають ефективних
механізмів доставки та масштабованості для того, щоб уникнути перебоїв у
грі під час процесу оновлення.
Онлайн-ігри створюють великі спільноти гравців, які взаємодіють між
собою через чати, форуми, гільдії тощо. Це вимагає масштабованих
соціальних механізмів.
Загальною метою масштабованих систем онлайн-ігор є забезпечення
стабільної та задовільної гри для великої кількості гравців у будь-який час,
що потребує впровадження потужних інфраструктурних рішень та
технологій.
26
Фінансові системи є масштабованими системами, оскільки вони
обробляють великі обсяги фінансових транзакцій, надають послуги клієнтам
та використовують різноманітні технології для забезпечення ефективності та
безпеки. Фінансові системи опрацьовують мільйони та навіть мільярди
транзакцій щоденно. Це включає перекази коштів, операції з кредитними
картками, оплату рахунків, торгівлю цінними паперами та інші операції.
Фінансові системи повинні бути надійними і доступними 24/7. Вони
не можуть собі дозволити простої або неполадок, оскільки це може призвести
до фінансових втрат та негативного впливу на довіру клієнтів.
Вони зберігають та обробляють величезні обсяги чутливих даних
клієнтів, включаючи особисту інформацію, банківські рекорди та
транзакційні дані. Ефективне керування цими даними потребує потужних
систем зберігання та обробки.
Системи повинні дотримуватися високих стандартів безпеки та
відповідності, оскільки вони опрацьовують конфіденційну інформацію
клієнтів і здійснюють фінансові операції. Це включає застосування сучасних
технологій шифрування, захист від шахрайства та виконання вимог
регуляторів.
Вони надають послуги через різноманітні канали, такі як інтернет-
банкінг, мобільні додатки, банківські термінали тощо. Це вимагає інтеграції
та синхронізації між різними платформами та каналами обслуговування [9].
Фінансові інституції використовують аналітичні інструменти та
штучний інтелект для аналізу даних, виявлення шахрайства, ризик-аналізу та
персоналізованого обслуговування клієнтів.
Повинні бути відмовостійкими, щоб витримувати атаки, технічні
неполадки чи природні катастрофи, не призводячи до порушень
обслуговування.
Ці приклади відображають важливість масштабованості для
забезпечення ефективності та надійності в різних сферах технологій та
бізнесу.
27
1.3 Постановка задачі
У сучасному світі корпоративні комп'ютерні мережі постійно
зростають у масштабах, об'ємах даних та складності. Підтримка таких
великих і складних мереж потребує ефективних методів масштабування
програмного забезпечення (ПЗ) для забезпечення стабільності, безпеки та
продуктивності систем.
Масштабування програмного забезпечення (ПЗ) в корпоративних
комп'ютерних мережах визначається необхідністю ефективного вирішення
викликів, які виникають у зв'язку з постійним зростанням об'ємів даних,
комплексністю бізнес-процесів та збільшенням кількості користувачів.
Масштабування ПЗ дозволяє системі ефективно працювати в умовах
зростання об'ємів оброблюваної інформації та одночасного доступу багатьох
користувачів. Це забезпечує стабільність роботи системи і зменшує
ймовірність перебоїв у роботі.
Виростаючи в розмірах та складності, корпорації повинні швидко
реагувати на зміни в бізнес-середовищі. Гнучкі та масштабовані системи
дозволяють легко адаптуватися до нових вимог, впроваджувати інновації та
підтримувати конкурентоспроможність.
Завдяки масштабуванню можна ефективно використовувати ресурси,
уникати перевантаження окремих частин системи та забезпечити рівномірне
розподіл навантаження, що призводить до оптимізації роботи мережі.
Правильне масштабування може призвести до економії витрат,
оскільки розширення мережі не завжди пов'язане з необхідністю значних
витрат на нове обладнання чи програмне забезпечення.
Таким чином, масштабування програмного забезпечення стає
стратегічно важливим аспектом для підтримки сучасних корпоративних
комп'ютерних мереж і забезпечення їхньої ефективної та стійкої роботи в
умовах постійних змін і викликів.
Для дослідження методів масштабування програмного забезпечення у
великих корпоративних мережах може бути створено спеціальний сервіс,
28
який буде використовувати декілька серверів і надастьможливість аналізу
засобів комунікації в такому програмному забезпеченні.
Сервіс може мати різні модулі, які будуть розподіляти навантаження
між декількома серверами. Це може включати балансувальник навантаження,
який розподілить запити користувачів між серверами для забезпечення
оптимального навантаження кожного сервера.
Для вивчення засобів комунікації у програмному забезпеченні, сервіс
може включати модуль, який відображатиме та аналізуватиме взаємодію між
серверами. Це може бути система моніторингу, яка фіксує обмін
повідомленнями, час відправки та отримання, інформацію про задержки
тощо.
Для зручності вивчення результатів дослідження, сервіс може мати
інтерфейс, який надає зручну візуалізацію статистики, графіки часу відповіді
серверів, звіти про пропущені запити та іншу інформацію.
Такий сервіс дозволить вивчити та проаналізувати ефективність різних
методів масштабування ПЗ в умовах реального чи симульованого
середовища корпоративної мережі. Він дозволить спостерігати за взаємодією
серверів, оцінити швидкість реакції системи на зміни навантаження та
випробувати надійність та стійкість системи під час відмов і збоїв.
Для оцінки ефективності роботи створеного сервісу можна провести
порівняльний аналіз між односерверним і багатосерверним рішеннями. Це
дозволить визначити переваги та недоліки кожного підходу і зробити
висновки щодо оптимального методу масштабування.
Основні аспекти порівняння повинні включати:
1. Порівняння часу відповіді на запити від користувачів між
односерверним та багатосерверним рішеннями;
2. Визначення того, як кожна система реагує на збільшення об'єму роботи
та кількості користувачів;
3. Порівняння надійності та здатності кожної системи до відновлення
після можливих відмов або збоїв;
29
4. Вивчення ефективності використання ресурсів, таких як процесорний
час, пам'ять та мережевий трафік, в кожній системі;
5. Вивчення часу затримки та ефективності комунікації між серверами в
багатосерверній системі;
6. Оцінка фінансових витрат на впровадження та підтримку кожного
підходу.
Після проведення такого порівняльного аналізу можна зробити
обґрунтовані висновки щодо того, яке з рішень є більш відповідним для
конкретних вимог корпоративної мережі, з урахуванням її розміру, об'єму
даних та інших специфікацій.
1.4 Висновки до розділу 1
Під час аналізу існуючих систем досліджували корпоративні мережі,
масштабування програмного забезпечення та розподілені обчислення.
Корпоративні мережі виявилися ключовим елементом для комунікації в
організаціях. Масштабування програм дозволяє оптимізувати продуктивність
систем. Розподілені обчислення стали ефективним методом вирішення
складних завдань. Дослідження визначило основні аспекти для подальших
досліджень і вдосконалення сучасних ІТ-систем.
Відповідно до постановки задачі в роботі було поставлено головною
ціллю створити спеціальний сервіс, який буде використовувати декілька
серверів і надаватиме можливість аналізу засобів комунікації в програмному
забезпеченнівеликих корпоративних мереж.
30
РОЗДІЛ 2 ВИБІР ТЕХНОЛОГІЇ ТА ІНСТРУМЕНТАЛЬНИХ ЗАСОБІВ
РОЗРОБКИ СИСТЕМИ
2.1 Огляд існуючих технологій
Архітектура програмного забезпечення – це спосіб структурування
програмної або обчислювальної системи, який включає абстракцію елементів
системи на певній фазі її роботи. Головна мета архітектури полягає в тому,
щоб оптимально відповідати вимогам до системи, згідно з принципом
"форма відповідає функції".
Проектування архітектури програмного забезпечення відбувається
після етапу аналізу і формулювання вимог. На цьому етапі вимоги до
системи перетворюються у вимоги до програмного забезпечення, а потім
будується архітектура системи. Цей процес включає визначення цілей
системи, вхідних і вихідних даних, декомпозицію на підсистеми, компоненти
або модулі та розроблення загальної структури. Проектування архітектури
може виконуватися різними методами, такими як стандартизований,
об’єктно-орієнтований, компонентний тощо.
Архітектура програмного забезпечення включає різні види, аналогічні
різним типам креслень в будівництві. В онтології, встановленій ANSI/IEEE
1471-2000, види є екземплярами точок зору, які існують для опису
архітектури з певної множини зацікавлених осіб [10].
Архітектурний вигляд системи складається з двох основних
компонентів:
1. Елементи. Це базові будівельні блоки системи, які можуть бути
програмними модулями або компонентами.
2. Відносини між елементами. Це способи взаємодії та зв'язку між
різними елементами системи.
Архітектурні види можна класифікувати на три основні типи:
31
1. Модульні види (Moduleviews). Показують систему як структуру з
різних програмних блоків або модулів.
2. Компоненти і конектори (Component-and-connectorviews).
Відображають систему як структуру з паралельно запущених елементів
(компонентів) та способів їх взаємодії (конекторів).
3. Розміщення (Allocationviews). Показують розташування
елементів системи в зовнішніх середовищах чи ресурсах.
Ці види допомагають відобразити різні аспекти архітектури системи,
надаючи повнішу картину її структури та взаємодії.
Приклади модульних видів:
1. Декомпозиція (Decompositionview). Складається з модулів у
контексті відносини "є подмодулей".
2. Використання (Usesview). Складається з модулів у контексті
відносини "використовує", де один модуль використовує сервіси іншого
модуля.
3. Вид рівнів (Layeredview). Показує структуру, в якій пов'язані за
функціональністю модулі об'єднані в групи (рівні).
4. Вид класів/узагальнень (Class/generalizationview). Складається з
класів, пов'язаних відносинами "успадковується від" і "є екземпляром".
Приклади видів компонентів-і-конекторів:
1. Процесний вид (Processview). Складається з процесів, з'єднаних
операціями комунікації, синхронізації і/або виключення.
2. Паралельний вид (Concurrencyview). Складається з компонентів і
конекторів, де коннектори представляють собою "логічні потоки".
3. Вид обміну даними (Shared-data (repository) view). Складається з
компонентів і конекторів, які створюють, зберігають і отримують постійні
дані.
4. Вид клієнт-сервер (Client-serverview). Складається з
взаємодіючих клієнтів і серверів, а також конекторів між ними (наприклад,
протоколів і спільних повідомлень).
32
Приклади видів розміщення:
1. Розгортання (Deploymentview). Складається з програмних
елементів, їх розміщення на фізичних носіях і комунікаційних елементів.
2. Впровадження (Implementationview). Складається з програмних
елементів і їх відповідності файловим структурам в різних середовищах
(розробницького, інтеграційної тощо).
3. Розподіл роботи (Workassignmentview). Складається з модулів і
опису того, хто відповідальний за впровадження кожного з них.
Існує кілька мов для опису архітектури програмного забезпечення,
проте наразі немає загальної згоди щодо прийняття конкретного набору видів
як еталонного. Для моделювання програмних систем, в тому числі, була
створена мова UML як стандарт [11]. Для досягнення високої якості
проектованої системи використовують різні архітектурні шаблони, або
патерни, кожен з яких має свої завдання і недоліки.
Приклади архітектурних шаблонів:
Багаторівневий шаблон (Layeredpattern). Система розбивається на рівні,
представлені на діаграмі один над іншим. Кожен рівень може взаємодіяти
лише з рівнем, що знаходиться нижче, зображений на рисунку 2.1.
Рисунок 2.1 – Багаторівневий шаблон (Layeredpattern)
33
Це дозволяє розробляти кожен рівень відносно незалежно, підвищуючи
модифікованість системи. Однак цей підхід може призвести до ускладнення
системи і зниження продуктивності.
Шаблон посередника (Brokerpattern). Використовується, коли велика
кількість модулів взаємодіє між собою. Вводиться посередник (наприклад,
шина даних), через який модулі взаємодіють. Це полегшує функціональну
сумісність модулів, але може знизити продуктивність та стати вузьким
місцем системи.
Клієнт-серверний шаблон (Client-Server pattern). Використовується,
коли є обмежені ресурси та потрібно обмежити доступ до них, зображений на
рисунку 2.2.
Рисунок 2.2 – Клієнт-серверний шаблон (Client-Server pattern)
Підвищує масштабованість і доступність системи, але може зробити
сервер вузьким місцем та зробити систему недоступною при його
відсутності.
Шаблон «Модель-Представлення-Контролер» (Model-View-
Controllerpattern– MVC). Розділяє систему на три основні компоненти:
Модель, що зберігає дані; Представлення, яке відображає частину даних і
взаємодіє з користувачем; та Контролер, який служить посередником між
моделлю і представленням, зображений на рисунку 2.3.
34
Рисунок 2.3 – Шаблон «Модель-Представлення-Контролер»
Цей шаблон дозволяє змінювати інтерфейси та розробляти різні їх
варіації, але може призвести до ускладнення взаємодії та зниження
швидкості роботи системи.
MVC архітектура дозволяє розділити код програми на три частини:
Модель (Model), Представлення або Вид (View), і Контролер (Controller).
Вперше вона була розроблена в 1978 році для графічних інтерфейсів, але
згодом була адаптована для веб-додатків [12].
Розподіл коду на окремі частини відкриває можливості для спрощення
та полегшення роботи з обсяжними програмами. Написання великого
скрипту ускладнює розуміння його структури та унеможливлює вносити
зміни, не ризикуючи допустити помилки.
Модель-Вид-Контролер (MVC) не залежить від конкретного мови
програмування і не обов'язково використовує об'єктно-орієнтоване
програмування чи інші конкретні парадигми. Сегментація коду тут не
обов'язково передбачає, що у коді повинно бути рівно три файли (або три
папки з файлами, чи три класи) з назвами "model," "view," і "controller." MVC
не накладає обмежень на організацію файлів з кодом. Зазвичай модель
займає основну частину додатку і представлена великою кількістю
35
різноманітних класів, таких як сутності, сервіси та класи для роботи з базою
даних, і для кожного виду класів створюються окремі каталоги.
MVC застосовна до різних типів додатків, включаючи веб-додатки,
серверні та клієнтські (десктопні) додатки. Веб-додаток отримує один запит
від користувача, обробляє його та виводить результат, завершуючи свою
роботу. У випадку нового запиту буде створено нову, незалежну копію
програми для його обробки. На відміну від цього, десктопні та мобільні
додатки, а також додатки, написані на JavaScript і працюють на сторінці
браузера, мають більший термін служби. Вони обробляють багато запитів
користувача та оновлюють інформацію на екрані, не завершуючи свою
роботу.
Модель містить всю логіку додатка та відповідає за зберігання та
обробку даних, не взаємодіючи при цьому безпосередньо з користувачем.
Наприклад, збереження інформації в базі даних та перевірка введених в
форму даних — це завдання Моделі. Однак отримання цих даних від
користувача, відображення інформації на екрані та обробка натискань кнопок
відносяться до інших частин архітектури.
Шаблони проектування (DesignPatterns)– це референції архітектурні
рішення для типових проблем, які можна зустріти при розробці програмного
забезпечення. Вони представляють собою визначені абстракції, які сприяють
ефективному розв'язанню конкретних завдань та спрощують повторне
використання коду.
Шаблони проектування дозволяють стандартизувати ефективні
рішення для типових проблем, що виникають при розробці програмного
забезпечення.
Вони сприяють повторному використанню коду, оскільки надають
готові архітектурні концепції та шаблони, які можна використовувати у
різних проектах. Шаблони відображають кращі практики та досвід розробки,
допомагаючи командам розробників уникати загальних помилок.
36
Часто в системі можуть існувати об'єкти, які повинні мати лише один
екземпляр, наприклад, система ведення системного журналу повідомлень або
водій відображення. У таких випадках необхідно вміти створювати єдиний
екземпляр певного типу, надавати до нього доступ ззовні та забороняти
створення кількох екземплярів того ж типу.
Популярні Шаблони Проектування:
Архітектура паттернаSingleton базується на ідеї використання
глобальної змінної, яка має такі важливі властивості:
1. Така змінна доступна завжди. Час життя глобальної змінної - від
запуску програми до її завершення;
2. Забезпечує глобальний доступ, тобто така змінна може бути
доступна з будь-якої частини програми.
Однак використання глобальної змінної певного типу прямо
неможливе, оскільки існує проблема забезпечення єдиності екземпляра, а
саме, можливість створення кількох змінних того самого типу (наприклад,
стекових).
Для вирішення цієї проблеми паттернSingleton покладає контроль над
створенням єдиного об'єкта на сам клас. Доступ до цього об'єкта
здійснюється через статичний метод-член класу, який повертає вказівник або
посилання на нього. Цей об'єкт буде створений лише при першому виклику
методу, і всі наступні виклики просто повертають його адресу. Для
забезпечення унікальності об'єкта конструктори та оператор присвоювання
оголошуються закритими. UML-діаграма класів паттернаSingleton зображена
на рисунку 2.4.
Рисунок 2.4 – UML-діаграма класів паттернаSingleton
37
Переваги патерна Singleton:
1. Клас самостійно контролює процес створення єдиного екземпляра;
2. Легко адаптується для створення необхідної кількості екземплярів;
3. Можливість створення об'єктів класів, які успадковують від Singleton.
Недоліки патерна Singleton полягає, що при використанні декількох
взаємозалежних одиничок їхня реалізація може значно ускладнитися.
Патерн FactoryMethod (фабричний метод) застосовується у системах,
де потрібно створювати об'єкти різних типів. Він є корисним для вирішення
таких задач:
1. Розширюваність системи. Система повинна залишатися
розширюваною шляхом додавання об'єктів нових типів. Використання
прямого створення об'єктів (`new`) неприпустиме, оскільки це може
призвести до розкидання коду створення об'єктів по всьому додатку.
ПатернFactoryMethod дозволяє системі залишатися незалежною як від
процесу створення об'єктів, так і від їхніх типів;
2. Відомий момент створення, але невідомий тип. Є випадки, коли
потрібно створити об'єкт, але не відомий його тип. ПатернFactoryMethod
вирішує цю проблему.
Для забезпечення незалежності системи від різних типів об'єктів,
патерн Factory Method використовує поліморфізм. Усі класи конкретних
типів успадковують від одного абстрактного базового класу, який
призначений для поліморфного використання. У цьому базовому класі
визначається єдиний інтерфейс, через який користувач буде взаємодіяти з
об'єктами конкретних типів.
Щоб спростити додавання нових типів об'єктів, пат терн Factory
Method концентрує процес створення конкретних об'єктів у спеціальному
класі-фабриці [13]. Методи цього класу, за допомогою яких створюються
об'єкти конкретних класів, називаються фабричними методами. Існують дві
варіації партерна Factory Method:
38
1. Загальний конструктор. У тому ж самому поліморфному
базовому класі, від якого успадковують похідні класи всіх створюваних в
системі типів, визначається статичний фабричний метод. В якості параметра
до цього методу передається ідентифікатор типу створеного об'єкта. UML-
діаграма класів для партерна Factory Method, загальний конструктор,
зображений на рисунку 2.5.
Рисунок 2.5 – UML-діаграма класів для паттернаFactoryMethod
2. Традиційний варіант фабричного методу, коли інтерфейс
фабричних методів визначається в самостійному класі-фабриці, а їх
реалізація визначається конкретними підкласами цього класу. UML-діаграма
класів для патернаFactoryMethod зображена на рисунку 2.6.
Рисунок 2.6 – UML-діаграма класів
39
Переваги партерна Factory Method полягав у тому, що він забезпечує
створення об'єктів різних типів, дозволяючи системі залишатися незалежною
від самого процесу створення і типів створюваних об'єктів.
Недоліки полягають у випадку класичної реалізації паттерна, навіть
для створення єдиного об'єкта, необхідно створювати відповідну фабрику.
Паттерн Observer визначає залежність "один-до-багатьох" між
об'єктами так, що при зміні стану одного об'єкта всі залежні від нього об'єкти
отримують сповіщення та оновлюються автоматично. Цей паттерн належить
до категорії патернів поведінки.
Паттерн Observer визначає об'єкт Subject, який зберігає дані (модель), і
всю функціональність "видів" делегує слабко зв'язаним окремим об'єктам
Observer. При створенні спостерігачів Observer реєструються у об'єкта
Subject. Коли об'єкт Subject змінюється, він повідомляє про це всіх
зареєстрованих спостерігачів. Після цього кожен спостерігач запитує у
об'єкта Subject ту частину стану, яка потрібна для відображення даних.
UML-діаграма класів паттернаObserver зображена на рисунку 2.7.
Рисунок 2.7 – UML-діаграма класів партерна Observer
Така схема дозволяє динамічно налаштовувати кількість та "типи"
представлень об'єктів [14].
40
Вищезазначений протокол взаємодії відповідає моделі витягування
(pull), коли Subject інформує спостерігачів про свою зміну, і кожен
спостерігач відповідає за "витягування" від Subject потрібних для нього
даних. Існує також модель тиску, коли Subject відправляє спостерігачам
детальну інформацію про свою зміну.
Паттерн Builder визначає механізм конструювання об'єкта так, щоб
його представлення могло варіюватися. Цей паттерн дозволяє клієнту
створювати складні об'єкти, складаючи їх з простіших частин.
Існуюча система складається з багатьох об'єктів, і процес їх створення
повинен бути гнучким та розширеним. Паттерн Builder розриває процес
конструювання об'єкта на окремі етапи, дозволяючи змінювати та додавати
нові частини об'єкта незалежно одна від одної.
В основі партерна Builder лежить створення об'єкта через послідовне
викликання різних методів конструювання. Директор визначає порядок та
послідовність викликів, а Builder відповідає за реалізацію кожного окремого
етапу конструювання.
Переваги партерна Builder в тому, що дозволяє змінювати
представлення об'єкта та додає нові функціональності без зміни його
клієнтського коду. Директор контролює послідовність та умови
конструювання об'єкта.
Недоліки партерна Builder полягає в тому, що іноді виникає
необхідність створення великої кількості класів для підтримки різних
варіацій об'єкта. Клієнтський код може бути складнішим, оскільки потрібно
користуватися об'єктами Builder та Director для конструювання об'єктів.
Паттерн Decorator визначає спосіб динамічного приєднання
додаткових обов'язків до об'єкта. Цей паттерн дозволяє розширювати
функціональність об'єкта, додаючи нові можливості, без необхідності
створення підкласів.
Коли необхідно додавати нові обов'язки об'єктам динамічно, і коли
успадкування не є прийнятним варіантом.
41
У паттерні Decorator використовується ієрархія класів, що дозволяє
приєднувати нові обов'язки до об'єкта на виконанні. Базовий клас, або
компонент, визначає основну функціональність, а декоратори додають або
модифікують цю функціональність. Декоратори є вкладеними, що дозволяє
комбінувати їх у будь-якому порядку.
Переваги патерна Decorator в тому, що дозволяє динамічно додавати
або змінювати функціональність об'єкта. Кожен декоратор зберігає інтерфейс
базового класу, що дозволяє їм бути взаємозамінними.
Недоліки патерна Decorator в тому, що може призвести до великої
кількості класів, які важко управляти. Клієнтський код може стати
складнішим через багатошарову структуру декораторів.
Патерн Strategy визначає сімейство алгоритмів, розміщує кожен з них
у власному класі і робить їх взаємозамінними. Стратегія дозволяє об'єктові
Коли вам потрібно мати можливість обирати алгоритм взаємодії
об'єкта на льоту. Коли вам потрібно замінювати алгоритми взаємодії в
об'єкта без зміни його структури.
У патерні Strategy алгоритм визначається у власному класі, що
називається стратегією. Контекст включає у себе посилання на об'єкт
стратегії та може змінювати його на льоту. Клієнтський код прив'язаний до
інтерфейсу стратегії, що дозволяє легко додавати нові стратегії [15].
Переваги патерна Strategy в тому, що легко додається нова стратегія, не
змінюючи коду контексту. Можливість винесення різних аспектів
функціональності в окремі класи.
Недоліки партерна Strategy в тому, що може призвести до великої
кількості класів, які потрібно керувати.
2.2 Вибір технологій
Вибір правильних технологій перед початком розробки системи є
ключовим етапом, який може суттєво вплинути на успіх проекту та його
подальшу життєздатність. Різні технології інтегруються краще для вирішення
42
конкретних завдань. Правильний вибір дозволяє оптимально врахувати
потреби проекту і забезпечити ефективне використання ресурсів.
Врахування масштабованості системи є важливим елементом вибору
технологій. Якщо проект планується для подальшого росту, обрані технології
повинні бути готові до масштабування, забезпечуючи ефективність при
збільшенні об'ємів даних чи користувачів.
Деякі технології відомі своєю високою рівнем безпеки та надійності. В
залежності від специфіки проекту може бути важливо вибрати технології, які
відповідають вимогам щодо захисту даних та стійкості до відмов.
Деякі технології дозволяють швидше розробляти та впроваджувати
новий функціонал, а також забезпечують зручні інструменти для підтримки.
Важливо збалансувати між швидкістю розробки та подальшою підтримкою
системи.
Врахування вартості розробки та підтримки проекту є ключовим.
Обрані технології повинні бути доступними з точки зору вартості, і їх
використання повинно бути економічно обґрунтованим. Правильний вибір
технологій враховує ці аспекти та інші конкретні потреби проекту, що
дозволяє оптимізувати розробку, підтримку та подальший розвиток системи.
Для дослідження теми кваліфікаційної роботи буде розроблено систему
генерації звітів, яка буде комплексною платформою, що об'єднує різні
сервіси для збору, обробки та аналізу даних, необхідних для створення звітів
у компанії. Вона буде складатися з низки мікросервісів, кожен з яких
відповідає за конкретний аспект бізнес-процесу.
Центральний сервіс генерації звітів використовує дані, які надходять
від інших мікросервісів, таких як управління персоналом, фінансовий облік
та структура департаментів. Кожен з цих сервісів має свою власну
функціональність та базу даних, які інтегруються для формування
повноцінної інформаційної основи для звітності.
Мікросервісна архітектура – це підхід до розробки програмного
забезпечення, де програма будується як набір невеликих, незалежних
43
сервісів, які функціонують разом та взаємодіють між собою за допомогою
API (інтерфейсів програмування додатків).
Кожен мікросервіс виконує обмежену функціональність і має власну
базу коду, базу даних та може бути розгорнутий окремо. Цей підхід дозволяє
розбити складні системи на менші, легше керовані компоненти, що спрощує
розвиток, розгортання та підтримку системи в цілому.
Основні особливості мікросервісної архітектури:
1. Кожен сервіс може бути розроблений, оновлений, масштабований та
виправлений окремо від інших;
2. Дозволяє розробникам використовувати різні технології та мови
програмування для кожного сервісу відповідно до його потреб;
3. Можливість масштабувати лише конкретні сервіси, які потребують
більше ресурсів, замість масштабування всієї системи;
4. Зменшує залежності між різними частинами системи, спрощуючи
розвиток, тестування та підтримку;
5. Виходження з ладу одного сервісу не призводить до недоступності
всієї системи, а лише тільки функціоналу, який цей сервіс надавав.
Мікросервісна архітектура дозволяє більш ефективно будувати складні
системи, зменшує залежності між компонентами та полегшує їх розвиток і
підтримку.
Система, яка буде розроблена, дозволить здійснювати аналіз ключових
метрик, візуалізувати дані та формувати звіти, необхідні для прийняття
стратегічних рішень у компанії. Користувачі отримують доступ до звітів з
різних аспектів діяльності, що допомагає їм отримувати повну картину
бізнесу для прийняття інформованих рішень.
Вибір мікросервісної архітектури має кілька переваг, які сприяють
покращенню процесу розробки програмного забезпечення. Мікросервіси
функціонують як окремі модулі, що спрощує розробку, оновлення та
тестування. Кожен сервіс може бути розгорнутий, оновлений або
виправлений незалежно від інших, зменшуючи вплив змін на всю систему.
44
Розробники можуть використовувати різні технології для кожного
сервісу відповідно до його потреб. Це дозволяє використовувати найкращі
інструменти та мови програмування для кожного конкретного випадку.
Мікросервіси дають можливість масштабувати лише ті компоненти
системи, які потребують більше ресурсів або обсягу, замість масштабування
всієї системи. Це спрощує роботу з обробкою великих обсягів даних або
великих навантажень.
Розділення системи на невеликі компоненти полегшує розвиток та
тестування окремих частин. Це дозволяє швидше впроваджувати новий
функціонал та вносити зміни без впливу на решту системи.
Якщо один сервіс вийде з ладу, інші можуть продовжувати працювати,
що забезпечує часткову доступність системи. Це покращує стійкість та
надійність системи в цілому.
Отже, мікросервісна архітектура сприяє більшій гнучкості, швидкості
розробки, ефективному використанню ресурсів та зменшенню ризику відмов
у системі, що робить її привабливою для розробки програмного
забезпечення.
Вибір мови програмування є ключовим аспектом при розробці
мікросервісів через кілька важливих причин. Різні мови програмування
мають свої особливості та набір функцій. Деякі мови можуть бути більш
підходящими для конкретних завдань або функцій, що виконує сервіс.
Наприклад, для обробки великих обсягів даних може бути корисною мова з
високою швидкістю обробки, така як Go або Rust.
Деякі мови можуть забезпечити кращу продуктивність та швидкість
виконання в порівнянні з іншими. Це може бути критичним для
мікросервісів, які працюють з великими обсягами даних або потребують
високої продуктивності.
Важливо враховувати наявність бібліотек, фреймворків та інших
інструментів для певної мови програмування. Спільнота розробників, яка
підтримує мову, може надати різноманітні корисні інструменти та рішення.
45
Деякі мови мають вбудовані функції або концепції, які полегшують
розробку певних типів програм. Наприклад, Python чи JavaScript мають
зручну синтаксичну структуру, що полегшує створення інтерфейсів та
взаємодію з API.
Деякі мови мають вбудовану підтримку для відмовостійкості та
масштабованості. Наприклад, Erlang має механізми, що сприяють високій
доступності сервісів.
Обрання правильної мови програмування для мікросервісної
архітектури допоможе забезпечити оптимальну продуктивність, ефективність
та масштабованість сервісів.
Обираючи мову програмування для розробки мікросервісів, важливо
враховувати знання та експертиза розробника. Розробники, які володіють
деякою мовою програмування, можуть бути більш ефективними та
продуктивними в її використанні. Вони зможуть швидше розробляти та
удосконалювати сервіси, оскільки вже мають досвід у роботі з цією мовою.
Розробник, який вже знайомий з екосистемою та інструментами певної
мови, може ефективніше використовувати їх у процесі розробки. Це означає
кращу розуміння інструментів для відлагодження, тестування, аналізу коду
та інших аспектів розробки.
Розробник, який вже володіє певною мовою, може швидше реалізувати
новий функціонал чи внести зміни в сервіс, оскільки не потребується час на
вивчення нової мови.
Обрання мови, з якою розробник вже знайомий, дозволяє йому
продовжувати покращувати свої навички у цій області та вивчати нові
концепції, що можуть бути корисними у майбутніх проектах.
У кінцевому підсумку, обрання мови програмування, засноване на
знаннях та досвіді розробника, може сприяти більшій продуктивності,
ефективності та швидкості розробки мікросервісів.
Мова програмування C# має кілька особливостей, які роблять її досить
гарним вибором для розробки системи на базі мікросервісної архітектури. C#
46
використовується в екосистемі .NET, що має різноманітні фреймворки,
бібліотеки та інструменти для розробки мікросервісів. Наприклад, ASP.NET
Core надає зручний інструментарій для створення та керування
мікросервісами [16].
C# відома своєю продуктивністю та швидкодією, що є важливими
факторами для систем, які обробляють великі обсяги даних або мають високу
навантаженість.
Системи, побудовані на C#, зазвичай мають високий рівень безпеки та
надійності. Це важливо для систем, які обробляють чутливі дані або мають
важливий бізнес-контекст.
C# має активну спільноту розробників, а також підтримку від Microsoft,
що означає багато інструментів, ресурсів та документації для розвитку та
підтримки систем на цій мові.
Засоби та фреймворки, доступні для C# і .NET, часто надають зручні
механізми для побудови та управління мікросервісами, спрощуючи їхню
розробку та розгортання. Отже, мова програмування C# може бути відмінним
вибором для розробки системи на базі мікросервісної архітектури через свою
продуктивність, безпеку, широкий спектр інструментів та підтримку
спільноти.
Визначення способу комунікації між мікросервісами є критично
важливим етапом при розробці системи на основі мікросервісної архітектури
з кількох причин. Ефективний спосіб комунікації дозволяє кожному
мікросервісу виконувати свою специфічну функцію, не залежачи від
реалізації інших сервісів. Це сприяє відокремленості функціональності та
забезпечує більшу гнучкість системи.
Добре розроблений спосіб комунікації дозволяє системі функціонувати
стабільно в умовах неполадок або відмов окремих сервісів. Наприклад,
використання асинхронних повідомлень може забезпечити більшу стійкість
до збоїв в мережі.
47
Вибір оптимального механізму комунікації може позитивно
позначитися на продуктивності системи. Наприклад, використання легких та
ефективних протоколів обміну даними може сприяти швидкодії системи.
Ефективна комунікація між мікросервісами дозволяє легко
масштабувати окремі компоненти системи, які потребують більше ресурсів
або обробки, без необхідності масштабування всієї системи.
Важливо визначити, як мікросервіси будуть обмінюватися даними та
спілкуватися один з одним. Це може бути синхронна або асинхронна
комунікація через HTTP, використання черг повідомлень, REST або
GraphQL і т.д.
Спосіб комунікації через HTTP може бути ідеальним для деяких систем
на основі мікросервісної архітектури. HTTP є стандартним протоколом для
комунікації в мережі, що робить його універсальним і підтримуваним
багатьма мовами програмування та фреймворками [17]. Це спрощує
інтеграцію та обмін даними між мікросервісами.
Багато мов програмування мають добре підтримувані бібліотеки та
фреймворки для роботи з HTTP. Це дозволяє розробникам легко створювати,
вдосконалювати та тестувати сервіси, що використовують цей протокол.
HTTP відомий своєю простотою використання та розуміння. Взаємодія
через HTTP зазвичай ґрунтується на простих запитах та відповідях, що
полегшує розробку, тестування та збереження коду.
HTTP ідеально підходить для реалізації RESTful сервісів, що дозволяє
побудувати систему з чіткою структурою ресурсів, яку легко розширювати та
підтримувати.
HTTP може бути використаний як для синхронної, так і для
асинхронної комунікації між мікросервісами, забезпечуючи гнучкість у
виборі способу обміну даними залежно від вимог системи.
Хоча даний спосіб комунікації має свої переваги, важливо враховувати
специфічні потреби конкретної системи, такі як швидкість, безпека та обсяг
48
обміну даними, і вибрати спосіб комунікації, який краще відповідає вимогам
проекту.
Незважаючи на те, що всі мікросервіси знаходяться в приватній
корпоративній мережі, використання HTTPS (зашифрований протокол HTTP)
все ще може бути важливим. Навіть у внутрішній мережі існує можливість
загрози зсередини. HTTPS забезпечує шифрування даних, яке допомагає
захистити інформацію від несанкціонованого доступу та модифікацій.
HTTPS дозволяє перевірити автентичність мікросервісів та їх
ідентифікацію, що допомагає уникнути можливості атак типу "людина
посередньої відправки" (Man-in-the-Middle).
Використання HTTPS відповідає стандартам безпеки і може бути
вимогою в різних галузевих регуляторних або стандартизованих вимогах.
HTTPS захищає дані від перехоплення та змін, що може бути критично
важливим для конфіденційної інформації.
Хоча внутрішня мережа може здаватися безпечною, використання
HTTPS є додатковим шаром захисту, який може запобігти можливим
загрозам та зберегти цілісність даних у системі мікросервісів.
Обираючи базу даних для кожного мікросервісу, важливо враховувати
кілька ключових аспектів. Різні сервіси можуть працювати з різними типами
даних та мати різні потреби у моделях даних. Наприклад, для сервісу, який
обробляє великі обсяги даних, може бути кращим вибором NoSQL база
даних, тоді як для сервісу, який вимагає зв'язків між даними, може підходити
реляційна база даних.
Різні бази даних мають різні можливості масштабування. Якщо сервіс
потребує великої масштабованості та високої доступності, обрана база даних
повинна бути готова до роботи у розподіленому середовищі.
Деякі бази даних можуть забезпечити кращу продуктивність для
певних операцій чи типів запитів. Наприклад, деякі NoSQL бази даних добре
підходять для швидкого зчитування великих обсягів даних.
49
Важливо враховувати, як база даних забезпечує консистентність даних
та їх цілісність, особливо у випадках взаємодії між різними сервісами.
Різні бази даних мають різні екосистеми, інструменти та підтримку.
Важливо враховувати наявність підтримки, інструментів для моніторингу,
резервного копіювання та інших функцій для зручності розробки та
підтримки.
Обираючи правильну базу даних для кожного мікросервісу, можна
забезпечити оптимальну продуктивність, масштабованість та ефективність
роботи системи в цілому.
MariaDB – це дуже потужна та популярна реляційна база даних, яка
може бути добрим вибором для певних сервісів у системі мікросервісів.
MariaDB базується на відкритому коді і є форком MySQL [18]. Це означає,
що MariaDB зберігає велику частину синтаксису та функціональності
MySQL, що полегшує перехід для користувачів MySQL та робить MariaDB
зрозумілим та доступним.
MariaDB відома своєю швидкодією та високою продуктивністю. Вона
має оптимізовані механізми обробки даних, які дозволяють ефективно
працювати з великими обсягами даних.
Як і MariaDB, розробка проекту на відкритій основі означає наявність
активної спільноти розробників, яка надає підтримку, допомогу та важливі
оновлення для покращення бази даних. MariaDB активно вдосконалює свої
заходи безпеки. Вона пропонує різні механізми шифрування та
аутентифікації для захисту даних та обмеження доступу.
MariaDB може бути хорошим вибором для ряду мікросервісів,
особливо для тих, що вимагають реляційний підхід до зберігання даних та
підтримують велику кількість транзакцій чи зв'язків між даними.
Для розробки системи мікросервісів з використанням різних
технологій, таких як MariaDB та інших, AmazonWebServices (AWS) може
бути дуже потужною та зручною платформою.
50
AWS надає широкий спектр послуг, таких як EC2 для обчислювальних
потужностей, ECS/EKS для контейнеризації, а також сервіси масштабування
баз даних (наприклад, Amazon RDS для MariaDB). Це дозволяє легко
масштабувати та керувати інфраструктурою, відповідаючи змінним потребам
системи.
AWS пропонує різні сервіси для кожного етапу розробки, від
збереження даних до розгортання, моніторингу та безпеки. Наприклад, AWS
Lambda для серверного less обчислень, AWS CloudWatch для моніторингу та
AWS IAM для керування доступом.
Також, AWS надає широкий спектр інструментів для захисту даних та
інфраструктури, включаючи захист від DDoS-атак, шифрування та
ідентифікацію користувачів. AWS також пропонує географічну реплікацію та
резервне копіювання даних для забезпечення високої доступності.
AWS не обмежує вибір технологій. Ви можете використовувати свої
улюблені мови програмування, бази даних та інші інструменти, обираючи
найбільш підходящі для вашого проекту. AWS може стати дуже ефективною
платформою для розробки та розгортання системи мікросервісів, надаючи
широкий вибір сервісів та інфраструктури для підтримки різноманітних
потреб вашого проекту [19].
AmazonWebServices (AWS) надає ряд сервісів та можливостей для
підтримки роботи в приватних мережах, що дозволяє створювати і управляти
захищеними та ізольованими обчислювальними ресурсами.
AWS VPC дозволяє створювати власні віртуальні мережі в облаку,
ізольовані від інших користувачів AWS. Розробник може налаштовувати
мережеві параметри, включаючи підмережі, таблиці маршрутизації та
налаштування доступу.
Також є можливість визначити приватні підмережі в межах VPC, які не
мають прямого доступу з Інтернету. Додатково, використовуючи Network
Access ControlLists (NACLs) та SecurityGroups, розробник може
контролювати трафік між різними частинами вашої інфраструктури.
51
Ці можливості дозволяють розробникам створювати безпечні, приватні
мережі в AWS, що особливо важливо для захисту конфіденційної інформації
та виконання робіт, які вимагають високого рівня безпеки.
Для розробки інтерфейсу в рамках системи мікросервісів можна
використовувати стандартні HTML та JavaScript. Вони є основою багатьох
веб-інтерфейсів і можуть бути дуже ефективними для створення фронтенду.
HTML – це основна мова розмітки для створення структури сторінок в
Інтернеті. Він використовується для визначення елементів на сторінці, таких
як текст, кнопки, форми тощо.
JavaScript використовується для додавання інтерактивності до веб-
сторінок. Це мова програмування, яка дозволяє керувати елементами
сторінки, відправляти запити на сервер, обробляти дані та реагувати на дії
користувачів.
Ці технології широко використовуються для розробки веб-інтерфейсів
через їх простоту в освоєнні та використанні. З їх допомогою можна
створити ефективний інтерфейс для взаємодії з користувачами системи
мікросервісів, додавши функціональність, анімацію та відповідність дизайну.
Також, C# має можливість генерувати HTML-код, який можна вивести
у браузері. Для цього часто використовуються різні фреймворки та
бібліотеки, такі як ASP.NET Core, ASP.NET MVC, або ASP.NET WebForms.
ASP.NET Core, зокрема, забезпечує можливість генерувати відповіді у
форматі HTML на запити від клієнтів. Розробники можуть використовувати
C# для створення динамічного HTML-коду на серверному боці та
відправляти його клієнтам для відображення у браузері.
Це дає можливість створювати динамічні веб-сторінки, які реагують на
дані з бази даних, користувацькі запити чи взаємодію з іншими сервісами. C#
дозволяє розробникам ефективно керувати створенням веб-сторінок та їх
змістом на серверному рівні, передавати цей зміст у браузер та відображати
його як сторінку HTML.
52
2.3 Висновки до розділу 2
У даному розділі докладно розглянуто фундаментальні аспекти
архітектури програмного забезпечення, шаблонів проектування та стратегій
вибору технологій, спрямовані на розв'язання конкретних завдань у контексті
кваліфікаційної роботи. В рамках аналізу архітектури програмного
забезпечення визначені ключові принципи та концепції, які визначають
структуру та організацію програмних систем. Шаблони проектування, що
також розглядалися, відіграють критичну роль, надаючи стандартні та
ефективні рішення для розробки програмного забезпечення, що в свою чергу
сприяє його гнучкості та можливості повторного використання коду.
В контексті вибору технологій були здійснені обґрунтовані вибори
оптимальних рішень, адаптованих до конкретних вимог та завдань
кваліфікаційної роботи. Взяті технологічні рішення мають на меті
забезпечити найвищу ефективність та відповідність поставленим завданням,
створюючи основу для успішного вирішення конкретних завдань у рамках
даного проекту.
53
РОЗДІЛ 3 АНАЛІЗ ТА ОПТИМІЗАЦІЯ МЕТОДІВ МАСШТАБУВАННЯ
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ У ВЕЛИКИХ КОРПОРАТИВНИХ
КОМП'ЮТЕРНИХМЕРЕЖАХ
3.1 Структура системи
Масштабування програмного забезпечення у великій корпоративної
мережі відіграє вирішальну роль у забезпеченні її ефективності та стійкості.
Великі корпорації постійно зростають, отже, програмне забезпечення
повинне бути гнучким та масштабним для підтримки зростаючих потреб у
обробці даних, трафіку та інших ресурсів.
Масштабування дозволяє підтримувати стабільну роботу мережі навіть
під час збільшення навантаження або збоїв в окремих компонентах. Це
робить систему більш стійкою та надійною для користувачів.
Також, масштабування дозволяє оптимізувати використання ресурсів,
розподіляючи навантаження між серверами та компонентами мережі, що
дозволяє економити час та гроші.
Система, яка добре масштабується, зазвичай має більш простий та
ефективний процес управління. Це зменшує витрати на обслуговування та
спрощує рутинні операції.
У кінцевому підсумку, масштабування програмного забезпечення
великих корпоративних мереж є критичним елементом для забезпечення
їхньої успішної та надійної роботи в умовах постійної зміни та росту.
Розроблена система базується на мікросервісній архітектурі, розділена
на кілька ключових компонентів, що дозволяє окремо керувати різними
аспектами функціональності. Кожен мікросервіс відповідає за певну область
даних або бізнес-логіку, забезпечуючи незалежність та гнучкість у розвитку
та підтримці.
Цільові мікросервіси системи охоплюють різні аспекти бізнесу, такі як
зберігання та обробка даних про співробітників, структуру департаментів,
54
фінансові бюджети та інформацію про посади. Кожен сервіс має своє
завдання і може бути незалежно масштабованим, розвивається та
підтримується.
Ця архітектура сприяє ефективному управлінню та розвитку системи,
дозволяє швидко реагувати на зміни в бізнес-потребах та масштабувати
окремі компоненти без впливу на інші. Такий підхід сприяє забезпеченню
гнучкості, масштабованості та ефективності роботи всієї системи у великих
корпоративних умовах. Структура розробленої системи зображена на
рисунку 3.1.
Сервіс по Сервіс по
СУБД роботі роботі з СУБД
зспівробітни- безпекою
ками підприємства
Департамент співробітників Департамент безпеки
Сервіс по
СУБД роботі
зфінансами Сервіс по роботі зі
звітністю
Департамент фінансів
Сервіс по СУБД Файлове
СУБД роботі з сховище
закупівлями
Департамент звітів
Департамент закупівель
Корпоративна мережа
Рисунок 3.1. – Структура розробленої системи
Основною складовою даної системи є сервіс по роботі зі звітністю,
який є центральним модулем системи та здатний взаємодіяти з усіма іншими
сервісами в системі. Цей сервіс володіє знанням про наявність та
55
функціональність усіх інших компонентів мікросервісів у системі.
Він відповідає за управління процесом генерації звітів, які вимагають
дані з інших сервісів. Це означає, що він може спілкуватися з усіма іншими
мікросервісами, запитуючи необхідні дані та інформацію для формування
повноцінних звітів.
Сервіс зі звітністю відповідає за агрегацію, обробку та аналіз
отриманих даних з інших сервісів з метою створення звітів у відповідності з
потребами компанії. Це центральний елемент, який координує взаємодію між
різними частинами системи, забезпечуючи формування повноцінних та
актуальних звітів для користувачів системи.
Сервіс по роботі зі звітністю у даній системі взаємодіє з усіма іншими
сервісами за допомогою протоколу HTTPS (Hypertext Transfer Protocol
Secure). Цей протокол забезпечує захищене та шифроване з'єднання між
сервісами, що дозволяє безпечно передавати дані між ними через мережу
Інтернет або внутрішню корпоративну мережу.
Використання HTTPS гарантує конфіденційність, цілісність та
автентифікацію даних під час їхньої передачі між сервісами. Це дозволяє
уникнути можливих загроз безпеці та забезпечити надійність взаємодії між
компонентами системи, зокрема, збереження конфіденційності даних, які
обмінюються сервісами, та захист від потенційних атак чи несанкціонованого
доступу до інформації.
Даний сервіс по роботі зі звітністю не лише ініціює створення звітів,
але також може приймати запити на генерацію звітів від інших сервісів у
системі. Коли сервіс отримує запит на створення звіту, він додає цей запит до
черги та починає процес його обробки.
Це означає, що сервіс приймає запит, реєструє його та включає в
список завдань на створення звіту. Після цього сервіс починає обробку цього
завдання, виконуючи потрібні дії для зібрання необхідних даних та
формування звіту.
Коли звіт буде готовий, сервіс надсилає його у відповідь на початковий
56
запит або розміщує його у відповідному місці, доступному для отримання.
Таким чином, сервіс гарантує, що результати запитів на створення звіту
будуть оброблені та надіслані як тільки вони будуть готові, забезпечуючи
ефективність та оперативність відповіді на запити.
Даний сервіс по роботі зі звітністю використовує RabbitMQ для
управління чергами запитів. RabbitMQ – це потужний брокер повідомлень,
який забезпечує розподілену систему обміну повідомленнями між різними
частинами системи.
Сервіс використовує RabbitMQ для керування чергами запитів на
створення звітів. Коли сервіс отримує запит на створення звіту, він реєструє
його у черзі RabbitMQ. Після цього RabbitMQ керує цією чергою,
забезпечуючи послідовну обробку запитів та їх виконання [20].
За допомогою RabbitMQ сервіс може ефективно організовувати та
керувати потоком роботи з чергами, забезпечуючи, що запити на створення
звітів обробляються вчасно та без втрати даних, навіть при великому обсязі
запитів. Такий підхід дозволяє підвищити надійність та ефективність системи
обробки звітності.
Також сервіс для завантаження згенерованих звітів використовує S3
bucket. Після завершення створення звіту, результати його роботи
автоматично завантажуються у вказаний S3 bucket. Це надає зручний та
безпечний спосіб зберігання та розподілу звітів.
Amazon Simple Storage Service (S3) – це хмарний сервіс для зберігання
об'єктів у вигляді файлів у веб-хмарі Amazon Web Services (AWS). S3 можна
уявити як величезний сховище даних, де можна зберігати будь-які типи
файлів – від текстових документів до мультимедійних файлів, програмного
коду та бекапів баз даних.
"Bucket" в рамках S3 – це контейнер для зберігання файлів. Він може
мати унікальне ім'я в межах регіону AWS та дозволяє зберігати безліч
об'єктів (файлів) будь-якого типу. Кожен об'єкт у S3 (файл) має свій
унікальний ключ, що дозволяє однозначно ідентифікувати та отримувати до
57
нього доступ. Крім того, S3 надає можливість налаштування прав доступу до
файлів, включаючи публічний доступ або обмеження доступу за допомогою
політик доступу [21].
Даний сервіс S3 широко використовується для зберігання даних,
статичних веб-сайтів, резервного копіювання та обміну великими обсягами
інформації у хмарному середовищі AWS.
Коли звіт готовий, сервіс генерує посилання на цей файл у S3 bucket.
Ці посилання надсилаються іншим сервісам, які отримують можливість
автоматично завантажити цей файл з S3 bucket. Оскільки всі сервіси
використовують один і той же AWS-аккаунт, вони мають відповідні права
доступу для завантаження та отримання цього файлу безпосередньо з S3
bucket.
Такий підхід спрощує спільний доступ до звітів між різними
компонентами системи, забезпечуючи їх доступність та консистентність
результатів.
База даних MariaDB використовується для зберігання всіх запитів та
результатів роботи, що стосуються системи. MariaDB – це відкрита реляційна
база даних, що забезпечує надійне зберігання, організацію та доступ до
даних.
У цій базі даних зберігається історія всіх виконаних запитів до
системи, результати їх обробки та важливі метадані, необхідні для
подальшого аналізу, відстеження та відновлення діяльності системи. Це
включає дані про створення звітів, взаємодію сервісів, дати та час виконання
операцій та інші важливі аспекти роботи системи.
MariaDB надає можливості забезпечення консистентності даних,
здійснення резервного копіювання, а також розширення для аналізу та
витягування цінної інформації зі збережених даних. Це дозволяє забезпечити
стабільну та надійну роботу системи, а також аналізувати минулу діяльність
для прийняття кращих рішень у майбутньому.
Сервіс генерації звітів реалізовано на мові програмування C#. Це
58
дозволяє використовувати різноманітні можливості мови для ефективного
використання ресурсів системи. C# забезпечує інструменти для роботи з
багатопотоковістю та асинхронністю, що дозволяє оптимізувати
використання процесорного часу та ресурсів системи.
Механізми багатопотоковості у C# дозволяють розділити
обчислювальні завдання на окремі потоки, що працюють паралельно. Це
дозволяє ефективно використовувати ресурси процесора та обробляти багато
операцій одночасно, прискорюючи процес створення звітів.
Крім того, в C# є вбудовані засоби для роботи з асинхронним
програмуванням. Це дозволяє виконувати операції без блокування основного
потоку виконання, що сприяє покращенню реактивності та продуктивності
системи під час генерації звітів.
Завдяки цим можливостям C#, сервіс генерації звітів може працювати
ефективно та швидко, оптимізуючи використання ресурсів системи та
забезпечуючи швидку відповідь на запити користувачів.
Вся система побудована на базі рішення Amazon Web Services (AWS).
AWS - це популярний хмарний комплекс сервісів, який надає широкий
спектр інструментів та послуг для розгортання, управління та розвитку веб-
додатків та послуг у хмарному середовищі.
Використання AWS забезпечує надійність, масштабованість та безпеку
системи. Це дозволяє легко масштабувати ресурси для відповіді на збільшені
обсяги роботи, забезпечує гнучкість в налаштуванні і розгортанні сервісів, а
також забезпечує високий рівень безпеки даних і інфраструктури.
AWS надає широкий спектр сервісів, включаючи обчислення,
зберігання даних, мережі, аналітику, штучний інтелект, інструменти
розробки та безліч інших сервісів, які дозволяють побудувати, розгорнути та
управляти сучасними додатками та системами в хмарному середовищі.
Використання AWS дозволяє ефективно використовувати ресурси хмарної
інфраструктури для оптимізації роботи системи та підтримки високої
продуктивності [22].
59
Усі сервіси у системі побудовані на мові програмування C# з метою
зменшення різноманітності технологій та спрощення управління кодовою
базою. Використання однієї мови програмування дозволяє знизити
складність розвитку та підтримки системи.
Це забезпечує єдність технологічного стеку та спрощує процес
навчання нових розробників. Будучи заснованими на C#, всі розробники
системи можуть працювати з будь-яким сервісом без необхідності зміни
мови програмування. Це підвищує гнучкість команди, дозволяючи
розробникам брати участь у підтримці різних сервісів, не втрачаючи час на
освоєння нових технологій.
Такий підхід спрощує взаємодію між членами розробницького
колективу, дозволяючи ефективніше виконувати завдання розробки,
тестування та підтримки системи в цілому.
Для розробки корпоративної мережі було обрано рішення Amazon Web
Services (AWS). Усі сервіси цієї мережі функціонують у середовищі Amazon
Elastic Compute Cloud (EC2), що надає масштабовані обчислювальні ресурси
у хмарному середовищі AWS. Використання EC2 дозволяє гнучко
налаштовувати обсяги обчислювальної потужності та пристосовувати їх до
потреб корпоративної мережі.
Крім того, бази даних цієї мережі також розміщуються в AWS. Це
може означати використання різних сервісів для зберігання даних, таких як
Amazon Relational Database Service (RDS) для управління реляційними
базами даних чи Amazon DynamoDB для NoSQL рішень. Використання AWS
для зберігання баз даних забезпечує надійність, масштабованість та
можливість резервного копіювання важливих даних.
В цілому, використання рішення AWS для корпоративної мережі
дозволяє легко масштабувати обчислювальні та збережені ресурси,
забезпечуючи високу доступність та надійність системи.
У даній корпоративній мережі кожен департамент управляє власним
сервісом, який функціонує як окремий компонент системи. Кожен з цих
60
сервісів департаментів працює відокремлено і незалежно від інших,
спеціалізуючись на вирішенні конкретних завдань чи обслуговуванні певної
галузі бізнесу.
Ця архітектура надає департаментам велику автономію та гнучкість у
веденні власних операцій, дозволяючи їм швидко реагувати на внутрішні
потреби та зміни у власному розпорядку денному.
Однак, сервіс генерації звітів виступає як центральний модуль, який
взаємодіє з усіма цими департаментальними сервісами. Він володіє здатністю
комунікувати з усіма сервісами департаментів, запитуючи необхідні дані та
інформацію для формування повноцінних звітів. Така взаємодія дозволяє
створювати звіти на основі даних, які розподілені між різними сервісами, без
прив'язки до конкретного департаменту чи сервісу.
Завдяки обраній архітектурі мікросервісів у системі, розроблений
сервіс може показувати вражаючі показники швидкодії. Мікросервісна
архітектура дозволяє розділити функціональність системи на компоненти, які
працюють незалежно один від одного. Це сприяє покращенню
продуктивності та швидкодії завдяки таким аспектам:
1. Масштабованість;
2. Швидкість впровадження змін;
3. Висока доступність та надійність;
4. Оптимізація ресурсів.
Кожен сервіс може бути масштабований окремо в залежності від
навантаження. Це дозволяє розподіляти навантаження та ефективно
використовувати ресурси, уникати затримок через перевантаження і
забезпечувати гнучкість у відповіді на збільшення обсягу роботи.
Мікросервіси можуть оновлюватись та вдосконалюватись окремо без
впливу на інші частини системи. Це дозволяє швидко впроваджувати нові
функції, виправляти помилки та розвивати систему без необхідності
зупиняти всю систему.
Розділення функціональності на мікросервіси дозволяє обмежити вплив
61
помилок або відмов окремого сервісу на роботу всієї системи. Це підвищує
стійкість до відмов і забезпечує високу доступність системи.
Кожен сервіс може бути спеціалізованим для конкретних завдань, що
дозволяє ефективно використовувати ресурси системи та оптимізувати його
функціонування.
Ці переваги мікросервісної архітектури сприяють покращенню
продуктивності та ефективності роботи сервісу, що відображається в гарних
показниках його швидкодії.
3.2 Опис функцій системи
Розробка системи для генерації звітів різних департаментів значно
спрощує роботу кожного працюючого підприємства. Звіти є важливою
складовою для прийняття рішень на всіх рівнях управління компанією. Ці
документи містять важливу інформацію про фінанси, виробництво, ресурси,
маркетинг, та інші аспекти діяльності, що допомагає керівництву зробити
обґрунтовані стратегічні рішення.
Також, розроблена система дозволяє автоматизувати процес створення
цих документів. Замість ручного збирання та обробки даних з різних джерел,
працівники можуть легко отримувати необхідну інформацію у вигляді
готових звітів. Це полегшує роботу кожного департаменту, оскільки вони
можуть швидко отримувати актуальні дані без зайвого зусилля.
Крім того, ця система забезпечує єдність та однорідність в звітах, що
підвищує якість прийнятих рішень на різних рівнях управління. Це робить
процес аналізу більш послідовним та ефективним, а працюючі підприємства
можуть швидко реагувати на зміни в бізнес-середовищі.
Розроблена система не має доступу через мережу Інтернет і функціонує
тільки в межах локальної мережі. Це означає, що доступ до системи
можливий лише з комп'ютерів або пристроїв, які знаходяться у межах цієї
самої локальної мережі.
62
Такий підхід обрано з міркувань безпеки, особливо для корпоративних
систем, які мають справу з чутливою інформацією. Ізольована локальна
мережа допомагає уникнути зовнішніх кіберзагроз та несанкціонованого
доступу з інтернету, зберігаючи дані та функціонал системи в безпечній
області, недоступний для зовнішніх користувачів.
Хоча доступ до системи обмежений лише до внутрішньої мережі, це
вимагає фізичної присутності на робочому місці чи в спеціально
затверджених місцях для доступу до системи.
Система генерації звітів використовує для авторизації спеціалізовану
систему авторизації. Кожен співробітник, який має право доступу до звітів,
отримав свій обліковий запис через електронну пошту. Це означає, що кожен
користувач має свій унікальний логін та пароль для входу в систему генерації
звітів. Вхід в систему зображений на рисунку 3.2.
Рисунок 3.2. – Система авторизації
Адміністратор системи має можливість створювати облікові записи
вручну через базу даних. Це означає, що він має повний контроль над
63
наданням доступу та реєстрацією користувачів у системі. Адміністратор
може надавати або обмежувати доступ до конкретних функцій чи звітів для
кожного облікового запису.
Використання електронної пошти для отримання облікових записів
дозволяє забезпечити персоналу легкий доступ до системи, а ручне створення
доступів через базу даних надає адміністратору гнучкість та контроль над
управлінням доступами до звітів. Такий підхід сприяє забезпеченню безпеки
та зручності для користувачів системи.
У системі не реалізована функція автоматичного відновлення паролів
користувачів. В разі втрати або забуття пароля, користувачі не мають
можливості самостійно відновити його через автоматизований процес.
Замість цього, відновлення паролю доступне через адміністратора
системи. Якщо користувач забув пароль або втратив доступ до свого
облікового запису, він може звернутися до адміністратора системи для
відновлення паролю. Адміністратор має права ініціювати процес скидання
паролю та надання нового користувачеві.
Цей підхід може бути використаний для забезпечення додаткового
рівня безпеки та контролю над доступом до системи, адже процес
відновлення паролю проводиться за допомогою адміністратора, який
перевіряє легітимність запиту та підтверджує особу користувача перед
наданням нового паролю.
Меню системи генерації звітів складається з різних сторінок, кожна з
яких представляє собою різний тип звіту. Кожна сторінка відповідає певній
категорії або виду звітності. Наприклад, одна сторінка може бути призначена
для фінансових звітів, інша - для виробничої статистики, третя - для аналізу
маркетингових даних тощо.
Ця структура меню дозволяє користувачам швидко та зручно отримати
доступ до потрібних типів звітів, забезпечуючи організований та
систематизований доступ до різноманітної інформації. Кожен тип звіту
представлений окремою сторінкою, що спрощує навігацію та полегшує
64
пошук необхідних даних для користувачів системи. Інтерфейс розробленої
системи зображений на рисунку 3.3.
Рисунок 3.3. – Інтерфейс розробленої системи
У користувача системи є повний контроль над звітами, і він має
можливість створювати, скачувати та видаляти їх в зручний для себе спосіб.
Користувач може легко створювати нові звіти, вибираючи необхідний тип
звіту та вказуючи параметри для відображення необхідної інформації. Цей
процес може бути розділений за категоріями, щоб користувач міг швидко
знайти відповідний тип звіту.
Користувач може завантажувати створені звіти у форматах, зручних
для подальшого використання чи аналізу. Це може бути виконано у різних
форматах файлів, таких як PDF, Excel, CSV тощо, забезпечуючи гнучкість у
використанні отриманих даних.
Система генерації звітів працює у такий спосіб, що звіт генерується до
моменту початку скачування користувачем. Це означає, що під час вибору
65
скачування звіту, система вже попередньо підготовляє та генерує
відповідний файл з даними. Такий підхід дозволяє користувачеві отримати
звіт якомога швидше після початку процесу скачування.
Це важливо для оптимізації часу очікування користувача та зменшення
можливих затримок. Генерація звіту перед скачуванням дозволяє
забезпечити короткий час очікування, оскільки звіт вже готовий до моменту,
коли користувач розпочне завантаження.
Це дозволяє ефективно використовувати час користувача та
забезпечити швидкий доступ до необхідної інформації, сприяючи
комфортному та продуктивному використанню системи.
Крім того, користувач має можливість видаляти звіти, які вже не
потрібні. Це дозволяє оптимізувати простір для зберігання та підтримувати
порядок у списку звітів. Видалені звіти можуть бути відновлені
адміністратором системи або іншими авторизованими користувачами, якщо
це необхідно.
При видаленні звіту з системи він також автоматично видаляється з S3
bucket. Це означає, що якщо користувач вирішує видалити звіт з системи, він
також буде автоматично прибраний з облікового запису в S3 bucket, де він
був збережений.
Такий підхід допомагає забезпечити консистентність даних і зменшити
можливість надлишкового збереження інформації. Видалення звіту з обох
місць забезпечує, що конфіденційна чи застаріла інформація не залишається
в системі, забезпечуючи правильне управління даними та дотримання
політики безпеки.
Система дозволяє адміністратору сервісу налаштовувати різні рівні
доступу до процесу генерації звітів для різних департаментів. Це означає, що
адміністратор може встановлювати відмінні права доступу для різних
користувачів залежно від їхнього департаменту чи ролі в компанії.
Такий підхід дозволяє точно керувати тим, хто має доступ до певних
типів звітів. Наприклад, фінансовий департамент може мати доступ до
66
фінансових звітів, тоді як виробничий департамент може бути обмежений у
доступі до цієї інформації, але мати повний доступ до виробничої
статистики.
Це забезпечує збалансований доступ до інформації для різних
підрозділів компанії та допомагає уникнути недопущення конфіденційної
інформації до не пов'язаних з нею департаментів.
3.3 Забезпечення захисту інформації при роботі з створеною
системою
Захист інформації в корпоративних мережах є фундаментальним
елементом успішної діяльності компанії. Корпоративна інформація, така як
внутрішні процедури, клієнтські дані, фінансова інформація, та
інтелектуальна власність, є важливими активами, які вимагають
надзвичайного захисту.
Забезпечення конфіденційності даних – це запобігання
несанкціонованому доступу до чутливої інформації. Це стосується не тільки
захисту від зовнішніх загроз, а й внутрішніх ризиків, таких як помилкові дії
персоналу чи крадіжки даних.
Цілісність даних визначає, що інформація залишається неушкодженою,
недоступною для модифікації чи спотворення. Це важливо для забезпечення
достовірності даних та відсутності несанкціонованих змін.
Доступність даних, у свою чергу, означає, що інформація доступна за
потреби для авторизованих користувачів у необхідний момент. Забезпечення
стабільної роботи системи та можливості швидкого доступу до даних є
ключовим для безперебійної роботи компанії.
Загалом, захист інформації - це складний процес, який включає в себе
не лише технологічні заходи безпеки, але і правила, політики та свідомість
персоналу. Це неперервний процес, який потребує постійного вдосконалення
та оновлення відповідно до сучасних загроз і вимог безпеки.
67
Firewall та мережеві заходи безпеки в корпоративних мережах
відіграють ключову роль у захисті від зовнішніх загроз та контролі доступу
до різних ресурсів.
Firewall - це перша лінія оборони в мережі, яка контролює трафік між
внутрішньою мережею та зовнішніми мережами Інтернету. Він фільтрує та
контролює вхідний та вихідний мережевий трафік за певними правилами та
політиками безпеки. На основі цих правил Firewall визначає, який трафік
може проходити через мережу, а який блокується.
Мережеві заходи безпеки включають в себе додаткові заходи, такі як:
1. VPN (Virtual Private Network) для захищеного з'єднання та
шифрування даних під час передачі через відкриті мережі;
2. IDS/IPS (Intrusion Detection System/Intrusion Prevention System)
для виявлення та запобігання несанкціонованим спробам доступу або
атакам в мережі;
3. Аутентифікація та авторизація для контролю доступу до ресурсів
мережі;
4. Шифрування даних для захисту конфіденційної інформації під
час передачі.
Ці заходи безпеки спрямовані на захист мережі від різних видів загроз,
від вірусів та зловмисних програм до атак на перехоплення даних. Вони
сприяють створенню безпечної та надійної мережної інфраструктури,
забезпечуючи відповідний рівень захисту для важливих даних та ресурсів
компанії.
Шифрування даних в сучасному світі є надзвичайно важливим
компонентом забезпечення безпеки і приватності інформації. Шифрування
даних дозволяє зберігати чутливу інформацію в безпечному вигляді, навіть
якщо вона потрапить у невідомі руки. Тільки особи з правильними ключами
або паролями зможуть розшифрувати ці дані.
68
У світі, де кіберзлочинність поширюється, шифрування є важливим
заходом безпеки для захисту від втрати чи крадіжки конфіденційної
інформації під час передачі через мережі або зберігання на пристроях.
В деяких галузях, таких як фінанси, медицина або технології, існують
вимоги щодо захисту особистих даних. Шифрування може допомогти
компаніям відповідати цим стандартам безпеки.
Від особистих фотографій до корпоративних даних, шифрування може
бути застосоване практично до будь-якої інформації, що потребує захисту.
Шифрування даних може позитивно позначитися на довірі користувачів до
систем та компаній, які забезпечують захист їхніх особистих даних.
У світі, де інформація стає все більш цінним активом, шифрування є
ключовим елементом, який допомагає зберегти цю цінність та захистити від
потенційних загроз.
У розробленій системі для захисту конфіденційної інформації
використовується потужний шифрувальний алгоритм AES-256 (Advanced
Encryption Standard). Цей алгоритм є одним з найбільш надійних та широко
використовуваних методів шифрування в сучасній криптографії.
AES-256 базується на блочному шифруванні, де дані поділяються на
блоки та обробляються кожен окремо. Ключ шифрування у форматі 256 бітів
(або 32 байти) робить процес розшифрування практично неможливим без
відповідного ключа. Цей алгоритм забезпечує високий рівень безпеки та
захисту навіть в умовах сучасних кіберзагроз.
Використання AES-256 для шифрування даних перед їхнім
збереженням в базу даних гарантує надійний захист важливої інформації,
унеможливлюючи несанкціонований доступ чи редагування даних без
необхідного ключа.
Строга ідентифікація та аутентифікація – це ключові процедури в
області кібербезпеки, спрямовані на перевірку і підтвердження ідентичності
користувача перед наданням доступу до системи чи конфіденційних
69
ресурсів. Ці процеси грають критичну роль у запобіганні несанкціонованого
доступу та збереженні приватності даних.
Ідентифікація визначає, хто саме користується системою або послугою.
Це може бути здійснено, наприклад, через логін, ім'я користувача, адресу
електронної пошти або інші унікальні ідентифікатори.
Аутентифікація – це процес перевірки правдивості цих
ідентифікаційних даних. Зазвичай це виконується за допомогою паролів,
ключів, біометричних даних або інших факторів, що підтверджують особу
користувача.
Строга ідентифікація і аутентифікація мають кілька важливих переваг:
1. Захист від несанкціонованого доступу. Ці процеси допомагають
запобігти вторгненням і забезпечити, що тільки уповноважені
користувачі отримують доступ до системи чи ресурсів;
2. Збереження конфіденційності. Шляхом перевірки ідентифікаційних
даних і підтвердження правдивості особи, система забезпечує
конфіденційність особистої інформації та конфіденційних даних;
3. Можливість застосування мультифакторної автентифікації. Додавання
різних рівнів підтвердження (наприклад, пароль, OTP, біометричні
дані) підвищує безпеку системи, ускладнює шанси несанкціонованого
доступу;
4. Виключення можливості перехоплення паролів. Застосування сильних
методів аутентифікації, таких як біометричні дані, ускладнює атаки на
перехоплення паролів.
Запровадження строгої ідентифікації та аутентифікації є критично
важливим для будь-якої системи, особливо тих, які містять конфіденційну чи
особисту інформацію, забезпечуючи надійний захист даних і зменшення
ризиків кіберзлочинності.
Використання розробленої системи в локальних мережах є
рекомендацією для забезпечення більш високого рівня безпеки та
запобігання можливого витоку конфіденційної інформації.
70
Локальна мережа дає більший контроль над доступом до системи,
зменшуючи відстань, яку потенційний зловмисник міг би пройти для
отримання доступу до системи.
Використання локальної мережі зменшує відкритий доступ до системи
через Інтернет, знижуючи загрози зовнішніх кібератак та можливості
несанкціонованого доступу.
Можливість фізично контролювати доступ до пристроїв і обладнання в
локальній мережі сприяє ускладненню несанкціонованого доступу до них.
Інформація, що зберігається та обробляється всередині локальної
мережі, менше піддається загрозам витоку чи перехоплення зовнішніми
факторами.
Локальна мережа дозволяє уникнути можливих проблем зі зв'язком, які
можуть виникнути у віддалених системах.
Однак, важливо враховувати, що локальна мережа не гарантує повну
безпеку сама по собі. Вона є одним з елементів комплексної стратегії
кібербезпеки, яка також включає в себе застосування криптографії, регулярне
оновлення програмного забезпечення, аудит безпеки та забезпечення
дотримання всіх необхідних стандартів безпеки.
Регулярні оновлення систем та застосунків, а також вчасне
встановлення патчів, є критично важливими елементами для забезпечення
безпеки та стійкості всієї інфраструктури комп'ютерних систем. Регулярні
оновлення та патчі включають у себе виправлення вразливостей програмного
забезпечення, які можуть бути використані зловмисниками для атак або
витоку конфіденційної інформації.
Кіберзлочинці постійно шукають нові способи атак. Оновлення та
патчі дозволяють уникнути використання вже відомих вразливостей, а також
впроваджують заходи захисту проти нових видів загроз. Оновлення також
можуть включати в себе покращення функціональності та оптимізацію
роботи системи, що може позитивно вплинути на продуктивність та
ефективність роботи користувачів.
71
Багато індустріальних та регуляторних стандартів вимагають регулярне
оновлення систем для забезпечення безпеки даних та конфіденційності.
Оновлення дозволяють підтримувати технічну стійкість системи, уникати
конфліктів та помилок у роботі програмного забезпечення.
Забезпечення регулярних оновлень та своєчасного встановлення патчів
є важливою складовою політики безпеки для будь-якої організації. Це
допомагає уникнути багатьох потенційних загроз та забезпечити безпеку та
стабільність роботи системи.
3.4 Технічні вимоги для роботи з системою
Технічні вимоги – це специфікації, які визначають характеристики та
параметри, які повинна мати система, програма чи продукт, щоб вони
працювали належним чином, задовольняючи вимоги користувача, стандарти
безпеки та вимоги до функціональності.
Функціональні вимоги – це специфікації, які описують функції, сервіси
чи операції, які система повинна виконувати. Вони визначають, як система
має вести себе у конкретних ситуаціях та які можливості вона має надавати
користувачам або іншим системам.
Ці вимоги можуть бути представлені у вигляді функціональних
властивостей, які система повинна мати, умов, за яких вони мають
працювати, та результатів, які очікується від цих функцій.
Функціональні вимоги для даної кваліфікаційної роботи визначають,
які конкретні функції або можливості має мати розроблювана система чи
програма, щоб вона відповідала поставленій задачі та вимогам проекту. Вони
базуються на обґрунтуванні та постановці завдання, яке визначає обсяг, цілі
та очікувані результати проекту.
Вимоги до продуктивності – це характеристики та параметри, які
визначають, наскільки ефективно та швидко система може виконувати свої
функції та обробляти завдання за певний проміжок часу. Ці вимоги описують
72
рівень продуктивності, який очікується від системи або програмного
забезпечення.
Вимоги до продуктивності дозволяють встановити метрики, за якими
оцінюється ефективність та швидкодія системи, і є важливою частиною
процесу проектування та розробки системи, особливо коли потрібно
забезпечити оптимальну роботу у високонавантажених середовищах чи при
роботі з великими обсягами даних.
Вимога до продуктивності в даній системі полягає в здатності
обробляти більше ніж 2 запити одночасно. Це означає, що система повинна
мати механізми асинхронної обробки запитів, щоб забезпечити можливість
одночасної обробки більшої кількості запитів без затримок чи блокувань.
Ця вимога до продуктивності може виникнути в контексті великої
кількості користувачів або запитів, які одночасно надходять до системи.
Здатність обробляти більше запитів одночасно допомагає підтримувати
високий рівень продуктивності, швидкодії та реактивності системи, не
блокуючи інші операції та запити. Для цього можуть використовуватися
механізми паралельного виконання коду, асинхронних запитів чи мульти
потокової обробки даних.
Вимоги до безпеки системи складають каркас для забезпечення захисту
даних та надійності роботи. Це включає в себе вимоги до аутентифікації
користувачів, щоб перевіряти їхню ідентичність перед отриманням доступу.
Крім того, потрібні вимоги до авторизації, які визначають рівні доступу
користувачів до певних функцій системи.
Забезпечення шифрування конфіденційної інформації – це ще одна
важлива вимога. Дані, що зберігаються в базі даних, а також передаванні
через мережу, повинні бути зашифровані, щоб убезпечити їх від
несанкціонованого доступу.
Моніторинг активності користувачів та створення журналів подій
також є важливими вимогами. Це дозволяє вчасно виявляти аномальну
поведінку або потенційні загрози безпеці та вчасно реагувати на них.
73
Захист від вразливостей системи – ще один ключовий аспект.
Підтримка системи безпеки включає у себе використання патчів безпеки,
захист від різних типів атак, таких як SQL-ін’єкції, атаки переповнення
буфера тощо.
Важливою вимогою є контроль доступу, який регулює, які користувачі
мають доступ до різних функцій та даних системи, щоб уникнути
несанкціонованого використання або зміни важливих даних.
Також вимоги до системи безпеки можуть включати плани резервного
копіювання та відновлення, щоб забезпечити можливість відновлення даних
у разі аварій або втрати інформації.
Вимога до використання AWS інфраструктури являє собою ключовий
технічний аспект у роботі з системою. Використання інфраструктури AWS
передбачає ряд технічних вимог та переваг.
AWS дозволяє гнучко масштабувати інфраструктуру в залежності від
потреб системи. Можливість швидко змінювати розмір серверів або
розгортати нові екземпляри дозволяє підтримувати ефективну роботу
системи навіть при зростанні обсягів даних чи навантаження.
AWS надає різні сервіси для забезпечення високої доступності
системи, такі як автоматичне резервне копіювання, забезпечення
безперервності роботи (High Availability), та можливості розміщення в різних
регіонах для запобігання виникнення великих перерв у роботі системи через
проблеми у конкретному центрі обробки даних.
AWS пропонує різні інструменти для забезпечення безпеки системи,
такі як AWS Identity and Access Management (IAM) для управління доступом,
можливості шифрування даних та мережеві фільтри для контролю трафіку.
Таким чином, вимога до використання AWS інфраструктури визначає
основні технічні параметри, які впливають на ефективність, доступність та
безпеку системи, надаючи можливості оптимізації ресурсів та забезпечення
високої ступені гнучкості у роботі системи.
74
3.5 Оцінка ефективності застосування методів масштабування
програмного забезпечення у великих корпоративних комп'ютерних
мережах
Методи, застосовані у розробленій системі, спрямовані на покращення
швидкодії та продуктивності системи, забезпечуючи можливість виконання
більшої кількості операцій за короткий проміжок часу.
Розбиття системи на окремі компоненти (мікросервіси) дозволило
незалежно масштабувати та оптимізувати кожен компонент, підвищуючи
продуктивність системи в цілому.
Використання асинхронних запитів та паралельних операцій дозволяє
системі виконувати кілька завдань одночасно без блокування ресурсів, що
покращує швидкодію та забезпечує більшу ефективність обробки запитів.
Використання ресурсів системи в ефективний спосіб, в тому числі
багатопотоковість та оптимізація асинхронних запитів, дозволяє системі
ефективно використовувати обчислювальні та мережеві ресурси.
Використання кешування для збереження часто використовуваних
даних дозволяє швидше отримувати доступ до інформації, що сприяє
підвищенню швидкодії системи.
Ці методи спільно впливають на роботу системи, покращуючи її
швидкодію та здатність обробляти більшу кількість операцій протягом
певного часу, що робить її більш продуктивною та ефективною.
Для оцінки ефективності застосовуваних методів масштабування
системи порівнювали одну систему, яка була розроблена, але реалізована з
використанням різних підходів: одного сервера та багатьох сервісів.
У випадку одного сервера, всі функції та компоненти системи були
об'єднані на одному сервері. Цей підхід характеризується використанням
монолітної архітектури, де всі компоненти, як правило, спільно виконуються
на одному сервері.
У випадку багатьох сервісів, система була розбита на невеликі окремі
сервіси, кожен з яких відповідає за свою функціональність та виконується
75
окремо на своєму сервері. Цей підхід є характерним для мікросервісної
архітектури, де різні сервіси розгортанні та працюють незалежно один від
одного.
Для порівняння ефективність роботи обох варіантів, спостерігали за
часом відповіді системи на запити, швидкістю обробки та завантаженням
сервера. Результати тестів дозволили оцінити переваги та недоліки кожного
підходу. Мікросервісна архітектура, зазвичай, дозволяє більш гнучке
масштабування, зниження ризиків при розгортанні нових функцій та
розширення системи, а також краще використання ресурсів. Однак, це може
бути більш складною системою управління та вимагати більшої уваги до
деталей в порівнянні з монолітною архітектурою, яке зображено на
рисунку 3.4.
Рисунок 3.4. – Порівняння роботи системи з використанням різної
архітектури ПЗ
Результати тестування ефективності роботи системи, розробленої з
використанням мікросервісної архітектури, показали помітне поліпшення у
порівнянні з монолітною структурою. Зокрема, продуктивність системи з
мікросервісною архітектурою виявилася майже вдвічі кращою.
Таке значне покращення ефективності системи здебільшого пов'язане з
76
розбиттям функціональності на окремі мікросервіси, що дозволило
оптимізувати роботу кожного компонента окремо. Це сприяє більш точному
масштабуванню, ефективному використанню ресурсів та зменшенню впливу
негативних аспектів, таких як вплив помилок в одному компоненті на всю
систему.
Загалом, таке покращення продуктивності свідчить про переваги та
перспективи використання мікросервісної архітектури в порівнянні з
традиційною монолітною моделлю.
3.6 Висновки до розділу 3
У даному розділі були детально проаналізовані ключові аспекти
структури, функціональності та безпеки розробленої системи. Визначена
структура системи надає загальний огляд компонентів та їх взаємодії, що є
важливим кроком для розуміння архітектурних особливостей.
Опис функцій системи висвітлив ключові можливості та завдання, які
вона вирішує, що є важливим для подальшого розуміння її робочого процесу.
Зокрема, висвітлено аспекти забезпечення інформаційної безпеки при
використанні системи, а також технічні вимоги, які стосуються її ефективної
роботи.
Особлива увага була приділена оцінці ефективності застосування
методів масштабування програмного забезпечення у великих корпоративних
комп'ютерних мережах. Це дозволяє зробити висновки про потенційні
переваги використання мікросервісної архітектури.
77
ВИСНОВКИ
У ході проведеного аналізу існуючих систем було досліджено ключові
аспекти корпоративних мереж, методів масштабування програмного
забезпечення та розподілених обчислень. Виявлено, що корпоративні мережі
виступають ключовим елементом для забезпечення ефективної комунікації в
організаціях. Масштабування програм дозволяє оптимізувати продуктивність
систем, а розподілені обчислення стали ефективним методом вирішення
складних завдань.
Поставлені завдання передбачали створення спеціального сервісу, який
використовує декілька серверів і надає можливість аналізу засобів
комунікації в програмному забезпеченні. Розділ, що присвячений архітектурі
програмного забезпечення, шаблонам проектування та стратегіям вибору
технологій, розглядав фундаментальні аспекти, які визначають структуру та
організацію програмних систем. Вибір оптимальних технологій був
здійснений на підставі обґрунтованих рішень, спрямованих на вирішення
конкретних завдань кваліфікаційної роботи. Отримані практичні
рекомендації та висновки дозволяють ефективно розподіляти навантаження
між серверами та оптимізувати роботу програмного забезпечення в умовах
великих мереж. Це може бути корисним для розробників, архітекторів
програмних систем, та інших фахівців у сфері інформаційних технологій, що
працюють з корпоративними мережами та системами масштабування.
Глибокий аналіз структури, функціоналу та засобів захисту інформації
в розробленій системі, а також вивчення технічних вимог та стратегій
масштабування програмного забезпечення у великих мережах становлять
важливий фундамент для подальшого удосконалення та впровадження
системи. Застосування методів масштабування відкриває можливості
виділення переваг, які виникають при використанні мікросервісної
архітектури.
78
ПЕРЕЛІК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ
ІТ –Інформаційні технології.
API – Інтерфейс програмування застосунків.
MVC – Модель-Вид-Контроллер.
REST – Представлення стану переносу.
SQL – Мова структурованих запитів.
TCP/IP – Протокол передачі керованої інформації/Протокол міжмережевого
обміну.
СУБД – система управління базами даних.
EDMS –ElectronicDocumentManagementSystems.
HTTP – Протокол передачі гіпертекстового переносу.
HTTPS – Захищений протокол передачі гіпертекстового переносу.
IaaS– Інфраструктура як сервіс (Infrastructureas a Service).
SaaS– Програмне забезпечення як послуга.
UML – Мова моделювання об'єктів (UnifiedModelingLanguage).
AWS –AmazonWebServices.
VPN – Віртуальна приватна мережа.
IDS/IPS –IntrusionDetectionSystem/IntrusionPreventionSystem.
AES-256 –AdvancedEncryption Standard with a keysizeof 256 bits.
79
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Kleppmann M. "Designing Data-Intensive Applications: The Big Ideas
Behind Reliable, Scalable, and Maintainable Systems 1st Edition":
Sebastopol O'Reilly Media, Inc., 2017.
2. Jonathan LeBlanc "Identity and Data Security for Web Development":
O'Reilly Media, 2016. 201 p.
3. Abbott Martin L. "Scalability Rules: 50 Principles for Scaling Web Sites" /
Fisher Michael T.: Pearson Education, 2011. 336 p.
4. Abbott Martin L. "The Art of Scalability: Scalable Web Architecture,
Processes, and Organizations for the Modern Enterprise" / Fisher, Michael
T., Lewis, James.: Addison-Wesley, 2009. 592 p.
5. Henderson Cal "Building Scalable Web Sites: Building, Scaling, and
Optimizing the Next Generation of Web Applications": O'Reilly Media,
2006. 352 p.
6. Ejsmont, Artur "Web Scalability for Startup Engineers". Apress, 2015. 288
p.
7. Kleppmann Martin "Designing Data-Intensive Applications: The Big Ideas
Behind Reliable, Scalable, and Maintainable Systems": O'Reilly Media,
2017. 613 p.
8. Schlossnagle Theo "Scalable Internet Architectures": Sams Publishing,
2007. 288 p.
9. Guntur Chandra "Scalability Patterns: Best Practices for Designing High
Volume Websites" / Jeronimo Michael, Quinlan Sean.: Apress, 2012. 336 p.
10.Newman Sam "Building Microservices: Designing Fine-Grained Systems".
O'Reilly Media, 2015. 280 p.
11.Prybutok Victor "The Scalability Bible: Practical Tactics for Dramatically
Increasing Your Company's Volume". CRC Press, 2019. 206 p.
80
12.Grigorik Ilya "High-Performance Browser Networking". O'Reilly Media,
2013. 308 p.
13.Snook Jonathan "Scalable and Modular Architecture for CSS". O'Reilly
Media, 2016. 130 p.
14.Stella Josha "Scalable Cloud Ops with Fugue: Declare, Deploy, and
Automate the Cloud" / Miranda, Eliot. O'Reilly Media, 2017. 266 p.
15.Azarmi Bahaaldine "Scalable Big Data Architecture: A Practitioners Guide
to Choosing Relevant Big Data Architecture". Apress, 2015. 256 p.
16.Li Haoyuan "Scalable Machine Learning and Deep Learning" / Karau
Holden, Lublinsky Boris. O'Reilly Media, 2017. 288 p.
17.Saito Hideto "Scalable Microservices with Kubernetes" / Lee Hui-Chuan,
Chloe Tsang, Cheng Hing. O'Reilly Media, 2017. 250 p.
18.Yadav Atul "Scalable Patterns in React". Packt Publishing, 2017. 152 p.
19.Braunstein Samuel L. "Scalable Quantum Computers: Paving the Way to
Realization" / Lo Hoi-Kwong. Wiley, 2001. 496 p.
20.Hyatt Robert "Scalable Search in Computer Chess: Algorithmic
Enhancements and Experiments at High Search Depths" / Prabhu AB.
Springer, 1993. 224 p.
21.Pei Yan "Scalable Uncertainty Management: 11th International Conference,
SUM 2017" / Hu Rong, Zhu Xingquan. Springer, 2017. 402 p.
22.Pihlajamaa Joonas "Scalable VoIP Mobility: Integration and Deployment".
Apress, 2019. 186 p.
ДОДАТОК А
«ЗАТВЕРДЖУЮ»
Завідувач кафедри ІБ та КІ
д.т.н., професор Бабенко В.Г.
__________________
“___” _____________ 2023р.
Дослідження методів масштабування програмного забезпечення у
великих корпоративних комп'ютерних мережах
Специфікація
482.ЧДТУ.32281-01
Листів 2
Розробник _______________ Олексій КОЛОТИЛО
Керівник _______________ Віра БАБЕНКО
Черкаси 2023
2
482.ЧДТУ.32281-01
Позначення Найменування Примітка
Документація
482.ЧДТУ.32281-01 12 01 Текст програми
482.ЧДТУ.32281-01 34 01 Інструкція користувача
ДОДАТОК Б
Дослідження методів масштабування програмного забезпечення у
великих корпоративних комп'ютерних мережах
Текст програми
482.ЧДТУ.32281-01 12 01
Листів 12
Розробник _______________ Олексій КОЛОТИЛО
Черкаси 2023
2
482.ЧДТУ.32281-01 12 01
using System.Web.Mvc;
using ReportsSystem.Filters;
using ReportsSystem.Models;
using ReportsSystem.Properties;
using ReportsSystem.Services;
using ReportsSystem.ViewModels;
namespace ReportsSystem.Controllers
{
[AllowAnonymous]
[AnonymousOnly]
public class LoginController : Controller
{
private readonlyLoginService _loginService;
private readonlyPasswordService _passwordService;
public LoginController(LoginServiceloginService,
PasswordServicepasswordService)
{
_loginService = loginService;
_passwordService = passwordService;
}
public ActionResultIndex(LoginViewModel model)
{
if (ModelState.IsValid)
{
var Password = _passwordService.CreatePasswordHash(model.Password);
var User = _loginService.Login(model.Email, Password);
if (User != null &&User.StatusId == UserStatus.ACTIVE)
{
return Redirect(model.ReturnUrl ?? "/Reports");
}
else if (User != null &&User.StatusId == UserStatus.PENDING)
{
ModelState.AddModelError(string.Empty, Message.LOGIN_PENDING);
}
else
{
3
482.ЧДТУ.32281-01 12 01
ModelState.AddModelError(string.Empty,
Message.LOGIN_INCORRECT_USER);
}
}
return View(model);
}
}
}
using System.Web.Mvc;
using ReportsSystem.Filters;
using ReportsSystem.Models;
using ReportsSystem.Properties;
using ReportsSystem.Services;
using ReportsSystem.ViewModels;
namespace ReportsSystem.Controllers
{
[PasswordExpired]
public class UserController : Controller
{
private readonlyUserService _userService;
private readonlyAuditService _auditService;
private readonlyEventService _eventService;
private readonlyLoginService _loginService;
private readonlyReportService _reportService;
private readonlyPasswordService _passwordService;
public UserController(
UserServiceuserService,
AuditServiceauditService,
EventServiceeventService,
LoginServiceloginService,
ReportServicereportService,
PasswordServicepasswordService
)
{
_auditService = auditService;
_userService = userService;
_eventService = eventService;
4
482.ЧДТУ.32281-01 12 01
_loginService = loginService;
_reportService = reportService;
_passwordService = passwordService;
}
public ActionResultIndex(UserViewModel model)
{
FillUserListViewModel(model);
return View(model);
}
[HttpGet]
public ActionResultCreate()
{
return RedirectToAction("Index");
}
[HttpPost]
public ActionResultCreate(UserViewModel model)
{
varexistingUser = _userService.GetUserByEmail(model.Email);
if (existingUser != null)
{
ModelState.AddModelError(string.Empty, Message.USER_EMAIL_EXISTS);
}
if (ModelState.IsValid)
{
_userService.CreateUser(model);
FlashMessage.Confirmation(model.StatusId == UserStatus.PENDING ?
Message.USER_PROFILE_PENDING :
Message.USER_PROFILE_CREATED
);
return RedirectToAction("Index");
}
FillUserListViewModel(model);
model.InlineFormSubmitted = true;
5
482.ЧДТУ.32281-01 12 01
return View("Index", model);
}
[HttpGet]
public ActionResultEdit()
{
return RedirectToAction("Index");
}
[HttpPost]
public ActionResultEdit(UserViewModel model)
{
varcurrentUser = _userService.GetUserById(model.inputEditUserID);
varexistingUser = _userService.GetUserByEmail(model.Email);
varlastPasswords = _auditService.GetOldUserPasswords(currentUser);
varcurrentPassword = _passwordService.CreatePasswordHash(model.Password ??
"");
if (lastPasswords.Contains(currentPassword))
{
ModelState.AddModelError(string.Empty,
string.Format(Message.USER_PASSWORD_EXISTS, currentUser.FullName));
}
if (existingUser != null &¤tUser.Email != model.Email)
{
ModelState.AddModelError(string.Empty, Message.USER_EMAIL_EXISTS);
}
if (ModelState.IsValid)
{
_userService.UpdateUser(model);
FlashMessage.Confirmation(Message.USER_PROFILE_SAVED);
}
FillUserListViewModel(model);
model.InlineFormSubmitted = true;
return View("Index", model);
}
6
482.ЧДТУ.32281-01 12 01
public ActionResultDelete(int id)
{
var events = _eventService.GetEventsByUserId(id);
if (events.Count> 0)
{
FlashMessage.Warning(Message.USER_DELETE_FAILED);
return RedirectToAction("Index", "User");
}
var user = _userService.DeleteUser(id);
varuserName = user?.FullName;
FlashMessage.Info(userName, Message.USER_DELETE_SUCCESS);
return RedirectToAction("Index", "User");
}
private void FillUserListViewModel(UserListViewModel model)
{
model.Roles = _userService.GetUserRoles();
model.Titles = _userService.GetUserTitles();
model.Reports = _reportService.GetAll();
model.AuthUser = _loginService.GetAuthUser();
model.Statuses = _userService.GetUserStatuses();
model.RSMUsers = _userService.GetRSMUsers();
model.ASDUsers = _userService.GetASDUsers();
model.CADUsers = _userService.GetCADUsers();
model.Companies = _userService.GetUserCompanies();
model.SortOptions = SortOption.GetUserSortOptions();
model.ActiveUsers = _userService.GetActiveUsers(
model.inputFilterSearch,
model.inputFilterSortBy,
model.inputFilterOrder,
model.inputFilterRegion
);
model.PendingUsers = _userService.GetPendingUsers(
model.inputFilterSearch,
model.inputFilterSortBy,
model.inputFilterOrder,
model.inputFilterRegion
7
482.ЧДТУ.32281-01 12 01
);
model.PendingUsersCount = _userService.GetPendingUsersCount();
model.NeedAttentionEventsCount =
_eventService.GetNeedAttentionEventsCount();
model.RandomPassword = _passwordService.Generate();
}
}
}
using System;
using System.Web.Mvc;
using ReportsSystem.Models;
using System.Collections.Generic;
using ReportsSystem.Services;
using ReportsSystem.ViewModels;
using ReportsSystem.Filters;
using System.Text;
namespace ReportsSystem.Controllers
{
[Authorize]
[PasswordExpired]
public class ReportController : Controller
{
private readonlyUserService _userService;
private readonlyLogService _logService;
private readonlyEventService _eventService;
private readonlyLoginService _loginService;
private readonlyFileService _fileService;
private readonlyPdfExportService _pdfExportService;
private readonlyCsvExportService _csvExportService;
public ReportController(
UserServiceuserService,
LogServicelogService,
LoginServiceloginService,
EventServiceeventService,
FileServicefileService,
PdfExportServicepdfExportService,
CsvExportServicecsvExportService
8
482.ЧДТУ.32281-01 12 01
)
{
_userService = userService;
_logService = logService;
_eventService = eventService;
_loginService = loginService;
_fileService = fileService;
_pdfExportService = pdfExportService;
_csvExportService = csvExportService;
}
public ActionResultIndex(ReportViewModel model)
{
var events = _eventService.GetList(
model.e,
model.fev_search,
model.sortby,
model.FilterStatuses,
model.FilterGpos,
model.FilterRegions,
model.FilterStates,
model.fev_date
);
model.Gpos = _eventService.GetEventGpos();
model.States = _eventService.GetStates();
model.Regions = _eventService.GetRegions();
model.AuthUser = _loginService.GetAuthUser();
model.Statuses = _eventService.GetEventStatusesForReport();
model.ActiveUsers = _userService.GetActiveUsers("",
SortOption.USER_FIRST_NAME);
model.EventBuckets = _eventService.GetGroupedList(events, model.sortby);
ViewBag.Page = "report";
ViewBag.NumberOfSearch= !string.IsNullOrWhiteSpace(model.fev_search) ? 1 :
0;
ViewBag.NumberOfFilters = model.NumberOfFilters;
ViewBag.SortBy = model.sortby;
return View(model);
}
9
482.ЧДТУ.32281-01 12 01
public ActionResultCreateFile(int id)
{
varserializedFile = _fileService.CreateSerializedEvent(id);
byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(serializedFile);
return File(fileBytes, "text/file", "file.ics");
}
public JsonResultRegister(FormCollection collection)
{
intEventId = Convert.ToInt32(collection["event"]);
var User = _loginService.GetAuthUser();
if (EventId> 0 &&User != null)
{
var Admins = new HashSet<User>();
var Event = _eventService.RegisterUserRequest(EventId, User.Id);
varLogTemplate = new EventUserViewModel()
{
User = User,
Event = Event
};
if (User.Asd != null)
{
_logService.SendEventRegistrationASDLog(LogTemplate);
}
if (User.Rsm != null &&User.Rsm.RoleId<= UserRole.ADMIN)
{
Admins.Add(User.Rsm);
}
Admins.Add(Event.Owner);
Admins.UnionWith(Event.Rsms);
_logService.SendEventRegistrationLog(LogTemplate);
_logService.SendEventRegistrationAdminLog(LogTemplate, Admins);
return Json(Event.Id);
}
10
482.ЧДТУ.32281-01 12 01
return Json(new {});
}
public JsonResultShare(ReportViewModel model)
{
var Event = _eventService.GetSingleEvent(model.e.Value);
var Users = new HashSet<int>(model.SelectedUsers);
varAuthUser = _loginService.GetAuthUser();
if (Event != null &&Users.Count> 0 &&AuthUser != null)
{
foreach(var item in Users)
{
var User = _userService.GetUserById(item);
if (User != null)
{
_logService.SendShareEvent(new EventUserViewModel()
{
AuthUser = AuthUser,
Event = Event,
User = User
});
}
}
}
return Json(Users);
}
public ActionResultExportPdf(ReportViewModel model)
{
var events = _eventService.GetList(
model.e,
model.fev_search,
model.sortby,
model.FilterStatuses,
model.FilterGpos,
model.FilterRegions,
model.FilterStates,
model.fev_date
11
482.ЧДТУ.32281-01 12 01
);
model.EventBuckets = _eventService.GetGroupedList(events, model.sortby);
varfileName = $"Report Events ({DateTime.Now:yyyy-MM-ddHmmss}).pdf";
var stream = _pdfExportService.GenerateReportPdf(model);
return File(stream, "application/pdf", fileName);
}
public ActionResultExportCsv(ReportViewModel model)
{
var events = _eventService.GetList(
model.e,
model.fev_search,
model.sortby,
model.FilterStatuses,
model.FilterGpos,
model.FilterRegions,
model.FilterStates,
model.fev_date
);
model.EventBuckets = _eventService.GetGroupedList(events, model.sortby);
varfileName = $"Report Events ({DateTime.Now:yyyy-MM-ddHmmss}).csv";
var csv = _csvExportService.GenerateReportCsv(model);
var encoding = Encoding.GetEncoding("iso-8859-1");
var bytes = encoding.GetBytes(csv);
return File(bytes, "text/csv", fileName);
}
}
using Microsoft.Owin;
using Owin;
using Microsoft.Owin.Security.Cookies;
using System.Web.Helpers;
using System.Security.Claims;
[assembly: OwinStartup(typeof(IdentityUoWApp.Startup))]
namespace IdentityUoWApp
12
482.ЧДТУ.32281-01 12 01
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
LoginPath = new PathString("/Login"),
});
}
}
}
ДОДАТОК В
Дослідження методів масштабування програмного забезпечення у
великих корпоративних комп'ютерних мережах
Інструкція користувача
482.ЧДТУ.32281-01 34 01
Листів 3
Розробник _______________ Олексій КОЛОТИЛО
Черкаси 2023
2
482.ЧДТУ.32281-01 34 01
Потрібно переконатися, що сервер має встановлену операційну
систему, яка підтримує виконання .NET додатків. Windows Server або Linux з
можливістю запуску .NET Core/5.0+ є найбільш поширеними варіантами. На
сервері потрібно встановити .NET Runtime або .NET CoreRuntime залежно від
версії додатку.
Завантажити скомпільований додаток (можливо, у вигляді .dll або
інших виконуваних файлів) на сервер. Це може бути зроблено через FTP,
SSH або будь-який інший метод передачі файлів.
Скомпільований додаток - це програма, код якої був перетворений з
рядків програмного коду (зазвичай у вигляді тексту) в машинний код,
зрозумілий комп'ютером. Процес перетворення виконується компілятором,
програмою, яка перетворює вихідний код програми (написаний, наприклад,
на C#, Java, C++, Python тощо) у виконуваний файл, здатний запускатися на
комп'ютері чи сервері без необхідності наявності вихідного коду.
Скомпільований додаток може мати розширення .exe (виконуваний
файл для .NET Framework) або .dll (бібліотека класів для .NET Framework
або .NET Core).
Впевнитися, що всі необхідні ресурси (бібліотеки, конфігураційні
файли) для додатку також доступні на сервері. Потрібно використати
командний рядок або термінал на сервері для навігації до каталогу, де
розташований ваш додаток.
Запустити додаток викликом відповідної команди для вашої
версії .NET Runtime/NET Core:
>dotnet ReportService.exe
Після запуску перевірте журнали (logs) та можливі повідомлення про
помилки, щоб переконатися, що додаток працює на сервері. Використовувати
3
482.ЧДТУ.32281-01 34 01
засоби моніторингу сервера для слідкування за використанням ресурсів та
продуктивністю додатку.
Система легування Graylog – це потужний інструмент, який дозволяє
збирати, аналізувати та візуалізувати журнали подій і логи з різних джерел у
реальному часі. Розроблений додаток, який використовує систему легування
Graylog, отримує можливість надійно моніторити та перевіряти
працездатність. Використання системи легування Graylog дозволяє
забезпечити ефективний моніторинг та аналіз додатку, що допомагає
збільшити стабільність та надійність роботи системи. системи.