🔁 DevOps

devops-azure-cloud-advisor

Conseils pour l'architecture et le déploiement sur Azure — App Service, Azure Functions, Container Apps, SQL Azure et bonnes pratiques cloud.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- devops-azure-cloud-advisor --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } devops-azure-cloud-advisor -Launch"

🚀 Déjà installé ?

claude "/devops-azure-cloud-advisor"

Ou tapez /devops-azure-cloud-advisor dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

AzureApp ServiceAzure FunctionsContainer AppsAzure SQLdéploiement Azurecoûts Azure

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/devops-azure-cloud-advisor ~/.claude/skills/

Payload du plugin : skills/devops-azure-cloud-advisor · source éditable : devops-skills/azure-cloud-advisor

📖 Manuel

Conseiller Azure Cloud

Workflow

  1. Qualifier le besoin : type de workload (web, event-driven, batch, temps réel), contraintes (SLA, latence, data residency), budget mensuel cible.
  2. Choisir le service de compute : utiliser la matrice ci-dessous ; si ambiguïté, demander si l'équipe maîtrise déjà K8s.
  3. Architecturer : topologie réseau (VNet, Private Endpoints), sécurité (Managed Identity, Key Vault), résilience (zones, geo-replication).
  4. Provisionner : commandes az copiables ou Bicep/Terraform.
  5. Optimiser : coûts (Reserved, Spot, scale-to-zero), performance (profiling via App Insights), scalabilité.

Choix du service de compute

ServiceUsage idéalScaleCoût typique
App ServiceAPI/app web .NET, Node, PythonAuto-scale par plan~40 €/mois (B2)
Container AppsMicroservices conteneurisés, DaprKEDA, scale-to-zero~0–80 €/mois
Azure FunctionsÉvénementiel, triggers (HTTP, Queue, Timer)Consumption auto~0 (< 1 M req/mois gratis)
AKSOrchestration K8s complexe, multi-tenantNode autoscaler + KEDA> 100 €/mois
VM / VMSSLegacy, contrôle réseau totalManual ou VMSSVariable

Arbre de décision

Nouveau projet ?
├── Traitements événementiels courts (< 10 min) → Azure Functions (Consumption)
├── Microservices conteneurisés, trafic variable → Container Apps
├── App web / API REST, équipe sans ops K8s    → App Service
├── Besoin Kubernetes avancé (CRD, helm, réseau custom) → AKS
└── Migration lift-and-shift ou workload GPU   → VM / VMSS

Migration d'un existant ?
├── App .NET monolithique IIS → App Service (Windows plan)
├── Docker Compose existant  → Container Apps
└── Contrôle réseau très fin (BGP, ASN)        → AKS ou VMs

Provisionner — commandes copiables

Créer un Container Apps Environment + app

# Variables
RG=rg-myapp-prod
LOCATION=westeurope
ENV=cae-myapp-prod
APP=api-backend

az group create -n $RG -l $LOCATION

az containerapp env create \
  --name $ENV --resource-group $RG --location $LOCATION

az containerapp create \
  --name $APP --resource-group $RG \
  --environment $ENV \
  --image myregistry.azurecr.io/api:latest \
  --target-port 8080 --ingress external \
  --min-replicas 0 --max-replicas 10 \
  --cpu 0.5 --memory 1Gi \
  --registry-server myregistry.azurecr.io \
  --system-assigned                         # Managed Identity

Créer une Azure Function (Consumption)

az storage account create -n stfnmyapp -g $RG -l $LOCATION --sku Standard_LRS
az functionapp create \
  --name fn-myapp-prod --resource-group $RG \
  --storage-account stfnmyapp \
  --consumption-plan-location $LOCATION \
  --runtime dotnet-isolated --runtime-version 8 \
  --functions-version 4 \
  --assign-identity '[system]'

App Service + slot de staging

az appservice plan create -n plan-myapp -g $RG --sku P2V3 --is-linux
az webapp create -n web-myapp -g $RG --plan plan-myapp --runtime "DOTNETCORE:8.0"
az webapp deployment slot create --name web-myapp -g $RG --slot staging
# Swap zero-downtime :
az webapp deployment slot swap --name web-myapp -g $RG --slot staging

Architecture de référence — Container Apps (microservices)

Internet
  → Azure Front Door (CDN + WAF)
      → Container Apps Environment (VNet intégré)
            API Gateway (YARP / NGINX)
            ├── Service A  (scale-to-zero, KEDA Queue)
            ├── Service B  (min 1 replica)
            └── Worker     (trigger Azure Service Bus)
      → Azure SQL (Private Endpoint)
      → Azure Cache for Redis (Premium, clustering)
      → Azure Service Bus (Topics + DLQ)
      → Azure Key Vault   (Managed Identity, no secrets in env vars)
      → Application Insights + Log Analytics Workspace

Bonnes pratiques par service

Azure SQL

```csharp // EF Core + Azure Identity services.AddDbContext<AppDbContext>(o => o.UseSqlServer(conn, sql => sql.UseAzureIdentityAuthentication())); ```

Azure Key Vault

``` @Microsoft.KeyVault(SecretUri=https://kv-myapp.vault.azure.net/secrets/DbPassword/) ```

Managed Identities

```bash az role assignment create \ --assignee <principal-id> \ --role "Key Vault Secrets User" \ --scope /subscriptions/<sub>/resourceGroups/$RG/providers/Microsoft.KeyVault/vaults/kv-myapp ```

Application Insights


Optimisation des coûts

LevierÉconomie estiméeEffort
Reserved Instances 1 an (App Service, AKS nodes)30–45 %Faible
Reserved Instances 3 ans50–65 %Faible
Spot VMs (batch, CI workers)60–90 %Moyen
Scale-to-zero (Container Apps, Functions)Très élevé (idle = 0)Nul
Right-sizing (Azure Advisor)20–40 %Moyen
Azure Dev/Test subscription50–55 % sur VMsFaible
# Voir les recommandations Azure Advisor (coût)
az advisor recommendation list --category Cost -o table

Garde-fous / Anti-patterns / Pièges


Checklist déploiement production