Какие самые распространенные ошибки в архитектуре
Что проверяют
Видели ли вы последствия архитектурных решений на живом проекте, а не только читали о принципах. Сильный ответ связывает ошибку с симптомом и способом исправления. Следом почти всегда спрашивают: «Какую из этих ошибок вы допускали сами и как выбирались?»
Как отвечать
Назовите несколько ошибок, которые реально встречаются в .NET-проектах, и для каждой симптом:
- распределённый монолит: сервисы разнесены, но выкатываются только вместе, ходят в одну базу и вызывают друг друга синхронной цепочкой. Сложность микросервисов есть, пользы нет, и модульный монолит с чёткими границами был бы честнее;
- логика не в своём слое: бизнес-правила в контроллерах, сущности EF Core уходят прямо в ответы API, репозиторий отдаёт наружу
IQueryable, и запросы собираются где попало; - ошибки времени жизни в DI: scoped-зависимость вроде
DbContextзахвачена singleton-сервисом, контекст живёт вечно и используется из разных потоков; - sync over async:
.Resultи.Wait()на асинхронном коде ведут к голоданию пула потоков под нагрузкой; - сетевые вызовы без устойчивости: нет таймаутов, повторов и circuit breaker. В .NET для этого есть Polly и пакет
Microsoft.Extensions.Http.Resilience; - двойная запись: сохранили в базу и отдельно отправили событие в брокер, а между этими шагами упали. Решается паттерном Transactional Outbox;
- нет наблюдаемости: без структурных логов, метрик и трассировки через OpenTelemetry проблему в проде ищут часами.
Скажите и о том, как не давать ошибкам возвращаться: архитектурные тесты на NetArchTest или ArchUnitNET проверяют зависимости между слоями прямо в CI, а решения фиксируются в ADR.
Где спотыкаются
Отвечают общими словами вроде «плохая масштабируемость» и «нет документации». Это не ошибки, а их последствия, и интервьюер ждёт конкретики.
Предлагают микросервисы как лекарство от всего. Для небольшой команды это часто и есть главная ошибка.
Не могут привести пример из своего опыта. Одна ошибка, которую вы сами допустили и исправили, убедительнее десяти из статьи.