Giriş
Azure üzerinde bir sistemin üretime (production) alınması, yalnızca uygulamayı çalıştırmaktan ibaret değildir.
Gerçek bir üretim ortamı; güvenlik, performans, süreklilik, yedekleme, gözlemlenebilirlik (observability) ve maliyet optimizasyonu açısından test edilip onaylanmalıdır.
Bu doküman, Azure ortamınızı canlıya almadan önce uygulamanız gereken teknik kontrol listesini sunar.
Gereksinimler
- Azure aboneliği (Enterprise veya Pay-As-You-Go)
- Azure CLI 2.60+
- PowerShell 7+
- Bicep CLI (v0.24+)
- Yönetici izinleri (Contributor veya Owner)
- Mevcut Resource Group yapısı
1️⃣ Ağ ve Güvenlik (Networking & Security)
1.1 Sanal Ağ (VNet)
az network vnet create \
--name prod-vnet \
--resource-group rg-prod \
--address-prefix 10.10.0.0/16
-
Her uygulama katmanı için ayrı Subnet oluşturun:
10.10.1.0/24→ Frontend10.10.2.0/24→ Backend10.10.3.0/24→ Database
-
Network Security Group (NSG) kurallarını yalnızca gerekli portlara izin verecek şekilde tanımlayın.
-
Azure Firewall veya Azure Application Gateway (WAF) kullanın.
1.2 DNS ve Peering
- Private DNS Zone kullanarak servisler arası iç çözümleme sağlayın.
- Hub–Spoke topolojisi ile yönetim ağı (Hub) ve uygulama ağı (Spoke) ayrılmalıdır.
az network vnet peeringkomutu ile çift yönlü peering yapılandırın.
1.3 Güvenlik İlkeleri
- NSG, Azure Firewall ve Defender for Cloud aktif olmalı.
- Just-In-Time (JIT) erişim yalnızca yönetici hesaplarına açık olmalı.
- Key Vault içinde gizli bilgiler (connection string, secret, certificate) tutulmalı.
2️⃣ Kimlik ve Erişim Yönetimi (IAM & RBAC)
2.1 Rol Bazlı Erişim
New-AzRoleAssignment -ObjectId "" -RoleDefinitionName "Reader" -Scope "/subscriptions//resourceGroups/rg-prod"
- Owner, Contributor, Reader rollerini minimum ayrıcalık (least privilege) prensibiyle dağıtın.
2.2 Managed Identity
az keyvault set-policy --name kv-prod --object-id --secret-permissions get list
- Uygulama servislerine System-Assigned veya User-Assigned Managed Identity ekleyin.
- Key Vault erişimi için policy tanımlayın.
2.3 Policy ve Blueprint
- Azure Policy ile kaynak standardizasyonunu zorunlu kılın (örn. region, naming convention).
- Gereksiz Public IP veya açık portlara izin veren kaynakları denetleyin.
3️⃣ İzleme ve Gözlemlenebilirlik (Monitoring & Observability)
3.1 Log Analytics
az monitor diagnostic-settings create \
--name diag-prod \
--resource \
--workspace \
--logs '[{"category":"AllLogs","enabled":true}]'
3.2 Uyarılar (Alerts)
- CPU, bellek, disk, ağ trafiği ve hata oranı için metric alert oluşturun.
- Activity Logs’u denetleyin → anormal erişimler için e-posta bildirimi.
3.3 Application Insights
- Web uygulamaları için Application Insights entegrasyonu zorunludur.
- Dağıtık izleme (distributed tracing) aktif edilmelidir.
4️⃣ Yedekleme ve Felaket Kurtarma (Backup & DR)
az backup vault create \
--resource-group rg-prod \
--name vault-prod \
--location westeurope
az backup protection enable-for-vm \
--policy-name DefaultPolicy \
--vault-name vault-prod \
--vm
- Yedekleme sıklığı: Günlük
- Saklama süresi: 30 gün
- Geo-Redundant Storage (GRS) önerilir.
az sql db replica create \
--name sqldb-prod \
--partner-server sql-dr \
--resource-group rg-prod
5️⃣ Performans ve Ölçeklenebilirlik
az monitor autoscale create \
--resource-group rg-prod \
--resource \
--min-count 2 --max-count 6 --count 2
-
VMSS (Virtual Machine Scale Set) veya App Service Autoscale aktif olmalı.
-
Azure Load Balancer → L4 yönlendirme
-
Application Gateway → L7 yönlendirme
-
Traffic Manager → Global DNS tabanlı yük dengeleme
-
Azure CDN veya Front Door ile global içerik önbellekleme.
-
Redis Cache → oturum ve API yanıt hızlandırma.
6️⃣ CI/CD Entegrasyonu
trigger:
branches: [ main ]
stages:
- stage: Build
jobs:
- job: build
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
- stage: Deploy
jobs:
- deployment: deploy
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: 'Prod-Connection'
appName: 'web-prod'
name: Deploy to Azure
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/webapps-deploy@v3
with:
app-name: web-prod
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
7️⃣ Maliyet, Policy ve Tag Yönetimi
az consumption budget create \
--amount 500 \
--category cost \
--name budget-prod \
--resource-group rg-prod \
--time-grain monthly \
--start-date 2025-01-01 --end-date 2025-12-31
- Cost Analysis → servis bazlı maliyet kontrolü
- Budget Alerts → aylık limit tanımlayın
- Resource Tagging →
Environment=Production,Owner=ITOps,CostCenter=1001 - Azure Policy → “Allowed Locations” ve “Require Tag” politikaları etkin olmalı.
8️⃣ Go-Live Teknik Check-listesi
| Kategori | Kontrol | Durum |
|---|---|---|
| Ağ | NSG & Firewall kuralları güncel mi? | ☐ |
| DNS | Private DNS tanımlı mı? | ☐ |
| VM | OS Patch ve Agent güncel mi? | ☐ |
| App Service | Application Insights bağlı mı? | ☐ |
| Veritabanı | Geo-Replication etkin mi? | ☐ |
| Backup | Son yedek başarıyla tamamlandı mı? | ☐ |
| Monitoring | Uyarılar tanımlandı mı? | ☐ |
| Security | Key Vault erişimi sınırlı mı? | ☐ |
| Policy | Tag ve Policy kontrolleri geçerli mi? | ☐ |
| CI/CD | Otomatik deploy pipeline’ı çalışıyor mu? | ☐ |
Sonuç
Bu teknik kontrol listesi, Azure ortamınızı üretim öncesi tüm açılardan doğrulamanıza yardımcı olur:
- Güvenlik → En az ayrıcalıklı erişim ve ağ segmentasyonu
- Performans → Ölçeklenebilir kaynaklar ve yük dengeleme
- Süreklilik → Yedekleme, DR ve izleme stratejileri
- Governance → Policy, Tagging ve maliyet optimizasyonu
İpucu: Azure Well-Architected Framework’teki beş sütun (Cost, Reliability, Security, Performance, Operational Excellence) bu checklist’in temelini oluşturur.