Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

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

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

    • перевіряє синтаксис конфігурацій,

    • виконує dry-run (імітаційний запуск),

    • застосовує зміни в обраній інфраструктурі.

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


Власні сервіси, що розгортаються в Kubernetes, поділяються на два типи:

  • Stateless-сервіси – не зберігають стан і не мають постійних даних.

  • Stateful-сервіси – зберігають стан у Kubernetes Persistent Volumes (на EC2).

Сервіси можуть бути:

ЦБД реалізовано як мікросервісну архітектуру, де кожен сервіс виконує окрему функцію та, у разі потреби, має власну ізольовану базу даних (MongoDB). Взаємодія між сервісами відбувається всередині кластера через API-виклики між контейнерам

Kubernetes-архітектура ЦБД

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

  • реалізує чітко визначену функцію або бізнес-процес;

  • за потреби зберігання інформації — має власну окрему базу даних (MongoDB або PostgreSQL), розміщену як Stateful компонент у Kubernetes;

  • не залежить від інших сервісів з точки зору зберігання даних.

Взаємодія між сервісами відбувається всередині кластера Kubernetes, через стандартні API-запити (HTTP/REST) між контейнерами. Такий підхід забезпечує:

  • незалежність компонентів;

  • гнучке масштабування;

  • спрощену підтримку і супровід;

  • підвищену безпеку, оскільки взаємодія обмежена внутрішньою мережею кластера.


Название

Версия

Тип

Кодовая база

Назначение

Nginx Ingress

v1.12.0 і вище

Stateless

OpenSource

API Gateway контролер
https://github.com/kubernetes/ingress-nginx

Velero

v1.15.2 і вище

Stateless

OpenSource

Система резервного копіювання
https://github.com/vmware-tanzu/velero
Резервні копії БД зберігаються в AWS S3 backet

OpenSearch

2.32.0 і вище

Stateful

OpenSource

Система збору логів
https://github.com/opensearch-project/helm-charts 

VictoriaMetrics

v1.113.0 і вище

Stateful

OpenSource

Система моніторинга https://github.com/VictoriaMetrics/VictoriaMetrics 

Kyverno

v1.13.4 і вище

Stateless

OpenSource

Система керування політиками кластера
https://github.com/kyverno/kyverno
використовується для автоматизації процесів

KubeArmor

v1.5.3 і вище

Stateless

OpenSource

Система керування runtime безпекою кластера
https://github.com/kubearmor/KubeArmor

Використовується для забезпечення безпеки

ElasticSearch

7.17.3 і вище

Stateful

OpenSource

Система повнотекстового пошуку та індексації даних ЦБД

archivist-databridge

v3.19.0 і вище

Stateless


Мікросервіс ЦБД, який відповідає за збереження історії використання даних по всім MongoDB

archivist-mongo

4.4.29 і вище

Stateful

OpenSource

База даних MongoDB сервісу archivist

auction-api

v3.76.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за проходження аукціонів

auction-chronograph

v3.76.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за фонові процеси в аукціонах

auction-databridge

v3.76.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з аукціонами

auction-mongo

4.4.29 і вище

Stateful

OpenSource

База данных MongoDB сервісу auction

auth-api

v0.27.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за аутентифікацію в API

auth-databridge

v0.27.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісами аутентифікації

billing-api

v3.66.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за фінансові розрахунки

billing-databridge

v3.66.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом billing

dictionaries-and-classifiers-api

v3.28.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за словники та класифікатори обʼєктів

dictionaries-and-classifiers-databridge

v3.28.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом dictionaries-and-classifiers

document-storage-api

v3.41.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за зберігання ілюстрацій до аукціонів

document-storage-databridge

v3.41.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом document-storage

document-storage-thumbnail-worker

v3.41.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за створення мініатрюр з ілюстрацій до аукціону

document-storage-mongo

4.4.29 і вище

Stateful

OpenSource

База данных MongoDB сервісу document-storage

jobber-announcement-watcher

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за зміни в ланцюжках аукціонів

jobber-api

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за ланцюжки аукціонів 

jobber-chronograph

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за за фонові процеси в ланцюжках аукціонів

jobber-databridge

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом jobber

jobber-large-announcement-watcher

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за зміни в ланцюжках аукціонів

jobber-mirror

v3.36.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за синхронізацію майданчиків

jobber-mongo

4.4.29 і вище

Stateful

OpenSource

