Все уроки
DevOps и облакоСредний12 мин чтенияПолезно знать

Microsoft Azure

Облако Microsoft: App Service, Container Apps, AKS и Azure SQL, связанные воедино через Entra ID.

  • App Service
  • AKS
  • Entra ID
  • Azure SQL
Шаг 1/5
Один VPS: дёшево и просто, но админ, ответственный за бэкапы и будильник в 3 часа ночи — это всё вы.

За 30 секунд

Azure — публичное облако Microsoft. Оно предлагает те же строительные блоки, что AWS и Google Cloud (виртуальные машины, managed-базы данных, контейнеры, serverless-функции, хранилище), но главная его сила — интеграция с миром Microsoft: Entra ID для identity, .NET, SQL Server, Office 365 и корпоративные соглашения. Ресурсы группируются в подписки (subscriptions) и группы ресурсов (resource groups), а каждое действие проходит через Azure Resource Manager.

Не в моём ежедневном стеке — я понимаю принципы и изучу детали, когда это понадобится проекту.

Почему это важно

  • Многие крупные компании уже живут на Microsoft: их пользователи в Entra ID, лицензии — в enterprise agreement, приложения — на .NET с SQL Server. Для них Azure — кратчайший путь.
  • App Service и Container Apps позволяют команде хостить веб-приложения и контейнеры без управления серверами — с deployment slots, автомасштабированием и managed-сертификатами.
  • Managed identities убирают большую часть секретов из кода приложения — это реальное улучшение безопасности по сравнению с паролями в конфигах.
  • В клиентской работе знать Azure важно, потому что облако часто выбирает IT-отдел клиента, а не разработчик.

Как это работает

01Ментальная модель: тенант, подписки, группы ресурсов

На самом верху — тенант: каталог Entra ID вашей организации, где хранятся пользователи, группы и регистрации приложений. Под ним — подписки, это границы биллинга и квот; распространённый вариант — одна подписка для продакшена и одна для всего остального. Management groups находятся над подписками и позволяют применять политики сразу ко многим. Внутри подписки каждый ресурс живёт в группе ресурсов — это папка для вещей с общим жизненным циклом, например приложение, его база и Key Vault для одного окружения. Удаление группы ресурсов удаляет всё внутри, что очень удобно для уборки тестовых окружений. Каждое создание, изменение и удаление проходит через Azure Resource Manager (ARM), неважно, используете вы портал, az CLI, Bicep или Terraform. В сравнении с AWS подписка близка к аккаунту AWS, а у группы ресурсов точного аналога нет: она ближе к группировке по тегам, с которой можно выполнять действия.

  • Тенант (Entra ID) → management groups → подписки → группы ресурсов → ресурсы.
  • Одна группа ресурсов на приложение и окружение упрощает уборку и права доступа.
  • Всё — это ARM-ресурс с ID, поэтому всё можно описать кодом.

02Варианты хостинга: App Service, Container Apps, AKS, Functions

App Service — классическая платформа для веб-приложений: вы выбираете рантайм (Node, PHP, .NET, Python, Java) или контейнер, а она берёт на себя серверы, TLS и масштабирование. Вы платите за App Service plan — набор VM, на котором может жить несколько приложений, поэтому стоимость фиксирована размером плана, а не числом запросов. Deployment slots позволяют задеплоить в staging-слот, прогреть его и поменять местами с продакшеном без простоя. Azure Container Apps запускает контейнеры в serverless-режиме поверх Kubernetes, не показывая его вам: автомасштабирование по правилам KEDA (HTTP, очереди, cron), scale to zero, ревизии и разделение трафика. Это ближайший аналог Google Cloud Run. AKS — полноценный managed Kubernetes для команд, которым нужен Kubernetes API. Azure Functions запускает событийный код; для новых serverless-приложений Microsoft рекомендует план Flex Consumption, а план Linux Consumption выводится из эксплуатации в сентябре 2028 года.

03Деплой контейнера в Azure Container Apps

Типичный порядок: создайте группу ресурсов, Azure Container Registry и окружение Container Apps (общую границу сети и логирования для группы приложений). Соберите и запушьте образ в реестр, затем создайте container app. Дайте приложению managed identity и выдайте ей AcrPull на реестр, чтобы не нужен был пароль от реестра. Ingress делает приложение доступным по HTTPS на сгенерированном домене, а ещё можно добавить свой домен с бесплатным managed-сертификатом. Правила масштабирования задают минимальное и максимальное число реплик: минимум ноль — дешевле всего, минимум один — без холодных стартов. Секреты могут ссылаться прямо на Key Vault, так что приложение читает их как переменные окружения, а в вашем пайплайне они никогда не появляются.

