Online auto auction на Laravel 13 + React 19 SPA в Yandex Cloud. App×2 за ALB, Reverb×2 для live-ставок, Worker+ClamAV для антивирус-скана, шлюз интеграций к банку/ЕСИА/СМС/SMTP, Managed PostgreSQL+Valkey+RabbitMQ+S3, безопасность через Lockbox/KMS, CI/CD на GitFleek + SonarQube, мониторинг Prometheus/Grafana/Sentry
Auto Auction — платформа онлайн-аукциона автомобилей. Real-time торги через WebSocket (Reverb), оплата через банк по mTLS, идентификация продавцов через ЕСИА. Хостится в Yandex Cloud: Compute (App×2 Laravel 13, Reverb×2, Worker+ClamAV, шлюз, Meilisearch) + Managed (PostgreSQL Master+Replica sync replication, Valkey + Sentinel, RabbitMQ, Object Storage) + контур безопасности (Lockbox, KMS, Audit Trails). CI/CD на GitFleek + SonarQube SAST, мониторинг Prometheus/Grafana/Sentry.
| Node | Роль | Протокол |
|---|---|---|
spa | React 19 SPA | HTTPS/WSS |
alb | Yandex ALB L7, TLS, sticky по auction_id для Reverb | HTTPS |
app | Laravel 13 ×2: REST API, Sanctum, Horizon | HTTP/2 |
reverb | WebSocket ×2 для live-ставок | WSS |
worker | Очереди + ClamAV-скан | AMQP consumer |
gateway | Единый выход во внешние API | HTTP |
meilisearch | Полнотекстовый поиск авто | HTTP |
postgres-master/replica | sync replication, MDB auto-failover | TCP PgBouncer |
valkey-master/sentinel | Кэш + сессии + pub/sub + rate-limiter | TCP TLS |
rabbitmq | Очереди: bids, notifications, documents, antivirus, DLQ | AMQP |
s3 | Object Storage: фото, документы, бэкапы | HTTPS S3 |
bank-api | Платежи и проверка клиентов | HTTPS mTLS |
esia | Госуслуги — идентификация | HTTPS OAuth 2.0 |
sms / smtp | OTP и email | HTTPS REST / TLS |
lockbox / kms / audit | Секреты, шифрование, compliance | HTTPS |
gitfleek / sonarqube | CI + SAST | SSH / |
sentry / prometheus / grafana | Errors+APM, метрики, дашборды | HTTPS / HTTP |
spa → alb → app → valkey (rate-limit) → postgres → rabbitmq → reverb broadcast. Sticky session по auction_id держит зрителей лота на одной Reverb-ноде, минимизируя pub/sub-трафик.spa → app → s3, дальше асинхронный пайплайн: app → rabbitmq → worker → s3 → ClamAV → postgres → meilisearch.app → gateway → bank-api (mTLS); success публикует событие в rabbitmq, worker рассылает СМС+email через шлюз.auction_id — снижает pub/sub-трафик через Valkey, но при падении ноды зрители переподключаются и читают историю заново.dlq_depth > 100.app — maxRps: 2000, replicas: 2, скейлится горизонтально через ALBreverb — maxRps: 5000, replicas: 2, упор в concurrent WS (~10k/нода)postgres-master — maxRps: 15000, реплика обслуживает read-heavy запросы галереиvalkey-master — maxRps: 100000, кэш горячих лотовworker — maxRps: 500, ClamAV — CPU-bound 1-3 сек/файл