(Б-13) Сервіс «Громадський бюджет» : Архітектура
Архітектура системи включає наступні глобальні частини:
<HTML><ul></HTML>
<HTML><li></HTML><HTML><p></HTML>Балансувальник. Підключення зовнішніх клієнтів до служб відбувається через балансувальник навантаження на базі nginx / openresty (в разі критичних навантажень їх може бути кілька, які розподіляються через round-robin dns).<HTML></p></HTML>
<HTML><p></HTML>Кожен балансувальник розподіляє запити між N серверами додатків, кожен з яких взаємодіє із зображеними сервісами по ізольованій внутрішній мережі (крім зовнішніх сервісів, виділених на схемі, взаємодія з якими відбувається по зовнішній мережі).
<HTML></p></HTML><HTML></li></HTML>
<HTML><li></HTML>MySQL-сервер. MySQL був розроблений компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз MySQL — одна з найпоширеніших систем керування базами даних. Вона використовується, в першу чергу, для створення динамічних веб-сторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.
<HTML></li></HTML>
<HTML><li></HTML>Сервер для розподіленого сховища Redis. Розподілене сховище пар формату «ключ – значення», які зберігаються в оперативній пам'яті. Інструмент з відкритим сирцевим кодом забезпечує довготривале зберігання таких пар даних, якщо це необхідно для коректної та продуктивної роботи системи, та підтримує транзакції, що дозволяють за один крок виконати певну кількість команд.
<HTML></li></HTML>
<HTML><li></HTML>Сервіс повнотекстового пошуку Elastic Search. Розподілена система повнотекстового пошуку на базі Lucene, яка має протокол передачі даних HTTP та працює з документами JSON. Система має відкритий сирцевий код, написана на Java та розповсюджується за ліцензією Apache 2.0.
<HTML></li></HTML>
<HTML><li></HTML>Файловий сервер Minio. Minio це просте, швидке і сумісний з AWS S3 сховище об'єктів. Minio створений для розміщення неструктурованих даних, таких як фотографії, відеозаписи, файли журналів, резервні копії, а також образи віртуальних машин і контейнерів. Невеликий розмір дозволяє включати його до складу стека додатків, аналогічного Node.js, Redis і MySQL. У minio також підтримується розподілений режим (distributed mode), який надає можливість підключення до одного сервера зберігання об'єктів безлічі дисків, в тому числі розташованих на різних машинах
<HTML></li></HTML>
<HTML><li></HTML>Сервер черг Beanstalkd. Сервер черг, який розроблено для зменшення часу завантаження веб-сторінок у веб-системах великого розміру за рахунок асинхронного виконання чисельних завдань.
<HTML></li></HTML>
<HTML><li></HTML>OSM-сервер Nominatim. Некомерційний картографічній веб-проект зі створення загальнодоступних інтерактивних мап світу. Кожна карта включає вузли, відрізки та зв’язки, які зберігаються як дані формату XML
<HTML></li></HTML>
<HTML><li></HTML>Сервер адміністративного керування Ansible. Ansible - система управління конфігураціями, написана на Python, з використанням декларативного мови розмітки для опису конфігурацій. Використовується для автоматизації налаштування і розгортання програмного забезпечення. Зазвичай використовується для управління Linux-вузлами, але Windows також підтримується. Підтримує роботу з мережевими пристроями, на яких встановлено Python версії 2.4 і вище по SSH або WinRM з'єднанню.<HTML></li></HTML><HTML></ul></HTML>
Планується використання:
*Сервер моніторингу Zabbix. Zabbix - вільна система моніторингу та відстеження статусів різноманітних сервісів комп'ютерної мережі, серверів та мережевого обладнання. Для зберігання даних використовується MySQL, PostgreSQL, SQLite або Oracle Database, веб-інтерфейс написаний на PHP. Підтримує декілька видів моніторингу: Simple checks - може перевіряти доступність і реакцію стандартних сервісів, таких як SMTP або HTTP, без встановлення будь-якого програмного забезпечення на спостережуваному хості. Zabbix agent - може бути встановлений на UNIX-подібних або Windows-хостах для отримання даних про навантаження процесора, використання мережі, дискового простору і так далі. External check - виконання зовнішніх програм, також підтримується моніторинг через SNMP.