bash
az group create --name rg-app-prod --location westeurope
az acr create --resource-group rg-app-prod --name exampleappacr --sku Basic
az acr build --registry exampleappacr --image api:1.4.2 .
 
az containerapp env create --name cae-app-prod \
  --resource-group rg-app-prod --location westeurope
 
az containerapp create --name api \
  --resource-group rg-app-prod --environment cae-app-prod \
  --image exampleappacr.azurecr.io/api:1.4.2 \
  --registry-server exampleappacr.azurecr.io --registry-identity system \
  --target-port 3000 --ingress external \
  --min-replicas 0 --max-replicas 10

04Данные: Azure SQL, PostgreSQL Flexible Server, Cosmos DB, Storage

Azure SQL Database — это managed SQL Server в облаке. Его покупают по моделям vCore или более старой DTU; serverless-уровень умеет автоматически засыпать при простое и тарифицировать вычисления посекундно, что отлично для dev-баз. Для open-source-стеков есть Azure Database for PostgreSQL Flexible Server и MySQL Flexible Server — managed-инстансы с автоматическими бэкапами, zone-redundant высокой доступностью и stop/start для непродакшен-окружений. Cosmos DB — глобально распределённая NoSQL-база с несколькими API (NoSQL, MongoDB, Cassandra); она тарифицируется в request units, поэтому плохо спроектированный запрос или ключ партиции стоит реальных денег. Storage-аккаунты Azure хранят blobs (файлы), очереди, таблицы и файловые шары с уровнями hot, cool, cold и archive. На смену Azure Cache for Redis приходит Azure Managed Redis, так что перед стартом нового проекта проверьте, какой из них актуален.

  • .NET + SQL Server → Azure SQL Database.
  • Laravel / Node + Postgres → PostgreSQL Flexible Server.
  • Глобальный NoSQL с низкой задержкой и предсказуемыми партициями → Cosmos DB.

05Identity: Entra ID, RBAC и managed identities

Entra ID (новое название Azure Active Directory) — это и каталог ваших сотрудников, и identity-провайдер для ваших приложений. Для людей он обеспечивает single sign-on, MFA и conditional access, а для приложений — OAuth 2.0 / OpenID Connect через регистрации приложений. Права на ресурсы Azure работают через Azure RBAC: вы назначаете роль (Reader, Contributor, Storage Blob Data Reader…) principal-у на определённом уровне (management group, подписка, группа ресурсов или отдельный ресурс). Самая полезная для разработчиков возможность — managed identity: Azure даёт вашему App Service, Container App или Function identity, которая умеет получать токены автоматически. Выдайте этой identity роль на Key Vault, Storage или базу — и ваш код подключается через DefaultAzureCredential вообще без пароля. Для CI GitHub Actions может входить через workload identity federation (OIDC) вместо сохранённого client secret.

