...
1. Загальний опис архітектури
Система АТ "Прозорро.Продажі" є розподіленою інформаційною системою, яка забезпечує проведення електронних аукціонів у форматі відкритих торгів.
Архітектура побудована за принципом мікросервісного підходу, що дозволяє забезпечити гнучкість, масштабованість і високу доступність.
Всі компоненти розгорнуті в хмарному середовищі (AWS)
Взаємодія між компонентами здійснюється через REST API
Забезпечується авторизація та аутентифікація через OAuth 2.0
Всі аукціонні процеси логуються для контролю прозорості та аналітики
1.1. Карта сервісів
...
ЦБД являє собою Core API систему, яка не має інтерфейсу для взаємодії з інтернет-користувачем. З системою взаємодіють сайти (площадки/майданчики) способом надсилання REST API запитів через VPN зʼєднання.
Інфраструктура ЦБД базується на платформі оркестрації Kubernetes.
З метою уникнення залежності від зовнішніх постачальників послуг (Cloud provider), всі компоненти системи, включно з базами даних, розгортаються всередині кластера Kubernetes і зберігають інформацію всередині цього ж кластера.
Такий підхід дозволяє розгорнути систему в мінімальні терміни на будь-якому хмарному провайдері (AWS, Google, Azure, Digital Ocean). Основною вимогою є лише підтримка роботи з Kubernetes.
1.1. Структура
2. Логічна архітектура
Інфраструктура як код (Infrastructure as Code, IaC)
Усі операції, пов’язані з розгортанням інфраструктури, оновленням програмного забезпечення та адміністративними задачами, реалізуються відповідно до підходу Infrastructure as Code (IaC) — «інфраструктура як код». Це сучасний метод управління інфраструктурою, який дозволяє автоматизувати створення, зміну та підтримку обчислювальних ресурсів за допомогою коду, що зберігається в системі контролю версій.
Переваги підходу IaC:
Автоматизація процесів розгортання та оновлення, що значно знижує ризик людської помилки;
Відтворюваність середовищ: однакові конфігурації можна розгортати в різних середовищах (Dev, Stage, Prod) без змін;
Масштабованість: інфраструктура легко масштабується через зміну параметрів у коді;
Контроль змін: усі зміни фіксуються в git-репозиторіях, що дозволяє відслідковувати історію, робити рев’ю та швидко відкотитись до стабільної версії при потребі.
Технології, які використовуються:
Terraform (v1.11.1)
Використовується для створення та управління ресурсами хмарної інфраструктури, включаючи розгортання Kubernetes-кластера. Завдяки декларативному синтаксису дозволяє легко описати архітектуру середовища та керувати залежностями між компонентами.Helm (v3.17.1)
Використовується для розгортання та оновлення застосунків всередині Kubernetes-кластера. Helm Charts дозволяють шаблонізувати конфігурації та централізовано керувати версіями застосунків, що спрощує CI/CD-процеси.GitLab CI/CD
Усі дії з розгортання та оновлення виконуються автоматично через пайплайни в GitLab. Після коміту змін у репозиторій запускається відповідний пайплайн, який проходить усі етапи — від валідації коду до розгортання в обране середовище. Це забезпечує повну автоматизацію без необхідності втручання людини.
Як це працює на практиці:
Розробник або адміністратор вносить зміни в код Terraform або Helm.
Зміни комітяться у GitLab-репозиторій.
GitLab CI/CD автоматично запускає пайплайн, що:
перевіряє синтаксис конфігурацій,
виконує dry-run (імітаційний запуск),
застосовує зміни в обраній інфраструктурі.
Успішне виконання пайплайну призводить до оновлення реального середовища (наприклад, Dev або Prod).
3. Фізична архітектура
Інфраструктура системи реалізована на основі двох незалежних кластерів Kubernetes, розгорнутих у хмарному середовищі AWS (Europe, Ірландія) в різних дата-центрах для забезпечення відмовостійкості, георезервування та безперервності бізнес-процесів.
Структура кластерів:
Кластер №1 — ЦБД (Центральна база даних)
Розташування: дата-центр
eu-west-1bПризначення: основний кластер, в якому безпосередньо розгортається Центральна база даних (ЦБД), її компоненти та вся прикладна логіка.
Характеристики: забезпечує стабільну роботу ключових сервісів, включаючи бази даних, API, бекенд-логіку тощо.
Кластер №2 — Система автоматизації та CI/CD
Розташування: дата-центр
eu-west-1cПризначення: обслуговує адміністративні процеси, включаючи деплоймент, оновлення інфраструктури, CI/CD-процеси, моніторинг та логування.
Основний сервіс: GitLab, який відповідає за реалізацію автоматичних пайплайнів, перевірку коду, розгортання застосунків через Helm/Terraform.
Комунікація між кластерами
Для забезпечення безпечного та ефективного обміну командами та даними між двома кластерами (наприклад, під час оновлення компонентів або запуску автоматизованих сценаріїв), використовується:
AWS VPC Peering — це захищене з'єднання між віртуальними приватними мережами (VPC), що дозволяє кластерам обмінюватися даними напряму без використання публічного інтернету.
Такий підхід:
мінімізує затримки при обміні даними;
гарантує високий рівень безпеки (ізоляція трафіку в межах AWS);
забезпечує масштабованість і простоту інтеграції нових сервісів.
2. Логічна архітектура
Система складається з декількох рівнів:
| Рівень | Компоненти | Опис |
|---|---|---|
| Користувацький рівень | Адмінка, Модуль аукціонів | Інтерфейс для користувачів аукціону (учасники, адміністратори, майданчики) |
| Шлюз API | API Gateway | Єдина точка входу для клієнтів та зовнішніх систем |
| Мікросервіси |
| Кожен сервіс відповідає за окремий функціонал |
| База даних | MongoDB, Redis (кешування) | Зберігання всіх даних аукціонів, користувачів, ставок |
...
Система розгорнута у хмарному середовищі та використовує наступні технології:
Контейнери (Docker, Kubernetes) – для розгортання та управління сервісами.Балансувальник навантаження (NGINX, AWS ALB) – рівномірний розподіл запитів.Системи логування та моніторингу (Elasticsearch, Kibana, Prometheus, Grafana) – для відстеження роботи системи.Автоматичне масштабування (Kubernetes HPA) – підвищення продуктивності під час пікових навантажень.
Приклад потоку запиту:
Користувач публікує обʼєкт ProcedureЗапит надходить до API Gateway, який перенаправляє його до відповідного сервісу.Якщо це участь в аукціоні, запит проходить через сервіс обробки ставок.Дані кешуються у Redis для швидкого доступу.
...
4. Взаємодія компонентів
Всі сервіси обмінюються даними через захищений API (REST).
Використовується шифрування трафіку через TLS 1.3.
...
