Table of Contents
Опис робочих процесів (бізнес-процесів)
Узагальнений бізнес-процес, яким можна описати основний функціонал
В залежності від "Напряму роботи" і "Типу аукціону" логіка може відрізнятися, що обовʼязково буде зазначено в ТЗ до розробки процедури Напряму.
Загальний опис
Програмний продукт забезпечує автоматизацію електронних аукціонів, включаючи публікацію оголошення (процедури), реєстрацію учасників, подачу пропозицій, проведення торгів (аукціону), визначення переможця та підписання протоколу і договору.
Основні бізнес-процеси
Публікація оголошення (процедури)
- Організатор аукціону заходить в особистий кабінет на обраному Майданчику
- Заповнює форму реєстрації та проходить автентифікацію
- Обирає доступний із переліку напрям роботи (оренда, продаж тощо)
- Заповнює всі обовʼязкові поля і документи обраної процедури (напряму)
- Публікує оголошення (процедуру)
- Система зберігає дані в MongoDB та публікує їх у загальнодоступному каталозі.
- Учасники можуть переглядати перелік активних аукціонів та подавати заявки.
Реєстрація учасника
Учасник заходить на платформу через обраний Майданчик.
Заповнює форму реєстрації та проходить автентифікацію
Отримує підтвердження реєстрації та доступ до особистого кабінету.
Реєстрація на аукціон
Учасник подає заявку на участь у торгах.
Підтверджує згоду з умовами.
Вносить гарантійний і реєстраційний внесок
Отримує унікальний токен доступу до торгів.
Проведення аукціону
У визначений час система автоматично розпочинає торги.
Учасники подають ставки, які фіксуються в MongoDB із часовими мітками.
Після закінчення часу торгів система визначає переможця за найвищою ставкою.
Генерується протокол аукціону та надається організатору на підпис
Завершення торгів і укладання договору
Переможець отримує повідомлення про виграш.
Організатор підтверджує результати аукціону.
У разі відмови переможця, система автоматично пропонує лот наступному учаснику
Дані про результати торгів логуються в систему для аудиту
Логування бізнес-процесів
Всі ключові дії (реєстрація, ставки, підписання договору) мають логуватися
Вимоги до програмного забезпечення та технічних засобів
Вимоги до програмного
...
забезпечення
Основна вимога: Обране рішення має бути контейнеризовано та запускатися в куб кластері
...
Перелік необхідного програмного забезпечення, його функціональні можливості, версії, ліцензійні умови використання.
НИЖЧЕ НАВЕДЕНІ ПРИКЛАДИ! ЇХ МОЖНА НЕ ДОТРИМУВАТИСЬ
Операційна система
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання | |
|---|---|---|---|---|---|
| 1 | Ubuntu Server | Debian GNU/Linux 12 (Bookworm) | 12.0 чи новіша22.04 LTS | ОС для Linux-серверів, контейнеризація | Open-source, GPL |
Бази даних
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання |
|---|---|---|---|---|
| 1 | MongoDB | 15 чи новіша | Реляційна NoSQL база даних, підтримка ACID | Open-source, PostgreSQL License |
| 2 | Redis | 7 чи новіша | Кешування даних, in-memory сховище | Open-source, BSD License |
| 3 | PostgreSQL | 14 чи новіша | Реляційна база даних | Open-source |
| 4 | Elasticsearch | 7.17.3 чи новіша | Використовується для search | Open-source |
Сервери додатків
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання |
|---|---|---|---|---|
| 1 | Nginx | 1.24 чи новіша | Веб-сервер, балансування навантаження | Open-source, BSD License |
| 2 | Gunicorn | 20.1 чи новіша | WSGI-сервер для Python-додатків | Open-source, MIT License |
| 3 | aiohttp | 3.9.3 чи новіша | Асинхронний HTTP-сервер та клієнт для Python, підтримка REST API, WebSocket | Open-source, Apache 2.0 License |
Мікросервіси та API
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання | |
|---|---|---|---|---|---|
| 1 | GraphQL | 16REST API | Запити та маніпуляція даними | Open-source, MIT License |
Контейнеризація та оркестрація
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання |
|---|---|---|---|---|
| 1 | Docker24 | 27 і вище | Контейнеризація додатків | Open-source, Apache 2.0 |
| 2 | Kubernetes | 1.2932 і вище | Оркестрація контейнерів | Open-source, Apache 2.0 |
| 3 | AWS Fargate | - | Безсерверне керування контейнерами | Комерційна ліцензія AWS |
Системи моніторингу та логування
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання |
|---|---|---|---|---|
| 1 | Prometheus | 2.47 | Моніторинг метрик | Open-source, Apache 2.0 |
| 2 | Grafana | 10 | Візуалізація метрик та логів | Open-source, AGPLv3 |
| 3 | ElasticsearchOpensearch | 82.1119 і вище | Пошук та аналіз логів | Open-source, Elastic License |
Інструменти безпеки
| № | Найменування | Версія | Функціональні можливості | Ліцензійні умови використання | ||
|---|---|---|---|---|---|---|
| 1 | OpenSSL | 3.0 | Шифрування та захист даних | Open-source, Apache 2.0 | ||
| 2 | Vault by HashiCorp | 1.15 | Сipher-vpn | 2 і вищеКерування секретами | Open-source, MPL 2.0 |
Вимоги до інтеграції з іншими системами та програмними продуктами (інтероперабельність).
Загальні вимоги
Програмний продукт повинен забезпечувати можливість інтеграції з зовнішніми системами через стандартизований протокол REST API
Усі інтеграційні запити та відповіді повинні передаватися у форматах JSON або XML відповідно до специфікацій суміжних систем.
Підтримка роботи з чергами повідомлень (RabbitMQ, Apache Kafka) для асинхронної обробки запитів.
Використання OAuth 2.0 / OpenID Connect для автентифікації та авторизації між сервісами.
Реалізація механізмів збереження збоїв інтеграції (retry logic, circuit breaker).
Інтеграція з базами даних та сховищами
Підтримка реплікації та обміну даними з MongoDB.
Інтеграція з Elasticsearch для розширеного пошуку та аналітики.
Використання Amazon S3 Compatible Storage для зберігання файлів.
Взаємодія з державними та сторонніми сервісами
Підключення до Prozorro.Sale через офіційний API для отримання даних про обʼєкти ЦБД.
Інтеграція з державними реєстрами через API
Взаємодія з сервісами електронного документообігу
Логування та моніторинг інтеграцій
Використання Prometheus та Grafana для моніторингу API-запитів.
Збереження логів інтеграцій в Elasticsearch Opensearch із подальшою аналітикою через Kibana.OpenSearch Dashboards
Налаштування алертів у разі збою інтеграційних процесів (наприклад, через Zabbix, Grafana Alerts, AWS CloudWatch).
Вимоги до продуктивності інтеграції
- Час відповіді серверної частини (backend) на запити користувачів не повинен перевищувати 200 мс у 95% запитів (P95)
- Пропускна здатність API повинна забезпечувати обробку не менше 5000 запитів на хвилину без деградації продуктивності
Вимоги до безпеки програмного забезпечення (захист від несанкціонованого доступу, захист даних)
- Усі дії користувачів повинні логуватися та зберігатися у захищеному середовищі (наприклад, у Elasticsearch) із OpenSearch із прив’язкою до ID користувача та обʼєкта та часової мітки
- Реалізація механізмів виявлення та запобігання вторгненням (IDS/IPS)
- Підтримка двофакторної автентифікації (2FA) для критично важливих дій користувачівадміністративної панелі (Адмінка)
- Автоматичний вихід із системи після 15 хвилин неактивності (конфігуровано)
- Шифрування персональних даних у базі даних
- Використання хешування паролів
- Регулярне створення резервних копій даних із шифруванням та зберіганням у захищеному середовищі
- Відповідність GDPR (для обробки персональних даних)
- Регулярне оновлення компонентів для усунення вразливостей
- Використання WAF (Web Application Firewall) для моніторингу та блокування підозрілих запитів
- Документування всіх інцидентів безпеки та їх аналіз для запобігання повторенню
Вимоги до масштабованості та надійності програмного забезпечення
- Архітектура повинна підтримувати горизонтальне масштабування через балансувальник навантаження (наприклад, Nginx, AWS Application Network Load Balancer)
- Використання контейнеризації (Docker) та можливість розгортання у кластерному середовищі (Kubernetes, AWS FargateEKS)
- Динамічне додавання нових екземплярів серверів при підвищеному навантаженні (авто-скейлінг через Kubernetes HPA або AWS Auto Scaling)
- Використання кешування запитів до бази даних (Redis, Memcached) для зниження навантаження на основний серверВикористання Prometheus + Grafana для збору метрик та моніторингу продуктивності системи
- Логування всіх ключових подій у Elasticsearch та Kibana з Opensearch з можливістю фільтрації та аналітики
- Система повинна мати засоби моніторингу працездатності всіх компонентів та системи оповіщення про збої та проблеми в роботі.
- Система повинна мати механізми забезпечення відмовостійкості, такі як резервування компонентів, кластеризація, моніторинг та автоматичне відновлення після збоїв.
Вимоги до тестування програмного забезпечення (види тестування, критерії приймання)
- Усі функціональні та нефункціональні вимоги до програмного забезпечення повинні бути підтверджені тестуванням
- Усі виявлені дефекти мають фіксуватися у системі управління завданнями (JIRA, gitLab issue)
Види тестування, яке може застосовуватися
| № | Вид тестування | Опис |
|---|---|---|
| 1 | Модульне тестування | Перевірка роботи окремих модулів системи |
| 2 | Інтеграційне тестування | Перевірка взаємодії між модулями та сервісами |
| 3 | Функціональне тестування | Перевірка відповідності функцій заявленим вимогам |
| 4 | Навантажувальне тестування | Оцінка продуктивності під високим навантаженням |
| 5 | Стрес-тестування | Перевірка роботи системи в екстремальних умовах |
| 6 | Тестування безпеки | Виявлення вразливостей, захист від атак |
| 7 | UX/UI тестування | Оцінка зручності використання інтерфейсу |
| 8 | Регресійне тестування | Перевірка працездатності після внесення змін |
Критерії приймання програмного забезпечення
Командою тестування складаються:
...
Усі критичні баги (blocking, critical) виправлені
Кількість дефектів рівня high не перевищує 2 на 1000 тест-кейсів
Продуктивність відповідає встановленим вимогам
Інтеграційні API відповідають документації та коректно взаємодіють з зовнішніми системами.
Успішно виконані приймальні випробування, що включають:
Функціональне тестування (тестування API)
Навантажувальне тестування
Безпекове тестування
UX/UI тестування (за наявності розробки фронту)
Вимоги до технічних засобів
Загальні вимоги
Програмний продукт повинен бути розгорнутий у хмарному середовищі AWS з використанням безсерверної архітектури.
Всі компоненти повинні бути керованими AWS-сервісами з автоматичним масштабуванням.
Перелік необхідних хмарних сервісів та їх параметри
| № | Сервіс | Призначення | Основні характеристики |
|---|---|---|---|
| 1 | Amazon AWS S3 Compatible Storage | Сховище для коду та статичних файлів | Версія сховища: S3 Standard Compatible Storage, шифрування AES-256, увімкнене версіонування |
| 2 | AWS LambdaEKS | Виконання серверного кодуконтейнерних сервісів | Авто-скейлінг увімкненоМова: Python 3.9, Максимальний тайм-аут: 15 сек., RAM: 512MB-2GB |
| 3 | AWS | ||
| VPC | Віртуальна мережа для ресурсів AWS | Ізольоване мережеве середовище, підтримка підмереж, ACL, маршрутизація, NAT | Обробка HTTP-запитів | REST API, авторизація через OAuth2, обмеження RPS: 1000
| 4 | AWS | Виконання контейнерних сервісів | CPU: 2 vCPU, RAM: 4GB, Авто-скейлінг увімкнено |
| EC2 | Обчислювальні ресурси (віртуальні машини) | Різні типи інстансів (t, m, c), гнучке масштабування, інтеграція з Auto Scaling | |
| 5 | AWS Route53 | DNS-сервіс | Глобальна система DNS, підтримка health checks, routing policies, інтеграція з AWS ресурсами |
| 6 | AWS NLB | Балансування навантаження на рівні TCP/UDP | Висока пропускна здатність, підтримка static IP, low latency, інтеграція з EC2 та EKS |
| 9 | |||
| 5 | Amazon RDS (PostgreSQL) | База даних | Версія: PostgreSQL 15, Резервне копіювання: 7 днів, Multi-AZ |
| 6 | Amazon CloudFront | CDN для прискорення доступу | Кешування S3-об'єктів, TTL: 24 години |
| 7 | AWS CloudWatch | Логування та моніторинг | Збір метрик Lambda, API Gateway, RDS, алерти на помилкилогів з AWS-сервісів, кастомні метрики, алерти |
Опис вимог до інтерфейсів та їх дизайну
Загальні вимоги до інтерфейсів
- Інтуїтивно зрозумілий та легкий у використанні інтерфейс для всіх категорій користувачів (учасники, спостерігачі) для МА і Порталу
- Сучасний, лаконічний та візуально привабливий дизайн, що відповідає Brand book
- Адаптивність інтерфейсу для роботи на різних пристроях (комп’ютери, планшети, мобільні телефони) та в браузерах (Google Chrome, Safari, Mozilla Firefox, Opera, MS Edge, MS Explorer тощо)
- Забезпечення доступності для користувачів з особливими потребами
- Підтримка двомовності інтерфейсу: українська та англійська
Деталізовані вимоги до нітерфейсів та дизайну описуються в ТЗ продукту, який реалізовуємо.
Опис вимог до архітектури зберігання та обміну даними
Використання MongoDB як основної бази даних для зберігання інформації про аукціони, учасників, ставки та інші дані.
...