Перейти к содержимому

Собеседование по .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 (предпочтительно в производственной среде для экономии средств).