Длинное учебное интервью о проектировании backend-систем и инженерных компромиссах. Основные темы — шина сообщений в финтехе, Node.js-стек, тестирование, инфраструктура, производительность и культура разработки.
Это учебное публичное собеседование с Романом Гафуровым о его опыте senior backend-разработчика. Кандидат описывает инфраструктурную платформу анонимного финтех-проекта: собственную шину сообщений, конфигурацию через Consul, микросервисы, SSR-админку, тестирование и CI/CD в Kubernetes. Во второй половине собеседующие подробно спорят о Node.js, Express, ORM, React, Go, Ruby, тестах, производительности, стоимости разработки и инженерной культуре.
Кандидат описывает собственную шину сообщений как альтернативу прежнему готовому решению, которое, по его словам, не выдерживало нужную нагрузку; выбор оправдывается скоростью доставки и требованиями безопасности финтех-системы.
Внутренние сервисы проекта общаются через шину, а доступ к чувствительным данным и операциям ограничивается правилами взаимодействия сервисов.
Для доставки сообщений обсуждаются подтверждения на стороне потребителя, повторная выборка пропущенных сообщений и необходимость проектировать обработчики с учётом повторов и сбоев.
Настройки шины хранятся в Consul KV; отдельный сервис агрегирует изменения, а агенты на узлах получают обновления. Отставшие узлы выявляют по метрикам и восстанавливают вручную или повторным чтением конфигурации.
Админка разделена на backend и frontend-сервисы; для первоначальной полной загрузки данных используется server-side rendering. В разговоре упоминаются Redis, Consul, React, Express, Caddy, Docker и Kubernetes.
Тесты в описанной команде включают unit-тесты разработчиков и внешние функциональные проверки в поднятом окружении; для параллельных тестов генерируют непересекающиеся данные.
По словам кандидата, при расследовании утечки памяти в Node.js он исправил использование устаревшей библиотеки рендеринга графиков и снизил потребление памяти примерно с 1 ГБ до 100 МБ.