Mersin’deki bir lojistik firması beş farklı sistemi konuşturmaya çalışıyordu: SAP B1 (siparişler), ServiceNow (ticket’lar), Power BI (raporlama), SharePoint (dokümanlar), bir partner B2B EDI portal’ı. Eski çözüm: bir Windows Server üzerinde scheduled PowerShell script’leri ve Excel dosyaları. Sürdürülemez bir hâl alınca Azure Logic Apps ile baştan kurguladık. 14 workflow, 8 ayda canlıya çıkardık. Bu yazı o projeden notlar; “Logic Apps sürükle-bırak, kolay” pazarlamasının ardındaki gerçek operasyonel detaylar.
Consumption mı Standard mı: Karar Matrisi
| Özellik | Consumption | Standard |
|---|---|---|
| Fiyat modeli | Pay-per-action (~$0.000025/exec) | App Service Plan ($150-$2000/ay) |
| VNet integration | Yok (ISE ile vardı, deprecated) | Var, native |
| Stateful + stateless workflow | Sadece stateful | İkisi de |
| Multi-workflow tek kaynakta | Yok (her workflow ayrı resource) | Var |
| Local development | Sınırlı | VS Code uzantısı, lokal debug |
| Connector seçimi | Geniş (1000+) | Geniş + built-in (in-process) |
| Cold start | Var (saniye seviyesi) | Düşük (Always On açıkken yok) |
Sahada karar kuralım: Sporadic workflow (günde 10-100 exec) Consumption. Sürekli yüksek volume (saatte 1000+ exec) veya VNet gereksinimi olan Standard. Mersin projesinde 9 workflow Consumption, 5 workflow Standard’da (özellikle SAP B1 entegrasyonu için VNet integration gerekti).
Connector Seçimi ve Limitleri
Logic Apps’in pazarlanan değeri “1000+ connector”. Pratikte üç tip var:
- Built-in connectors: Logic Apps motoruna gömülü, hızlı, ucuz (action başına standart fiyat). HTTP, Azure Service Bus, Azure Functions, vb.
- Standard connectors: Azure-managed, action başına ücretli. SQL Server, SharePoint, Office 365, Twilio.
- Enterprise connectors: SAP, IBM 3270, AS2, EDI X12. Standard’dan ~~10x pahalı (action başına $0.001 vs $0.000125).
SAP connector enterprise tier. Mersin projesinde SAP B1 ile günde ortalama 4.000 transaction, ayda 120.000 action × $0.001 = $120/ay sadece SAP connector için. Tahmin çıkardığımız budgetı aşmıyordu ama “günde 50.000 transaction olsaydı?” sorusunu sormuştu üst yönetim. O senaryo için SAP’ın native EDI/IDoc’larını kullanan kendi entegrasyon katmanı (SAP Cloud Integration veya kendi service bus) düşünmek gerekiyor.
Workflow Pattern: HTTP Trigger + Service Bus Queue
Best practice öğrendiğim kalıp: HTTP trigger ile webhook al, Service Bus queue’ya hemen yaz, asıl işlem ikinci bir workflow ile queue’dan tetiklensin. Sebep:
- HTTP timeout (sender bekleyemez), Service Bus enqueue 100ms’de biter.
- Hata olursa retry queue’da, sender bilmesine gerek yok.
- Throttling burada koyabilirsin (queue’dan partition limit ile çek).
- Dead letter queue ile başarısız mesajlar inceleme için ayrı tutulur.
# Workflow 1: Receiver
trigger:
type: Request
inputs:
schema: { ... }
actions:
EnqueueMessage:
type: ServiceBus
inputs:
operation: SendMessage
queue: orders-incoming
message: '@{triggerBody()}'
ReturnResponse:
type: Response
inputs:
statusCode: 202
body: '{"messageId":"@{actions('EnqueueMessage').outputs.messageId"}'
# Workflow 2: Processor
trigger:
type: ServiceBus
inputs:
queue: orders-incoming
maxConcurrency: 5
actions:
CallSAP:
type: SAP
inputs:
method: POST
bapi: BAPI_SALESORDER_CREATEFROMDAT2
body: '@{...}'
HandleResult:
type: Switch
cases:
Success:
actions:
UpdateServiceNow: { ... }
Failure:
actions:
DeadLetter: { ... }
On-Premise Data Gateway: SAP B1 Erişimi
SAP B1 on-premise çalışıyordu (Mersin veri merkezinde). Logic Apps’in on-premise sistemlere erişimi için iki yol var:
- On-premise data gateway: Bir Windows machine’e gateway kuruyorsun, Logic Apps gateway üzerinden erişiyor.
- VNet integration + ExpressRoute/VPN: Logic Apps Standard’ı VNet’e koyar, VNet’ten on-prem’e tünel.
İkisi de dener gibi olduk. Gateway daha basit ama tek nokta failure’i. VNet integration daha sağlam ama ExpressRoute lazım. Mersin’de zaten ExpressRoute vardı, VNet integration tercih ettik. Logic Apps Standard, VNet integration ile SAP B1 server’a doğrudan erişiyor.
Throttling ve Retry Policy
SAP B1 saniyede max 50 BAPI çağrısı kabul ediyordu. Logic Apps default’ta concurrent execution limit yok, kolayca SAP’ı boğarsın. Workflow’da throttling kuralı:
runtimeConfiguration:
concurrency:
runs: 5 # max 5 paralel çalışan workflow instance
retryPolicy:
type: exponential
count: 4
interval: PT10S
maximumInterval: PT1M
minimumInterval: PT5S
Service Bus queue trigger için maxConcurrency: 5 ile aynı etki. SAP B1 boğulmuyor, queue içinde mesajlar bekliyor.
Exception Handling: Try-Catch-Finally
Logic Apps’in “scope” özelliği ile try-catch-finally pattern’i:
actions:
TryScope:
type: Scope
actions:
CallSAP: { ... }
UpdateDB: { ... }
CatchScope:
type: Scope
runAfter:
TryScope: [Failed, Skipped, TimedOut]
actions:
LogError: { ... }
SendAlertEmail: { ... }
DeadLetterMessage: { ... }
FinallyScope:
type: Scope
runAfter:
TryScope: [Succeeded, Failed, Skipped, TimedOut]
CatchScope: [Succeeded, Failed, Skipped, TimedOut]
actions:
LogMetrics: { ... }
Bu kalıbı 14 workflow’un hepsinde uyguladık. SAP geçici çökme, ServiceNow timeout, Power BI rate limit gibi durumlar otomatik handle ediliyor, gerçekten ele alınması gereken hatalar email ve Teams kanalına gidiyor.
Monitoring: Application Insights Entegrasyonu
Logic Apps Standard, Application Insights’a otomatik telemetry gönderiyor. Custom property’ler ekleyip workflow execution’larını detaylı tracking yapabiliyorsun.
requests
| where cloud_RoleName == "logic-app-orders-processor"
| where timestamp > ago(24h)
| summarize
Total=count(),
Success=countif(success==true),
Failed=countif(success==false),
AvgDurationMs=avg(duration)
by bin(timestamp, 1h), operation_Name
| render timechart
Mersin’de Application Insights dashboard’u ekibin günlük operasyon panel’i. SLA: günlük başarı oranı %99.5 hedef, %99 altına düşerse alert.
Maliyet Sürprizleri
İlk ay fatura beklediğimizden 2.3x yüksek geldi. Sebepler:
- Trigger polling: Service Bus trigger Consumption’da her poll bir action sayılıyor. Her 30 saniyede bir poll = ayda 86.000 action. Bu poll’lar bedava değil.
- Loop iteration’ları action sayısına dahil: 1000 satırlık array’i loop ile işliyorsan 1000 action, hepsi ücretli.
- Retry’lar action sayısına dahil: Başarısız action 4 retry yaparsa 5 action sayılıyor.
Çözüm: Service Bus için poll yerine push trigger (event-driven). Loop yerine batch action. Retry policy’leri makul (maximum 2-3 retry).
İkinci ay fatura %40 düşük geldi. Üçüncü ay daha optimize ettikçe başlangıç tahminine yaklaştık.
Power Automate vs Logic Apps
Aynı motoru paylaşıyorlar (Power Automate, Logic Apps üzerinde inşa edilmiş). Farklar:
- Power Automate iş kullanıcıları için pazarlanıyor, Logic Apps developer için.
- Power Automate, Power Platform lisansıyla geliyor, kullanıcı bazlı fiyat.
- Logic Apps Azure resource, action bazlı fiyat.
- Power Automate cloud flows, Logic Apps connector’lerinin alt setine erişebiliyor.
- Source control / CI/CD: Logic Apps Bicep/ARM ile Git’te tutulabilir, Power Automate solution export/import gerektiriyor.
Mersin’de iki ürün de yan yana çalışıyor: HR onay süreçleri Power Automate (kullanıcı bazlı, formlar), system entegrasyonları Logic Apps (geliştirici bazlı, kod review).
Sahada Düşülen Üç Tuzak
- Source control yok: Logic Apps designer’da tıklayarak yapıyorsun, “kim ne zaman ne değiştirdi” soruyorsun. Bicep ile IaC yap, Git’te tut.
- Connector authentication tek bir hesaba bağlı: Bir kullanıcı SharePoint connector’ünü kendi hesabıyla bağladı, kullanıcı izinlerini çekti veya işten çıktı, tüm workflow’lar düştü. Service account kullan veya managed identity (mümkün olduğunda).
- Designer’da gizlenen complexity: 50 action’lık bir workflow designer’da görsel hoş gözükür ama debug etmek korkunçtur. 10+ action’lık workflow’u bölmek (sub-workflow ile) okunabilirliği artırır.
Sonuç: Doğru Senaryoda Doğru Araç
Logic Apps “low-code” değil, “high-productivity-code”. Geliştirici bilgisi gerektiriyor (HTTP, JSON, schema, error handling), ama klasik kod yazmaya göre 3-5x daha hızlı. SAP B1 ↔ ServiceNow gibi entegrasyonlarda kendi başına Java/C# yazmak yerine Logic Apps + connector’larla başla, performance/cost yetmediğinde Azure Functions veya Service Bus’a indir.
Mersin’de 14 workflow şu anda günde ortalama 18.000 transaction işliyor, %99.7 başarı oranıyla. Aylık Azure Logic Apps faturası ~~$340. Eski PowerShell + Excel çözümünün manuel düzeltme + hata düzeltme emek maliyeti ayda ~~80 saat × $25 = $2.000 idi. ROI net.
CloudSpark olarak Azure entegrasyon projelerinde Logic Apps + Service Bus + Functions architecture pattern’lerini end-to-end uyguluyoruz. SAP B1, ServiceNow, Salesforce, Dynamics gibi hedeflere yönelik referans çözümlerimiz var.



