Открыть сервис

Azure App Service

Azure App Service — это платформа как услуга (PaaS) от компании Microsoft для размещения веб-приложений, RESTful API, мобильных бэкендов и автоматизированных бизнес-процессов. Сервис предоставляет управляемую среду выполнения, освобождая разработчиков от необходимости администрировать инфраструктуру (виртуальные машины, операционные системы, веб-серверы) и позволяя сосредоточиться на коде и бизнес-логике. App Service поддерживает несколько языков программирования и фреймворков, включая .NET, .NET Core, Java, Node.js, Python, PHP и Ruby, а также предоставляет возможности для непрерывной интеграции и доставки (CI/CD), автоматического масштабирования и высокой доступности.

История

Сервис был анонсирован 24 марта 2015 года на конференции Microsoft Build как эволюция существовавших ранее облачных служб Microsoft: Azure Websites, Azure Mobile Services и Azure BizTalk Services. Первоначально он назывался Azure Web Apps, но вскоре был переименован в Azure App Service, чтобы отразить более широкий спектр возможностей, включая поддержку мобильных и API-приложений.

В 2016 году Microsoft интегрировала в App Service поддержку контейнеров Docker, что позволило развёртывать приложения в изолированных средах. В 2018 году была представлена возможность развёртывания в виртуальной сети (VNet Integration), а в 2019 году — поддержка Azure Functions в рамках той же платформы. В 2021 году появилась функция App Service Environment v3 (ASEv3) — полностью изолированная среда для размещения приложений с повышенными требованиями к безопасности и производительности. К 2024 году сервис поддерживает работу на базе Linux, что расширило возможности для разработчиков, использующих не-Windows стеки.

Архитектура и основные компоненты

План службы приложений (App Service Plan)

План службы приложений определяет набор вычислительных ресурсов (виртуальных машин), на которых работает приложение. Он задаёт такие параметры, как:

  • Регион — географическое расположение серверов.
  • Количество экземпляров — число виртуальных машин, на которых развёрнуто приложение.
  • Размер экземпляра — объём выделенной памяти, процессора и дискового пространства (например, B1, S1, P1v3).
  • Ценовая категория — определяет доступные функции, такие как автоматическое масштабирование, резервное копирование, поддержка SSL и слоты развёртывания.

Типы приложений

Azure App Service поддерживает три основных типа приложений:

  • Веб-приложения (Web Apps) — полноценные веб-сайты и веб-приложения, работающие на ASP.NET, Java, Node.js, Python, PHP или Ruby.
  • API-приложения (API Apps) — предназначены для создания RESTful API с поддержкой Swagger/OpenAPI и CORS.
  • Мобильные приложения (Mobile Apps) — бэкенды для мобильных приложений с функциями аутентификации, push-уведомлений и синхронизации данных (данный тип постепенно вытесняется другими сервисами Azure, такими как Azure Mobile Apps на базе App Service).

Слоты развёртывания (Deployment Slots)

Каждое приложение, работающее в стандартной или премиум-ценовой категории, может иметь несколько слотов развёртывания. Каждый слот — это отдельная версия приложения с собственным хост-именем. Слоты позволяют выполнять «горячее» развёртывание: сначала новая версия загружается в промежуточный слот (staging), тестируется, а затем мгновенно переключается на основной (production) слот без простоя.

Автоматическое масштабирование (Auto-scaling)

App Service может автоматически увеличивать или уменьшать количество экземпляров приложения в зависимости от нагрузки (загрузка процессора, объём памяти, длина очереди HTTP-запросов) или по расписанию. Масштабирование доступно в стандартной и премиум-ценовых категориях.

Непрерывная интеграция и доставка (CI/CD)

Сервис интегрируется с популярными системами управления версиями, такими как GitHub, Azure Repos, Bitbucket и GitLab. При каждом изменении кода в репозитории App Service может автоматически выполнять сборку и развёртывание приложения.

Ценовые категории

Azure App Service предлагает несколько ценовых категорий, различающихся по производительности, функциональности и стоимости:

КатегорияОписаниеПоддержка SSLАвтоматическое масштабированиеСлоты развёртыванияРезервное копирование
Free (F1)Бесплатный уровень с ограничением по времени работы (60 минут в день) и объёму трафикаНетНетНетНет
Shared (D1)Разделяемые ресурсы с другими пользователямиНетНетНетНет
Basic (B1–B3)Выделенные ресурсы, поддержка SSL (с собственным сертификатом)Да (только SNI)НетНетНет
Standard (S1–S3)Полнофункциональный уровень с автоматическим масштабированием и слотамиДа (SNI и IP)ДаДа (до 5)Да (до 10 ГБ)
Premium (P1v3–P3v3)Высокая производительность, поддержка VNet Integration, Private EndpointsДа (SNI и IP)ДаДа (до 20)Да (до 50 ГБ)
Isolated (I1–I3)Полностью изолированная среда (App Service Environment) с гарантированной производительностьюДаДаДаДа

