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:

Технології, які використовуються:

Як це працює на практиці:

  1. Розробник або адміністратор вносить зміни в код Terraform або Helm.

  2. Зміни комітяться у GitLab-репозиторій.

  3. GitLab CI/CD автоматично запускає пайплайн, що:

  4. Успішне виконання пайплайну призводить до оновлення реального середовища (наприклад, Dev або Prod).


3. Фізична архітектура

Інфраструктура системи реалізована на основі двох незалежних кластерів Kubernetes, розгорнутих у хмарному середовищі AWS (Europe, Ірландія) в різних дата-центрах для забезпечення відмовостійкості, георезервування та безперервності бізнес-процесів.

Структура кластерів:

  1. Кластер №1 — ЦБД (Центральна база даних)

  2. Кластер №2 — Система автоматизації та CI/CD

Комунікація між кластерами

Для забезпечення безпечного та ефективного обміну командами та даними між двома кластерами (наприклад, під час оновлення компонентів або запуску автоматизованих сценаріїв), використовується:

Такий підхід:

4. Взаємодія компонентів

Приклад взаємодії:

  1. Користувач подає заявку на участь в аукціоні.

  2. Дані перевіряються

  3. Якщо все гаразд – користувач отримує доступ до аукціону.

  4. Всі події логуються в централізовану систему моніторингу.



5. Вимоги до продуктивності та масштабованості