Собеседование по .NET: разбор реальных инцидентов в production
SMART TECHIES HUB
0:00 / 0:00
Собеседование по .NET: разбор реальных инцидентов в production
243 просмотра · 4 мес. назад
SMART TECHIES HUB
166 подписчиков
243 просмотра · 4 мес. назад
Смарт провел демонстрационную сессию для программы подготовки к собеседованиям по .NET, представив 10 реальных проблем, с которыми он столкнулся в качестве старшего технического руководителя, и продемонстрировав, как современный .NET Core решает их по сравнению с традиционным .NET Framework. Интерактивная сессия охватила такие темы, как управление памятью, проблемы развертывания, асинхронное программирование и микросервисы, при этом участники задавали вопросы на протяжении всей сессии. Смарт представил двухмесячную программу подготовки для работающих специалистов, предназначенную для подготовки к собеседованиям и получения более высоких зарплат, охватывающую всю экосистему .NET.
Вот основные обсуждаемые темы:
1. Утечка памяти и перезапуск пула приложений
Проблема: Несколько приложений на одном IIS вызывали накопление памяти в куче, что приводило к нехватке памяти.
Старое решение: Перезапуск пула приложений в 2 часа ночи для очистки кэша и потоков.
Современное решение: Переработанный сборщик мусора .NET Core поддерживает облачное автоматическое масштабирование (масштабирование вверх/вниз в зависимости от нагрузки).
2. Проблема «кошмара» (несоответствие версий в среде разработки и продакшена)
Проблема: Приложение работало в среде разработки (.NET 4.7), но не работало в продакшене (.NET 4.5) из-за несоответствия версий.
Решение: Поддерживать документацию по релизам, указывающую необходимые версии; использовать отдельные пулы приложений IIS для каждого приложения.
3. Проблема «DLL-ада»
Проблема: Несколько приложений используют конфликтующие версии DLL (например, Newtonsoft.Json) в одном пути.
Решение: .NET Core + NuGet Package Manager позволяет управлять DLL для каждого проекта; контейнеризированные модули в облаке изолируют зависимости.
4. Время запуска приложения после развертывания
Проблема: IIS требует остановки, копирования файлов, а затем перезапуска пула приложений, что приводит к простою.
Решение: Сине-зеленое развертывание — переключение между производственной и предпроизводственной средами за считанные секунды, исключающее простои.
5. Ведение журналов
Проблема: .NET Framework требовал использования пользовательских библиотек классов для ведения журналов.
Решение: .NET Core имеет встроенную систему ведения журналов (Serilog и др.), не требующую дополнительных усилий.
6. Проблема с Async/Await
Проблема: Async/Await в .NET 4.7 удерживал память кучи до получения ответа.
Решение: Улучшенный сборщик мусора .NET Core освобождает ненужную память во время асинхронных операций.
7. Монолитная архитектура против микросервисов
Монолитная архитектура подходит для IIS; микросервисы подходят для облака — каждый сервис работает независимо с выделенной памятью.
8. Ад конфигурации
.NET Framework использовал web.config (требуется перезапуск пула для обновления).
.NET Core использует параметры приложения, переменные среды и Key Vault (перезапуск пула не требуется).
9. IIS против Kestrel
IIS работает только на Windows; Kestrel работает на Windows и Linux (предпочтительно в производственной среде для экономии средств).