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:
fontvielle
2026-05-14 13:46:21 +03:00
parent ee642e5eaa
commit 978777ff6a
9 changed files with 253 additions and 130 deletions
+39
View File
@@ -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