refactor(cmd): объединить Go-сервисы в один бинарник bj-server
Под выбранный объём 100-1000 сделок/день микросервисная архитектура с 5 отдельными процессами избыточна. Объединяем lk-gateway, m2m-core, nsd-adapter, notify в один Go-бинарник bj-server. lk-emulator остаётся отдельным бинарником как QA-инструмент (имитация ЛК ESIA Finance). cmd/bj-server/main.go: - Поднимает lkgateway.NewServer (HTTP :8080, REST API + admin UI) - Фоновый poller NSD ИШ (если задан BJ_NSD_PROFILE) - Заглушка notify worker (M3-M4: e-mail / Yandex Messenger / WS-push) - Graceful shutdown через signal.NotifyContext cmd/lk-gateway/, cmd/m2m-core/, cmd/nsd-adapter/, cmd/notify/ — удалены. deploy/systemd/: - bj-server.service — systemd unit для основного сервиса (один файл, простой деплой) - bj-emulator.service — systemd unit для эмулятора - README.md с инструкцией по установке (useradd bj, /opt/bj, daemon-reload) Makefile: - build теперь собирает только bj-server и lk-emulator - бывшие пять бинарей удалены Размер: - bj-server: 19.5 МБ (включает lk-gateway + m2m-core + nsd-adapter + notify) - lk-emulator: 12.7 МБ - общий размер артефактов уменьшился c ~50 МБ до 32 МБ Внутренние пакеты internal/<...> не изменились — разделение сохраняется на уровне Go-пакетов, что облегчает возврат к микросервисам если объём вырастет до 1000+ сделок/день. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# deploy/systemd — юниты для деплоя
|
||||
|
||||
Минимальный production-деплой Bridge-and-Join-s — два бинарника + два
|
||||
systemd-юнита.
|
||||
|
||||
## Состав
|
||||
|
||||
- `bj-server.service` — основной сервис: lk-gateway BFF + admin UI +
|
||||
m2m-core FSM + nsd-adapter поллер + notify. HTTP `:8080`.
|
||||
- `bj-emulator.service` — имитация ЛК (QA-инструмент). HTTP `:8083`.
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
sudo useradd --system --no-create-home --shell /usr/sbin/nologin bj
|
||||
sudo mkdir -p /opt/bj /var/lib/bj /var/log/bj /run/bj
|
||||
sudo chown bj:bj /var/lib/bj /var/log/bj /run/bj
|
||||
|
||||
# собрать бинарники на dev-ВМ и положить в /opt/bj/
|
||||
sudo cp bin/bj-server bin/lk-emulator /opt/bj/
|
||||
|
||||
# юниты
|
||||
sudo cp deploy/systemd/bj-server.service deploy/systemd/bj-emulator.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now bj-server bj-emulator
|
||||
|
||||
# проверка
|
||||
systemctl status bj-server bj-emulator
|
||||
journalctl -u bj-server -f
|
||||
```
|
||||
|
||||
Веб-интерфейс: `http://<host>:8080/admin/setup` — настройка PostgreSQL,
|
||||
КриптоПро CSP, ИШ НРД, callback ЛК.
|
||||
@@ -0,0 +1,30 @@
|
||||
[Unit]
|
||||
Description=Bridge-and-Join-s — эмулятор ЛК ESIA Finance (QA)
|
||||
Documentation=https://git.zetit.ru/zuevav/Bridge-and-Join-s
|
||||
After=network-online.target bj-server.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=bj
|
||||
Group=bj
|
||||
WorkingDirectory=/opt/bj
|
||||
ExecStart=/opt/bj/lk-emulator
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
Environment=BJ_HTTP_ADDR=:8083
|
||||
Environment=BJ_GATEWAY_URL=http://127.0.0.1:8080
|
||||
Environment=BJ_EMULATOR_PUBLIC_URL=http://127.0.0.1:8083
|
||||
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
PrivateTmp=true
|
||||
ProtectKernelTunables=true
|
||||
|
||||
LimitNOFILE=65536
|
||||
TasksMax=128
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,39 @@
|
||||
[Unit]
|
||||
Description=Bridge-and-Join-s — единый сервис M2M-переводов
|
||||
Documentation=https://git.zetit.ru/zuevav/Bridge-and-Join-s
|
||||
After=network-online.target postgresql.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=bj
|
||||
Group=bj
|
||||
WorkingDirectory=/opt/bj
|
||||
ExecStart=/opt/bj/bj-server
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
# Конфигурация — через ENV или ~/.bj/setup.json (UI /admin/setup).
|
||||
Environment=BJ_HTTP_ADDR=:8080
|
||||
Environment=BJ_SETUP_PATH=/var/lib/bj/setup.json
|
||||
Environment=BJ_M2M_SENDER=MC0079200000
|
||||
Environment=BJ_M2M_RECEIVER=MC0010300000
|
||||
|
||||
# Безопасность.
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
PrivateTmp=true
|
||||
ReadWritePaths=/var/lib/bj /var/log/bj /run/bj
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelModules=true
|
||||
ProtectControlGroups=true
|
||||
RestrictSUIDSGID=true
|
||||
LockPersonality=true
|
||||
|
||||
# Лимиты.
|
||||
LimitNOFILE=65536
|
||||
TasksMax=512
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user