Упражнение. Развертывание монолитного приложения в службе приложений

Завершено

Мы немного говорили о монолитной и микросервисной архитектурах. Теперь давайте развернем монолитное приложение и рассмотрим, как мы можем развивать его в архитектуре микрослужб.

Fabrikam недавно добавил службу дронов в существующее приложение.

В этом упражнении мы развертываем монолитное приложение в Службе приложений Azure и разрешаем Azure Monitor получать представление о телеметрии и производительности приложений.

Визуализация ресурсов для приложения доставки дронов.

Развертывание монолитного приложения в Службе приложений Azure

Начнем с развертывания приложения. Сначала необходимо создать ресурсы Azure для размещения приложения.

  1. Выполните следующую команду, чтобы развернуть ресурсы, необходимые для этого приложения. Это развертывание занимает несколько минут.

    az deployment group create \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-microservices-architecture/master/deployment/azuredeploy.json
    
  2. Теперь, когда у нас есть созданные ресурсы, давайте развернем приложение. Сначала выполните следующую команду, чтобы извлечь исходный код из примера репозитория.

    git clone https://github.com/MicrosoftDocs/mslearn-microservices-architecture.git ~/mslearn-microservices-architecture
    cd ~/mslearn-microservices-architecture/src/before
    
  3. Выполните следующую команду, чтобы запаковать код приложения, который мы используем для развертывания в службе приложений.

    zip -r DroneDelivery-before.zip .
    
  4. Выполните следующую команду, чтобы задать переменную с именем службы приложений.

    APPSERVICENAME="$(az webapp list \
                        --resource-group "<rgn>[sandbox resource group]</rgn>" \
                        --query '[].name' \
                        --output tsv)"
    
  5. Выполните следующую команду, чтобы настроить службу приложений для запуска сборки в рамках развертывания.

    az webapp config appsettings set \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
    
  6. Теперь выполните следующую команду, чтобы развернуть приложение в службе приложений. Завершение этого развертывания займет несколько минут.

    az webapp deploy \
        --resource-group "<rgn>[sandbox resource group]</rgn>" \
        --name $APPSERVICENAME \
        --src-path DroneDelivery-before.zip
    
  7. После завершения развертывания убедитесь, что развертывание успешно выполнено, перейдя на веб-сайт службы приложений. Выполните следующую команду, чтобы получить URL-адрес и выбрать его, чтобы открыть страницу.

    echo https://$(az webapp config hostname list \
                    --resource-group "<rgn>[sandbox resource group]</rgn>" \
                    --webapp-name $APPSERVICENAME \
                    --query [].name \
                    --output tsv)
    

    снимок экрана веб-сайта доставки дронов.

Выполнение нагрузочного теста для приложения

Теперь давайте протестируем производительность приложения в монолитной архитектуре.

  1. На домашней странице развернутого приложения выберите Отправить запросы. Это действие имитирует отправку 100 запросов через приложение.

  2. Для первого запроса отображается результат от 8 до 12 секунд для обработки 100 сообщений. При обновлении страницы и повторной отправке при появлении запроса это число может снизиться примерно на половину. Он по-прежнему занимает около пяти секунд на запрос.

    снимок экрана веб-сайта доставки дронов после выполнения теста производительности.

Fabrikam подозревает, что монолитная архитектура предотвращает масштабирование широко используемых служб, что приводит к низкой производительности, наблюдаемой здесь.