Безопасность и соответствие стандартам

Azure App Service предоставляет ряд встроенных механизмов безопасности:

  • Аутентификация и авторизация — встроенная поддержка провайдеров (Azure Active Directory, Facebook, Google, Twitter, Microsoft Account). Можно настроить обязательную аутентификацию без написания кода.
  • Поддержка SSL/TLS — возможность привязки пользовательских SSL-сертификатов, включая сертификаты с поддержкой SNI и IP-based SSL.
  • Виртуальная сеть (VNet Integration) — приложение может быть подключено к виртуальной сети Azure, что позволяет обращаться к ресурсам внутри сети (базы данных, внутренние API) без выхода в интернет.
  • Private Endpoints — возможность сделать приложение доступным только через частные IP-адреса внутри виртуальной сети.
  • Защита от DDoS-атак — встроенная защита на уровне платформы.

Сервис соответствует требованиям таких стандартов, как ISO 27001, SOC 1/2/3, HIPAA, GDPR, PCI DSS и FedRAMP (в зависимости от региона и конфигурации).

Применение

Azure App Service используется для широкого круга сценариев:

  • Хостинг корпоративных веб-приложений — например, внутренние порталы, системы управления контентом (CMS) на базе WordPress или Drupal.
  • Разработка и развёртывание RESTful API — сервис позволяет быстро создавать и публиковать API с поддержкой OpenAPI и CORS.
  • Мобильные бэкенды — обеспечение аутентификации, push-уведомлений и синхронизации данных для мобильных приложений.
  • Автоматизация бизнес-процессов — интеграция с Azure Logic Apps и Power Automate для создания рабочих процессов.
  • Тестирование и стажировка — использование слотов развёртывания для безопасного тестирования новых версий приложений перед выпуском в продакшн.

Ограничения

Несмотря на широкие возможности, Azure App Service имеет ряд ограничений:

  • Ограничение по времени выполнения — для бесплатного уровня (F1) — 60 минут в день.
  • Ограничение по объёму хранилища — для бесплатного и общего уровней — 1 ГБ, для базового — 10 ГБ, для стандартного — 50 ГБ, для премиум — до 250 ГБ.
  • Ограничение по количеству запросов — для бесплатного уровня — 240 запросов в минуту.
  • Отсутствие доступа к файловой системе — приложение работает в изолированной среде, доступ к файловой системе ограничен (за исключением временных файлов).
  • Невозможность установки произвольного программного обеспечения — можно использовать только предустановленные версии языков и фреймворков, хотя для Linux-приложений возможна установка дополнительных пакетов через Docker.

Критика

Основные претензии к Azure App Service связаны с:

  • Сложностью ценообразованиястоимость может резко возрасти при масштабировании или использовании дополнительных функций (например, Private Endpoints или App Service Environment).
  • Ограниченной гибкостью — по сравнению с развёртыванием на виртуальных машинах или в Kubernetes, App Service предоставляет меньше возможностей для тонкой настройки окружения.
  • Производительностью при холодном старте — для приложений, использующих медленные языки (например, Java или Python), первый запрос после длительного простоя может выполняться дольше из-за загрузки JIT-компилятора или интерпретатора.
  • Зависимостью от платформы — миграция приложения из App Service в другую среду может потребовать значительных изменений в архитектуре.

Интересные факты

  • Azure App Service является одним из самых популярных сервисов Microsoft Azure по количеству развёрнутых приложений.
  • В 2020 году Microsoft запустила поддержку Windows Containers в App Service, что позволило запускать приложения в контейнерах с Windows-образом.
  • App Service Environment (ASE) может быть развёрнут в собственной виртуальной сети клиента, обеспечивая полную изоляцию от других клиентов Azure.
  • Сервис поддерживает интеграцию с Azure DevOps и GitHub Actions для автоматизации развёртывания.

Источники

  • Microsoft Learn: Azure App Service documentation
  • Microsoft Azure Architecture Center: App Service patterns
  • Документация Azure по планам службы приложений и ценовым категориям
  • Статья «Azure App Service: A Comprehensive Guide» на портале Microsoft Tech Community
  • Обзор безопасности Azure App Service в документации Microsoft

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →