Как происходит развертывание приложения на текущем проекте?

«Как происходит развертывание приложения на текущем проекте?» — вопрос из категории DevOps, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На проекте используется CI/CD пайплайн в Azure DevOps (YAML) с деплоем в облако Microsoft Azure. Процесс полностью автоматизирован.

Этапы пайплайна:

  1. Сборка (Build):

    • Восстановление зависимостей (dotnet restore).
    • Компиляция решения в конфигурации Release (dotnet build --configuration Release).
    • Запуск модульных и интеграционных тестов.
    • task: DotNetCoreCLI@2 displayName: 'Run Tests' inputs: command: 'test' projects: '*/.Tests.csproj' arguments: '--configuration Release --collect:"XPlat Code Coverage"'
  2. Публикация артефактов:

    • Создание готовых к развертыванию артефактов (dotnet publish).
    • Публикация артефактов в пайплайн для последующих стадий.
  3. Развертывание (Release):

    • Для веб-приложений (ASP.NET Core): Деплой в Azure App Service с использованием слотов развертывания (staging/production). Это позволяет выполнить предварительное тестирование и быстрый откат.
    • Для сервисов: Деплой в Azure Kubernetes Service (AKS). Используется стратегия blue-green для минимизации простоя.
    • Для баз данных: Автоматическое применение миграций Entity Framework Core через скрипты в пайплайне или инструменты вроде DbUp.

Дополнительные практики:

  • Feature Flags: Новый функционал включается постепенно через конфигурацию (например, с помощью библиотеки Microsoft.FeatureManagement).
  • Мониторинг: После деплоя ведется наблюдение через Application Insights (логи, метрики, производительность) и Azure Monitor.
  • Откат (Rollback): В случае проблем выполняется переключение на предыдущий слот (App Service) или образ (AKS).