База данных MongoDB сервісу jobber

notification-api

v3.20.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за Нотифікації (оповіщення про зміну даних)

notification-databridge

v3.20.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом Нотифікацій 

procedure-api

v3.128.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за бізнес процеси в аукціонах

procedure-chronograph

v3.128.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за фонові процеси сервісу procedure

procedure-databridge

v3.128.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом procedure

procedure-mirror

v3.128.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за синхронізацію майданчиків

procedure-mongo

4.4.29 і вище

Stateful

OpenSource

База данных MongoDB сервісу procedure

protocol-api

v3.88.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за формування протоколів проходження аукціонів

protocol-databridge

v3.88.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з сервісом protocol

registry-api

v3.68.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за реєстри

registry-databridge

v3.68.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає за взаємодію інших сервісів з реестрами аукционов

registry-mongo

4.4.29 і вище

Stateful

OpenSource

База данных MongoDB сервісу registry

search-api

v3.57.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за пошук по даним ЦБД

survey-api

v3.15.0 і вище

Stateless

Власна розробка

Мікросервіс ЦБД, який відповідає  за збір фідбека про проходження аукціонів

survey-postgresql

14 і вище

Stateful

OpenSource

База данных PostgreSQL сервісу survey

Kubernetes GitLab

Название

Версия

Тип

Кодовая база

Назначение

Nginx Ingress

v1.12.0 і вище

Stateless

OpenSource

API Gateway контролер
https://github.com/kubernetes/ingress-nginx

Velero

v1.15.2 і вище

Stateless

OpenSource

Система резервного копіювання
https://github.com/vmware-tanzu/velero
Резервні копії БД зберігаються в AWS S3 backet

OpenSearch

2.32.0 і вище

Stateful


Система збору логів
https://github.com/opensearch-project/helm-charts 

VictoriaMetrics

v1.113.0 і вище

Stateful

OpenSource

Система моніторинга https://github.com/VictoriaMetrics/VictoriaMetrics 

Kyverno

v1.13.4 і вище

Stateless

OpenSource

Система управління політиками кластера
https://github.com/kyverno/kyverno
використовується для автоматизації процесів

KubeArmor

v1.5.3 і вище

Stateless

OpenSource

Система керування runtime безпекою кластера
https://github.com/kubearmor/KubeArmor

використовується для забезпечення безпеки 

ElasticSearch

7.17.3 і вище

Stateful

OpenSource

Система повнотекстового пошуку та індексації даних ЦБД

GitLab

17.9 і вище

Stateful

OpenSource

Система керування кодовою базою та CI/CD процесами

PostgreSQL

14 і вище

Stateful

OpenSource

База данных PostgreSQL для GitLab

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

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

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

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

    • Розташування: дата-центр eu-west-1b

    • Призначення: основний кластер, в якому безпосередньо розгортається Центральна база даних (ЦБД), її компоненти та вся прикладна логіка.

    • Характеристики: забезпечує стабільну роботу ключових сервісів, включаючи бази даних, API, бекенд-логіку тощо.

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

    • Розташування: дата-центр eu-west-1c

    • Призначення: обслуговує адміністративні процеси, включаючи деплоймент, оновлення інфраструктури, CI/CD-процеси, моніторинг та логування.

    • Основний сервіс: GitLab, який відповідає за реалізацію автоматичних пайплайнів, перевірку коду, розгортання застосунків через Helm/Terraform.

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

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

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

...

  • мінімізує затримки при обміні даними;

  • гарантує високий рівень безпеки (ізоляція трафіку в межах AWS);

  • забезпечує масштабованість і простоту інтеграції нових сервісів.

...

Взаємодія

...

з API ЦБД

Взаємодія з API ЦБД відбувається за допомогою REST API запитів через VPN зʼєднання. Cipher VPN Server сервер встановлено на окремій віртуальній машині (AWS EC2) та приймає запити на підключення із інтернету. REST API запити, які надсилаютьсявсередині VPN тунелю, надсилаються на балансувальник (AWS NLB), який розміщено перед кластером ЦБД.

  • Всі сервіси обмінюються даними через захищений API (REST).

  • Використовується шифрування трафіку через TLS 1.3.

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

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

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

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

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

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

  • Час обробки запиту – не більше 500 мс.

  • Кількість одночасних користувачів – до 100 10 000.

  • Горизонтальне масштабування дозволяє автоматично додавати нові сервери.