ts
import { DefaultAzureCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";
 
// Works locally (az login) and in Azure (managed identity), no secrets in code
const credential = new DefaultAzureCredential();
const vault = new SecretClient("https://kv-app-prod.vault.azure.net", credential);
 
const secret = await vault.getSecret("stripe-api-key");
console.log(secret.name, "loaded");

06Советы для продакшена и ценовые ловушки

Azure тарифицирует многие вещи почасово, пользуетесь вы ими или нет. App Service plan стоит одинаково с нулём приложений и с десятью. VM, выключенная изнутри ОС, всё равно тарифицируется — её нужно deallocate. Премиальные возможности могут удивить: Application Gateway, Azure Firewall, премиальные уровни Front Door, Bastion и NAT Gateway имеют фиксированную почасовую стоимость, которая может перерасти маленькое приложение. Log Analytics берёт плату за каждый принятый ГБ, поэтому «болтливое» приложение с подробным логированием может стоить на логах дороже, чем на вычислениях; задайте daily cap и срок хранения. С первого дня используйте бюджеты и алерты Cost Management, помечайте ресурсы тегами владельца и окружения и держите тестовые окружения в отдельных группах ресурсов, чтобы удалять их одной командой. Reservations и savings plans снижают цену стабильных вычислений при обязательстве на один или три года.

Когда применять

  • Организация уже использует Microsoft 365, Entra ID и enterprise agreements, так что identity, биллинг и поддержка уже на месте.
  • Стек — .NET и SQL Server, где инструменты Azure, лицензионные преимущества и поддержка сильнее всего.
  • Нужны корпоративные возможности вроде conditional access, private endpoints и compliance на основе политик во множестве подписок.
  • Вам нужны serverless-контейнеры (Container Apps) или managed-веб-хостинг (App Service) с deployment slots.

Когда не стоит

  • Небольшое приложение стартапа без зависимости от Microsoft: VPS, Cloud Run или более простой PaaS выйдут дешевле и настраиваются быстрее.
  • У команды уже глубокий опыт и инфраструктура в AWS или GCP; Azure лишь добавит второй набор концепций.
  • Нужны очень низкие и предсказуемые ежемесячные расходы: фиксированные почасовые компоненты Azure быстро набегают на маленьких проектах.

Альтернативы

  • AWS

    Самый широкий каталог сервисов. Elastic Beanstalk/App Runner соответствуют App Service, ECS/EKS — Container Apps/AKS, RDS — Azure SQL и Flexible Server.

  • Google Cloud

    Cloud Run — более простая serverless-платформа для контейнеров; BigQuery сильнее в аналитике.

  • VPS + Docker Compose

    Дешевле и проще всего при стабильном трафике, но без managed identity, failover и инструментов compliance.

  • Vercel / Netlify

    Лучше для фронтенд-приложений, которым нужны превью и CDN, а бэкенд размещён в другом месте.

Лучшие практики

  1. Используйте одну группу ресурсов на приложение и окружение и отдельные подписки для продакшена и всего остального.
  2. Используйте managed identities и DefaultAzureCredential вместо строк подключения с паролями.
  3. Храните секреты и сертификаты в Key Vault с RBAC и ссылайтесь на них из App Service или Container Apps.
  4. Описывайте инфраструктуру в Bicep или Terraform; клики в портале считайте только исследованием.
  5. Используйте deployment slots или ревизии Container Apps для релизов без простоя и быстрого отката.
  6. Настройте бюджеты, теги и daily cap для Log Analytics до первого продакшен-деплоя.
  7. Применяйте Azure Policy для разрешённых регионов, обязательных тегов и запрета публичного сетевого доступа к сервисам данных.

Частые ошибки

  • Давать разработчикам Owner на всю подписку вместо Contributor на их группы ресурсов.
  • Остановить VM изнутри ОС и считать, что биллинг прекратился; её нужно deallocate.
  • Хранить строки подключения к SQL с паролями в app settings и в системе контроля версий, когда сработала бы managed identity.
  • Выбрать ключ партиции Cosmos DB, который создаёт горячие партиции и огромные счета за request units.
  • Запускать новые serverless-функции на устаревшем плане Consumption вместо Flex Consumption.

Глубже

07Сеть: VNet, private endpoints и ловушка публичного доступа

По умолчанию многие PaaS-сервисы Azure (Storage, SQL, Key Vault, Cosmos DB) имеют публичные эндпоинты, защищённые только аутентификацией и, опционально, IP-файрволом. Для продакшен-данных надёжнее паттерн private endpoints: сервис получает приватный IP внутри вашей VNet, приватная DNS-зона резолвит его обычный hostname в этот IP, а публичный сетевой доступ вы отключаете. Приложения попадают в VNet через VNet integration (App Service, Functions Flex и Premium) или за счёт запуска окружения Container Apps внутри VNet. Типичный сбой — DNS: если зона privatelink не привязана к VNet, приложение всё ещё резолвит публичный IP и получает блокировку. Топологии hub-and-spoke размещают общие сервисы (файрвол, VPN, DNS) в hub-VNet, соединённой пирингом со spoke-сетями приложений. У каждой части есть цена: private endpoints тарифицируются почасово и за ГБ, а Azure Firewall дорог для маленьких проектов.

bash
# Private endpoint for a PostgreSQL Flexible Server is set at creation;
# for Key Vault, deny public access and add a private endpoint:
az keyvault update --name kv-app-prod --public-network-access Disabled
 
az network private-endpoint create --name pe-kv-app-prod \
  --resource-group rg-app-prod --vnet-name vnet-app-prod --subnet snet-private \
  --private-connection-resource-id $(az keyvault show -n kv-app-prod --query id -o tsv) \
  --group-id vault --connection-name kv-conn

08Azure Policy и landing zones

Azure Policy проверяет каждый ARM-запрос по правилам: запрещать ресурсы вне разрешённых регионов, требовать теги, запрещать публичные IP, требовать TLS 1.2, автоматически разворачивать diagnostic settings. Среди эффектов есть Deny, Audit, Modify и DeployIfNotExists, так что политики умеют и блокировать, и исправлять. Назначайте их на уровне management group, чтобы каждая новая подписка их наследовала. Cloud Adoption Framework от Microsoft описывает «landing zones» — заранее построенную структуру из management groups, политик, централизованного логирования, сети и identity, к которой подключаются новые нагрузки. Для небольшой компании это перебор, но ключевые идеи хорошо масштабируются вниз: платформенная подписка для общих вещей, отдельные подписки для приложений, политики наверху и infrastructure as code для всего. Затем Defender for Cloud оценивает вашу защищённость и подсвечивает ошибки конфигурации.

09AKS на практике: уровни, обновления и identity

У AKS есть бесплатный уровень control plane для экспериментов и уровень Standard с uptime SLA, а также AKS Automatic, который заранее настраивает автомасштабирование нод, безопасность и мониторинг в духе GKE Autopilot. В стандартных кластерах вы всё равно платите за VM нод. Для большинства новых кластеров выбирайте сеть Azure CNI Overlay: поды получают IP из приватного overlay-диапазона, поэтому адреса VNet не заканчиваются. Используйте Microsoft Entra Workload ID, чтобы поды получали токены для собственной managed identity через Kubernetes service account, а не монтировали секреты. Обновления важны: AKS поддерживает лишь окно версий Kubernetes, поэтому настройте канал auto-upgrade и плановые окна обслуживания, используйте несколько node pools (system и user) и проверяйте обновления на staging. Container Insights и managed Prometheus дают мониторинг, но следите за стоимостью приёма данных в Log Analytics.

Реальные ситуации

01

Релизы без простоя для .NET API на App Service

Проблема

Каждый деплой в продакшен-App Service даёт минуту ошибок, пока приложение перезапускается и прогревается.

Как решить

Перейдите на план Standard или Premium с поддержкой deployment slots и создайте staging-слот. Деплойте каждый релиз в staging, дайте ему запуститься и настройте applicationInitialization или путь health check, чтобы swap ждал, пока приложение прогреется. Отметьте настройки, специфичные для окружения (строки подключения, feature flags), как slot settings, чтобы они оставались привязанными к слоту. Затем выполните az webapp deployment slot swap --slot staging --target-slot production. Продакшен-трафик переключается, только когда staging здоров, а если что-то не так, вы меняете слоты обратно за секунды. Включите health check в App Service, чтобы нездоровые инстансы убирались автоматически.

02

Убрать пароли из подключения приложения к базе

Проблема

API на Container Apps подключается к Azure SQL по логину и паролю из app settings. Аудит требует беспарольного доступа.

Как решить

Включите user-assigned managed identity на container app. В Azure SQL назначьте Entra-админа, затем создайте contained user для identity через CREATE USER [id-api-prod] FROM EXTERNAL PROVIDER и выдайте только db_datareader и db_datawriter или права на конкретную схему. Поменяйте строку подключения на Authentication=Active Directory Managed Identity с client ID identity или используйте токен из DefaultAzureCredential в драйвере. Задеплойте, проверьте, затем удалите секрет с паролем и отключите SQL-аутентификацию на сервере, если она не нужна другим клиентам. Во время перехода следите за ошибками в логах входа.

03

Неожиданный счёт за логи

Проблема

Небольшое приложение стоит в Log Analytics дороже, чем в вычислениях. Основной объём дают debug-логи и stdout контейнеров.

Как решить

Откройте таблицу Usage в workspace, чтобы найти, какие таблицы и ресурсы принимают больше всего данных. Понизьте уровень логов приложения в продакшене до warning и перестаньте логировать полные тела запросов и ответов. Для Container Apps или AKS отфильтруйте шумные namespaces и используйте план Basic logs для объёмных таблиц, к которым вы редко обращаетесь. Задайте daily cap с алертом, сократите срок хранения для подробных таблиц и архивируйте то, что требует compliance, в более дешёвое хранилище. Сэмплируйте трейсы в Application Insights вместо сбора всего подряд. Добавьте бюджетный алерт на группу ресурсов, чтобы следующий рост заметили за дни, а не в конце месяца.

Шпаргалка

Войти и выбрать подписку
az login && az account set --subscription "app-prod"
Создать группу ресурсов
az group create --name rg-app-dev --location westeurope
Удалить тестовое окружение целиком
az group delete --name rg-app-dev --yes --no-wait
Деплой Bicep-файла с превью
az deployment group what-if -g rg-app-prod -f main.bicep && az deployment group create -g rg-app-prod -f main.bicep
Container Apps: деплой из исходников
az containerapp up --name api --source . --resource-group rg-app-dev
Стрим логов App Service
az webapp log tail --name app-api-prod --resource-group rg-app-prod
Поменять staging-слот с продакшеном
az webapp deployment slot swap -g rg-app-prod -n app-api-prod --slot staging --target-slot production
Выдать роль managed identity
az role assignment create --assignee <principal-id> --role "Key Vault Secrets User" --scope <vault-id>
Deallocate VM (останавливает оплату вычислений)
az vm deallocate -g rg-app-dev -n vm-test

Вопросы и ответы

Q1Чем App Service отличается от Azure Container Apps?

App Service — зрелая платформа веб-хостинга, где вы платите за App Service plan, фиксированный набор VM, на котором может жить несколько приложений. Она предлагает deployment slots, встроенную аутентификацию, простые свои домены и поддерживает как код, так и контейнеры. Container Apps — serverless-контейнеры поверх managed Kubernetes: вы платите за vCPU и память посекундно, масштабирование идёт по HTTP-трафику, длине очереди или своим правилам KEDA, есть scale to zero, ревизии, Dapr и фоновые jobs. App Service я выбираю для классических веб-приложений со стабильным трафиком и для команд, которым нравятся слоты. Container Apps — для микросервисов, событийных воркеров и всего, что должно масштабироваться до нуля.

Q2Что такое managed identity и зачем её использовать?

Managed identity — это identity в Entra ID, которую Azure создаёт и ротирует для ресурса: App Service, Container App, Function или VM. Ваш код запрашивает токен у локального эндпоинта платформы и использует его для вызова Key Vault, Storage, Azure SQL или любого сервиса с поддержкой аутентификации Entra. Нет ни пароля, ни client secret, которые нужно хранить, которые могут утечь или которые надо ротировать. System-assigned identity живёт и умирает вместе с одним ресурсом; user-assigned identity существует самостоятельно и может быть общей — это удобно, когда нескольким приложениям нужен одинаковый доступ или когда identity должна существовать раньше приложения. В связке с Azure RBAC это даёт доступ по принципу least privilege без секретов.

Q3Что такое Entra ID и как он связан с Azure?

Entra ID — облачный identity-сервис Microsoft, раньше называвшийся Azure Active Directory. Он хранит пользователей, группы и регистрации приложений тенанта и обеспечивает вход, MFA, conditional access и single sign-on в Microsoft 365 и тысячи SaaS-приложений. Подписки Azure доверяют одному тенанту Entra, поэтому каждый человек или приложение, управляющее ресурсами Azure, проходит аутентификацию через него, а Azure RBAC выдаёт им роли. Для разработчиков Entra также служит OAuth 2.0- и OpenID Connect-провайдером: вы регистрируете приложение и даёте пользователям входить через рабочие аккаунты. Entra External ID покрывает сценарии входа для клиентов.

Q4Как деплоить в Azure из GitHub Actions, не храня секретов?

Используйте OpenID Connect workload identity federation. Создайте регистрацию приложения или user-assigned managed identity, добавьте federated credential, которая доверяет токенам GitHub для конкретного репозитория и ветки или environment, и выдайте узкую роль, например Contributor на одну группу ресурсов или AcrPush на реестр. В workflow укажите permissions id-token: write и используйте azure/login с client ID, tenant ID и subscription ID — это идентификаторы, а не секреты. GitHub выдаёт короткоживущий токен на каждый запуск, а Azure обменивает его на access token. Ничего долгоживущего не хранится, а продакшен-деплои можно ограничить защищённым environment.

Q5Bicep или Terraform для Azure?

Bicep — собственный язык Microsoft, который компилируется в ARM-шаблоны. Он поддерживает новые возможности Azure с первого дня, не требует state-файла, потому что состояние — это сам Azure, и имеет хорошие инструменты для VS Code и превью what-if. Terraform с провайдером azurerm мультиоблачный, у него большая экосистема модулей и привычный цикл plan и apply, но remote state нужно вести самому, а поддержки новых возможностей в провайдере иногда приходится ждать. Если компания работает только с Azure и использует инструменты Microsoft, Bicep — чистый выбор. Если облаков несколько или Terraform уже используется, оставайтесь на Terraform. Любой из них намного лучше кликов в портале.

Вопросы уровня senior

S1Как вы выстроите Azure для компании с 10 продуктовыми командами?

Начните с management groups: платформенная группа для общих сервисов и группа landing zones, разделённая на продакшен и непродакшен. Каждая команда или продукт получает свои подписки, созданные автоматическим процессом выдачи (vending), который применяет теги, бюджеты, diagnostic settings, назначения политик и сеть (spoke-VNet с пирингом к hub). Identity централизована в Entra ID: группы сопоставлены ролям RBAC на уровне подписки или группы ресурсов, а привилегированный доступ идёт через Entra PIM с ограниченным по времени повышением прав. Логи стекаются в центральный workspace Log Analytics, состояние безопасности — через Defender for Cloud. Команды деплоят через OIDC-federated-пайплайны и модули Bicep или Terraform из общего каталога. Компромисс — платформенная работа на старте против меньшего числа инцидентов и боли на аудитах потом.

S2Cosmos DB: как выбрать ключ партиции и режим ёмкости?

Ключ партиции определяет и масштабируемость, и стоимость. Хороший ключ имеет высокую кардинальность, равномерно распределяет записи и соответствует самым частым запросам, чтобы большинство чтений попадало в одну партицию. Для multi-tenant SaaS естественен tenantId, но крупные тенанты могут стать горячими; иерархические ключи партиции (tenantId, затем userId) решают эту проблему. Кросс-партиционные запросы расходятся веером и стоят много request units. По ёмкости: serverless дешевле всего для неравномерных малообъёмных нагрузок; provisioned throughput с autoscale подходит для стабильного продакшен-трафика и ограничен выбранным вами максимумом; ручной provisioned дешевле только при очень предсказуемой нагрузке. Уровень консистентности тоже выбирайте осознанно: session consistency — значение по умолчанию и подходит большинству приложений, strong дороже и ограничивает multi-region-запись.

S3App Service, Container Apps или AKS: как выбрать для нового продукта?

Спросите, что команде нужно контролировать. App Service подходит для одного или нескольких веб-приложений со стабильной нагрузкой, для команды, которая ценит простоту и слоты, и для предсказуемой оплаты по плану. Container Apps подходит для нескольких контейнеризированных сервисов, событийных воркеров и API с переменным трафиком, где scale to zero и правила KEDA экономят деньги, а запускать Kubernetes не хочется. AKS подходит платформенной команде, которой нужен Kubernetes API: Helm-чарты, операторы, нестандартная сеть, service mesh, GPU-пулы или переносимость между облаками, — и которая способна взять на себя обновления и безопасность кластера. Цена ошибки асимметрична: переехать с Container Apps на AKS позже благодаря контейнерам несложно, а старт на AKS без нужных навыков создаёт постоянную операционную нагрузку.

Глоссарий

Тенант (Tenant)
Каталог Entra ID организации с пользователями, группами и регистрациями приложений; подписки доверяют одному тенанту.
Подписка (Subscription)
Граница биллинга и квот, содержащая группы ресурсов; примерно соответствует аккаунту AWS.
Группа ресурсов (Resource group)
Логическая папка для ресурсов с общим жизненным циклом; её удаление удаляет всё внутри.
Entra ID
Облачный identity-сервис Microsoft, ранее Azure Active Directory; используется для входа сотрудников и аутентификации приложений.
Managed identity
Управляемая Azure identity ресурса, которая получает токены автоматически и избавляет от хранения секретов.
App Service plan
Набор VM и ценовой уровень, на которых работают приложения App Service; оплачивается независимо от того, заняты приложения или простаивают.
Bicep
Декларативный язык Microsoft для инфраструктуры Azure, который компилируется в ARM-шаблоны и не требует state-файла.
Private endpoint
Приватный IP в вашей VNet, подключённый к PaaS-сервису, чтобы трафик не шёл через публичный интернет.
Flex Consumption
Рекомендуемый serverless-план для Azure Functions: быстрое масштабирование, поддержка VNet и опциональные always-ready-инстансы.

Есть идея продукта?Давайте создадим его.

Расскажите о своей идее, продукте или команде. Обычно отвечаю в течение одного рабочего дня.