You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 25 Next »

Опис робочих процесів (бізнес-процесів)

Узагальнений бізнес-процес, яким можна описати основний функціонал

В залежності від "Напряму роботи" і "Типу аукціону" логіка може відрізнятися, що обовʼязково буде зазначено в ТЗ до розробки процедури Напряму.

Загальний опис

Програмний продукт забезпечує автоматизацію електронних аукціонів, включаючи публікацію оголошення (процедури), реєстрацію учасників, подачу пропозицій, проведення торгів (аукціону), визначення переможця та підписання протоколу і договору.

Основні бізнес-процеси

Публікація оголошення (процедури) 

  1. Організатор аукціону заходить в особистий кабінет на обраному Майданчику
  2. Заповнює форму реєстрації та проходить автентифікацію
  3. Обирає доступний із переліку напрям роботи (оренда, продаж тощо)
  4. Заповнює всі обовʼязкові поля і документи обраної процедури (напряму)
  5. Публікує оголошення (процедуру)
  6. Система зберігає дані в MongoDB та публікує їх у загальнодоступному каталозі.
  7. Учасники можуть переглядати перелік активних аукціонів та подавати заявки.

Реєстрація учасника

  1. Учасник заходить на платформу через обраний Майданчик.

  2. Заповнює форму реєстрації та проходить автентифікацію

  3. Отримує підтвердження реєстрації та доступ до особистого кабінету.

Реєстрація на аукціон

  1. Учасник подає заявку на участь у торгах.

  2. Підтверджує згоду з умовами.

  3. Вносить гарантійний і реєстраційний внесок

  4. Отримує унікальний токен доступу до торгів.

Проведення аукціону

  1. У визначений час система автоматично розпочинає торги.

  2. Учасники подають ставки, які фіксуються в MongoDB із часовими мітками.

  3. Після закінчення часу торгів система визначає переможця за найвищою ставкою.

  4. Генерується протокол аукціону та надається організатору на підпис

Завершення торгів і укладання договору

  1. Переможець отримує повідомлення про виграш.

  2. Організатор підтверджує результати аукціону.

  3. У разі відмови переможця, система автоматично пропонує лот наступному учаснику

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

Логування бізнес-процесів

  • Всі ключові дії (реєстрація, ставки, підписання договору) мають логуватися

Вимоги до програмного забезпечення та технічних засобів

Вимоги до програмного забезпечення 

Основна вимога: Обране рішення має бути контейнеризовано та запускатися в куб кластері

Операційна система

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1Debian GNU/Linux 12 (Bookworm)12.0 чи новішаОС для Linux-серверів, контейнеризаціяOpen-source, GPL

Бази даних

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1MongoDB15 чи новішаNoSQL база данихOpen-source
2Redis7 чи новішаКешування даних, in-memory сховищеOpen-source, BSD License
3PostgreSQL14 чи новішаРеляційна база данихOpen-source
4Elasticsearch7.17.3 чи новішаВикористовується для searchOpen-source

Сервери додатків

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1Nginx1.24 чи новішаВеб-сервер, балансування навантаженняOpen-source, BSD License
2Gunicorn20.1 чи новішаWSGI-сервер для Python-додатківOpen-source, MIT License
3

aiohttp

3.9.3 чи новішаАсинхронний HTTP-сервер та клієнт для Python, підтримка REST API, WebSocket Open-source, Apache 2.0 License

Мікросервіси та API

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1REST API
Запити та маніпуляція данимиOpen-source

Контейнеризація та оркестрація

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1Docker27 і вищеКонтейнеризація додатківOpen-source, Apache 2.0
2Kubernetes1.32 і вищеОркестрація контейнерівOpen-source, Apache 2.0

Системи моніторингу та логування

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1Prometheus2.47Моніторинг метрикOpen-source, Apache 2.0
2Grafana10Візуалізація метрик та логівOpen-source, AGPLv3
3Opensearch2.19 і вищеПошук та аналіз логівOpen-source

Інструменти безпеки

НайменуванняВерсіяФункціональні можливостіЛіцензійні умови використання
1OpenSSL3.0Шифрування та захист данихOpen-source, Apache 2.0
2Сipher-vpn2 і вище
Open-source

Вимоги до інтеграції з іншими системами та програмними продуктами (інтероперабельність).

Загальні вимоги

  • Програмний продукт повинен забезпечувати можливість інтеграції з зовнішніми системами через стандартизований протокол REST API

  • Усі інтеграційні запити та відповіді повинні передаватися у форматах JSON або XML відповідно до специфікацій суміжних систем.

  • Підтримка роботи з чергами повідомлень (RabbitMQ, Apache Kafka) для асинхронної обробки запитів.

  • Реалізація механізмів збереження збоїв інтеграції (retry logic, circuit breaker).

Інтеграція з базами даних та сховищами

  • Підтримка реплікації та обміну даними з MongoDB.

  • Інтеграція з Elasticsearch для розширеного пошуку та аналітики.

  • Використання S3 Compatible Storage для зберігання файлів.

Взаємодія з державними та сторонніми сервісами

  • Підключення до Prozorro.Sale через офіційний API для отримання даних про обʼєкти ЦБД.

  • Інтеграція з державними реєстрами через API

  • Взаємодія з сервісами електронного документообігу

Логування та моніторинг інтеграцій

  • Використання Prometheus та Grafana для моніторингу API-запитів.

  • Збереження логів інтеграцій в Opensearch із подальшою аналітикою через OpenSearch Dashboards

  • Налаштування алертів у разі збою інтеграційних процесів (наприклад, через Zabbix, Grafana Alerts, AWS CloudWatch).

Вимоги до продуктивності інтеграції

  • Час відповіді серверної частини (backend) на запити користувачів не повинен перевищувати 200 мс у 95% запитів (P95)
  • Пропускна здатність API повинна забезпечувати обробку не менше 5000 запитів на хвилину без деградації продуктивності

Вимоги до безпеки програмного забезпечення (захист від несанкціонованого доступу, захист даних)

  • Усі дії користувачів повинні логуватися та зберігатися у захищеному середовищі OpenSearch із прив’язкою до ID обʼєкта та часової мітки
  • Реалізація механізмів виявлення та запобігання вторгненням (IDS/IPS)
  • Підтримка двофакторної автентифікації (2FA) для адміністративної панелі (Адмінка)
  • Автоматичний вихід із системи після 15 хвилин неактивності (конфігуровано)
  • Використання хешування паролів
  • Регулярне створення резервних копій даних із шифруванням та зберіганням у захищеному середовищі
  • Регулярне оновлення компонентів для усунення вразливостей
  • Використання WAF (Web Application Firewall) для моніторингу та блокування підозрілих запитів
  • Документування всіх інцидентів безпеки та їх аналіз для запобігання повторенню

Вимоги до масштабованості та надійності програмного забезпечення

  • Архітектура повинна підтримувати горизонтальне масштабування через балансувальник навантаження (наприклад, Nginx, AWS Network Load Balancer)
  • Використання контейнеризації (Docker) та можливість розгортання у кластерному середовищі (Kubernetes, AWS EKS)
  • Динамічне додавання нових екземплярів серверів при підвищеному навантаженні (авто-скейлінг через Kubernetes HPA або AWS Auto Scaling)
  • Використання Prometheus + Grafana для збору метрик та моніторингу продуктивності системи
  • Логування всіх ключових подій у Opensearch з можливістю фільтрації та аналітики
  • Система повинна мати засоби моніторингу працездатності всіх компонентів та системи оповіщення про збої та проблеми в роботі.
  • Система повинна мати механізми забезпечення відмовостійкості, такі як резервування компонентів, кластеризація, моніторинг та автоматичне відновлення після збоїв.

Вимоги до тестування програмного забезпечення (види тестування, критерії приймання)

  • Усі функціональні та нефункціональні вимоги до програмного забезпечення повинні бути підтверджені тестуванням
  • Усі виявлені дефекти мають фіксуватися у системі управління завданнями (JIRA, gitLab issue)

Види тестування, яке може застосовуватися

Вид тестуванняОпис
1Модульне тестуванняПеревірка роботи окремих модулів системи
2Інтеграційне тестуванняПеревірка взаємодії між модулями та сервісами
3Функціональне тестуванняПеревірка відповідності функцій заявленим вимогам
4Навантажувальне тестуванняОцінка продуктивності під високим навантаженням
5Стрес-тестуванняПеревірка роботи системи в екстремальних умовах
6Тестування безпекиВиявлення вразливостей, захист від атак
7UX/UI тестуванняОцінка зручності використання інтерфейсу
8Регресійне тестуванняПеревірка працездатності після внесення змін

Критерії приймання програмного забезпечення

Командою тестування складаються:

  • тестові сценарії
  • тест-кейси

Програмне забезпечення вважається прийнятим, якщо:

  1. Усі критичні баги (blocking, critical) виправлені

  2. Кількість дефектів рівня high не перевищує 2 на 1000 тест-кейсів

  3. Продуктивність відповідає встановленим вимогам

  4. Інтеграційні API відповідають документації та коректно взаємодіють з зовнішніми системами.

  5. Успішно виконані приймальні випробування, що включають:

    • Функціональне тестування (тестування API)

    • Навантажувальне тестування

    • Безпекове тестування

    • UX/UI тестування (за наявності розробки фронту)

Вимоги до технічних засобів

Загальні вимоги

  • Програмний продукт повинен бути розгорнутий у хмарному середовищі AWS з використанням безсерверної архітектури.

  • Всі компоненти повинні бути керованими AWS-сервісами з автоматичним масштабуванням.

Перелік необхідних хмарних сервісів та їх параметри

СервісПризначенняОсновні характеристики
1Amazon S3Сховище для коду та статичних файлівВерсія сховища: S3 Standard, шифрування AES-256, увімкнене версіонування
2AWS LambdaВиконання серверного кодуМова: Python 3.9, Максимальний тайм-аут: 15 сек., RAM: 512MB-2GB
3AWS API GatewayОбробка HTTP-запитівREST API, авторизація через OAuth2, обмеження RPS: 1000
4AWS Fargate (ECS)Виконання контейнерних сервісівCPU: 2 vCPU, RAM: 4GB, Авто-скейлінг увімкнено
5Amazon DocumentDB (або MongoDB на EC2)NoSQL база данихВерсія: DocumentDB 5.0 (сумісна з MongoDB 5.0), реплікація Multi-AZ
6Amazon CloudFrontCDN для прискорення доступуКешування S3-об'єктів, TTL: 24 години
7AWS CloudWatchЛогування та моніторингЗбір метрик Lambda, API Gateway, RDS, алерти на помилки


Опис вимог до інтерфейсів та їх дизайну

Загальні вимоги до інтерфейсів

  • Інтуїтивно зрозумілий та легкий у використанні інтерфейс для всіх категорій користувачів (учасники, спостерігачі)
  • Сучасний, лаконічний та візуально привабливий дизайн, що відповідає Brand book 
    • Адаптивність інтерфейсу для роботи на різних пристроях (комп’ютери, планшети, мобільні телефони) та в браузерах (Google Chrome, Safari, Mozilla Firefox, Opera, MS Edge, MS Explorer тощо)
    • Забезпечення доступності для користувачів з особливими потребами
    • Підтримка двомовності інтерфейсу: українська та англійська

Деталізовані вимоги до нітерфейсів та дизайну описуються в ТЗ продукту, який реалізовуємо.

Опис вимог до архітектури зберігання та обміну даними

Використання MongoDB як основної бази даних для зберігання інформації про аукціони, учасників, ставки та інші дані.

Обґрунтування: гнучкість схеми, масштабованість та продуктивність при роботі з великими обсягами даних та неструктурованою інформацією.

MongoDB (кластер у AWS) використовується для зберігання всіх структурованих і напівструктурованих даних, включаючи:

    • Дані користувачів

    • Логічні об’єкти системи (аукціони, заявки тощо)

    • Журнали транзакцій

  • Amazon S3 використовується для зберігання:

    • Статичних файлів (зображення, документи, архіви)

    • Резервних копій

    • Логів роботи системи

Масштабованість

  • Забезпечення горизонтального масштабування MongoDB на AWS за допомогою шардування (sharding) для розподілу даних між кількома інстансами.
  • Використання можливостей автоматичного масштабування AWS для ресурсів, що використовуються MongoDB (наприклад, обчислювальні інстанси), для адаптації до змін навантаження.

Оптимізація продуктивності

  • Оптимізація запитів та індексація в MongoDB для забезпечення швидкого доступу до даних.
  • Використання можливостей кешування на рівні застосунку або AWS (наприклад, Amazon ElastiCache) для зменшення навантаження на базу даних.
  • Моніторинг продуктивності MongoDB на AWS за допомогою сервісів моніторингу AWS (наприклад, Amazon CloudWatch) та інструментів моніторингу MongoDB.

Формати обміну даними

  • Використання JSON як основного формату обміну даними, враховуючи його сумісність з MongoDB та широке використання у веб-розробці.

Протоколи обміну даними

  • Використання HTTP/HTTPS для обміну даними між клієнтами та сервером, а також між окремими сервісами.
  • Розгляд можливості використання WebSocket для обміну даними в режимі реального часу (наприклад, для оновлення інформації про хід аукціону).

Інтеграція з іншими системами

  • Використання API (RESTful API) для інтеграції з іншими системами.
  • Розгортання API на AWS з використанням сервісів, таких як Amazon API Gateway, для забезпечення масштабованості, безпеки та керування API.
  • Забезпечення можливості асинхронного обміну даними за допомогою сервісів обміну повідомленнями AWS (наприклад, Amazon SQS, Amazon SNS) для забезпечення надійності та роз’єднаності між системами.


  • No labels