80 lines
5.5 KiB
Markdown
80 lines
5.5 KiB
Markdown
# 8. Требования к инфраструктуре и эксплуатации
|
||
|
||
## 8.1 Инфраструктурная схема
|
||
|
||
Текущая инфраструктурная схема проекта включает прикладные сервисы, сервис секретов, мессенджерные сервисы и вспомогательный worker-контур.
|
||
|
||

|
||
|
||
## 8.2 Сервисы и окружение
|
||
|
||
Сервисы проекта и способ их развёртывания:
|
||
|
||
| Сервис | Путь в репозитории | Роль | Deploy mode | Сервер |
|
||
| --- | --- | --- | --- | --- |
|
||
| web-frontend | `web-frontend` | клиентский и менеджерский веб-интерфейс | `dokploy_webhook` | `main` |
|
||
| apollo-backend | `apollo-backend` | GraphQL API и бизнес-логика | `dokploy_webhook` | `main` |
|
||
| hatchet-worker | `hatchet-worker` | фоновый worker-контур | `dokploy_webhook` | `main` |
|
||
| tg-bot | `tg-bot` | Telegram-контур | `dokploy_webhook` | `main` |
|
||
| max-bot | `max-bot` | MAX-контур | `dokploy_webhook` | `main` |
|
||
| bonus-bot | `bonus-bot` | бонусный сервис | `dokploy_webhook` | `main` |
|
||
| vault | `vault` | сервис секретов | `dokploy_webhook` | `main` |
|
||
|
||
## 8.3 Требования к деплою и запуску
|
||
|
||
Для основных сервисов проекта используется режим `dokploy_webhook`.
|
||
|
||
Цепочка развёртывания должна быть следующей:
|
||
|
||
1. изменения фиксируются в Git-репозитории
|
||
2. изменения публикуются в `main`
|
||
3. Dokploy получает webhook-событие
|
||
4. Dokploy выполняет сборку соответствующего сервиса
|
||
5. сервис перезапускается с загрузкой секретов из Vault
|
||
6. после старта выполняются bootstrap-действия, предусмотренные образом и entrypoint-командой
|
||
|
||
Текущие особенности прикладных сервисов:
|
||
|
||
- `web-frontend` стартует через загрузку Vault env и запуск `.output/server/index.mjs`
|
||
- `apollo-backend` стартует через загрузку Vault env, `prisma migrate deploy` и запуск `src/server.js`
|
||
- bot-сервисы стартуют через общий паттерн загрузки Vault env и запуск `node src/server.js`
|
||
|
||
## 8.4 Требования к секретам и конфигурации
|
||
|
||
Сервисы программного продукта должны получать прикладные секреты из `Vault`.
|
||
|
||
В конфигурации сервисов допускается хранение только bootstrap-параметров для подключения к Vault. Бизнес-секреты, ключи интеграций и иные чувствительные данные должны загружаться из Vault при старте приложения.
|
||
|
||
Сервис `vault` развернут как отдельное приложение на базе образа `hashicorp/vault:1.21.3`.
|
||
|
||
Прикладные сервисы используют общий shell-bootstrap `load-vault-env.sh`, который:
|
||
|
||
- ожидает доступность Vault по health endpoint
|
||
- загружает shared secrets
|
||
- загружает project secrets
|
||
- экспортирует секреты в runtime environment процесса
|
||
|
||
## 8.5 Требования к эксплуатации и надежности
|
||
|
||
Система должна обеспечивать:
|
||
|
||
- корректную работу в десктопных и мобильных браузерах
|
||
- приемлемое время открытия основных экранов и выполнения действий
|
||
- сохранность пользовательских данных
|
||
- сохранность истории изменений по заявкам, заказам и бонусным операциям
|
||
- фиксацию ошибок интеграционного обмена
|
||
- журналирование значимых системных и пользовательских событий
|
||
- возможность сопровождения и развития клиентского и менеджерского контуров
|
||
|
||
## 8.6 Требования к передаче результата и эксплуатации
|
||
|
||
По результатам выполнения работ заказчику должны быть переданы:
|
||
|
||
- исходный код программного продукта
|
||
- техническое задание в согласованной редакции
|
||
- сведения об используемых компонентах и их версиях
|
||
- описание реализованных интеграций и используемых внешних интерфейсов
|
||
- схемы взаимодействия модулей и движения данных
|
||
- описание пользовательских ролей и прав доступа
|
||
- материалы, необходимые для сопровождения и эксплуатации продукта
|