Modern uygulama geliştirme dünyasında, iş akışlarını otomatikleştirme ve farklı sistemleri birbirine bağlama ihtiyacı her geçen gün artıyor. Genellikle bu tür senaryolar için Azure Logic Apps gibi bulut tabanlı hizmetler tercih edilir. Peki, bu güçlü entegrasyon platformunu yerel geliştirme ortamınızda, yani kendi bilgisayarınızda VS Code ile nasıl deneyimleyebilirsiniz? Bu makalede, Logic Apps’in HTTP, Blob ve Queue tetikleyicilerini kullanarak iş akışlarınızı yerelde nasıl oluşturacağınızı, test edeceğinizi ve hata ayıklayacağınızı adım adım keşfedeceğiz. Bulut maliyetlerinden kaçınmak, çevrimdışı çalışabilmek veya hassas verilerle daha güvenli bir ortamda çalışmak isteyen geliştiriciler için yerel Logic App geliştirme, kritik bir yetkinlik haline gelmiştir. Bu sayede, uygulamanızı dağıtıma hazır hale getirmeden önce tüm mantığını titizlikle test edebilir, olası hataları çok daha erken aşamalarda tespit edebilirsiniz.
Geliştirme süreçlerini hızlandırmak ve daha esnek hale getirmek amacıyla tasarlanmış olan Logic Apps Standard, sunucusuz mimarinin avantajlarını yerel geliştirme imkanıyla birleştirerek geliştiricilere benzersiz bir deneyim sunar. Özellikle karmaşık entegrasyon senaryolarında, buluta her değişiklik için dağıtım yapmak yerine yerel ortamda anında geri bildirim almak, geliştirme verimliliğini önemli ölçüde artırır. Ayrıca, Azure Logic Apps’in zengin konektör ekosistemi sayesinde, yerel ortamda dahi birçok farklı hizmetle entegrasyon kurabilme yeteneği, geliştiricilere büyük bir özgürlük sunar. Bu makale boyunca, en temel senaryolardan başlayarak, dosya depolama ve mesaj kuyrukları gibi yaygın entegrasyon kalıplarını ele alacak, böylece siz de kendi entegrasyon çözümlerinizi güvenle geliştirebileceksiniz. Şimdi, Logic Apps Standard’ın temellerini ve VS Code ile sunduğu imkanları daha yakından inceleyelim.
Logic Apps Standard ve VS Code Ortamı Nedir?
Azure Logic Apps, farklı hizmetler arasında entegrasyon ve iş akışları oluşturmak için kullanılan sunucusuz bir platformdur. Geleneksel olarak, Logic Apps’ler tamamen bulutta yönetilen ve dağıtılan kaynaklardı. Ancak, “Logic Apps Standard” planının tanıtılmasıyla birlikte, geliştiricilere iş akışlarını yerel olarak geliştirme, test etme ve dağıtma esnekliği sunuldu. Logic Apps Standard, Azure Functions çalışma zamanı üzerine inşa edilmiştir ve bu sayede, Logic App kaynaklarınız üzerinde daha fazla kontrol sağlamanıza olanak tanır. Kendi sanal ağınızda çalıştırma, özel dağıtım seçenekleri ve daha gelişmiş ağ yetenekleri gibi avantajlar sunar. Bu, özellikle hibrit bulut senaryolarında veya özel güvenlik gereksinimleri olan uygulamalar için kritik öneme sahiptir.
VS Code, modern geliştiricilerin tercih ettiği hafif ama güçlü bir kod düzenleyicidir. Azure Logic Apps (Standard) uzantısı ile VS Code, Logic Apps iş akışlarını yerel ortamda oluşturmak, düzenlemek, çalıştırmak ve hata ayıklamak için tam teşekküllü bir IDE’ye dönüşür. Bu entegrasyon, geliştirme döngüsünü kısaltır ve bulut kaynaklarına bağımlılığı azaltır. Yerel geliştirme sayesinde, bulutta oluşabilecek maliyetler veya ağ gecikmeleri gibi endişeler olmadan, iş akışlarınızın mantığını rahatça test edebilirsiniz. Aynı zamanda, ekip içinde sürüm kontrol sistemleriyle (örneğin Git) daha kolay entegrasyon sağlayarak işbirliğini de güçlendirir.
Uzman İpucu: Logic Apps Standard, Docker konteynerleri içinde de çalıştırılabilir. Bu, tutarlı geliştirme ve üretim ortamları oluşturmak için mükemmel bir fırsat sunar. Konteynerleştirme, bağımlılıkları izole eder ve farklı ortamlarda tutarlı çalışma zamanı sağlar.
Neden yerel geliştirme tercih etmelisiniz? Birincisi, geliştirme aşamasında her küçük değişiklik için buluta dağıtım yapmaktan kurtulursunuz, bu da zaman ve maliyet tasarrufu sağlar. İkincisi, çevrimdışı çalışabilme yeteneği, internet bağlantınızın olmadığı durumlarda bile geliştirmeye devam edebilmenizi sağlar. Üçüncüsü, hassas verilerle çalışırken yerel ortamda daha fazla kontrol ve güvenlik sağlanabilir. Dördüncüsü, karmaşık senaryolarda hata ayıklama (debugging) işlemleri bulutta olduğundan çok daha kolay ve interaktiftir. VS Code’un güçlü hata ayıklama araçlarını kullanarak, iş akışınızın her adımını izleyebilir, değişken değerlerini kontrol edebilir ve mantıksal hataları hızla düzeltebilirsiniz. Bu özellikler, özellikle büyük ve karmaşık entegrasyon projelerinde geliştiricilere büyük bir avantaj sağlar. Geliştirme sürecinin bu kadar esnek ve kontrol edilebilir olması, Logic Apps Standard’ı birçok kuruluş için vazgeçilmez bir araç haline getirmektedir.
Geliştirme Ortamını Nasıl Hazırlarsınız: Adım Adım Kurulum Rehberi?
Yerel Logic Apps geliştirme yolculuğumuza başlamadan önce, gerekli araçları bilgisayarımıza kurmamız gerekiyor. Bu bölümde, adım adım kurulum sürecini ve her bir bileşenin ne işe yaradığını detaylıca anlatacağız. Doğru bir kurulum, sorunsuz bir geliştirme deneyimi için kritik öneme sahiptir.
- Visual Studio Code Kurulumu: Eğer henüz VS Code yüklü değilse, resmi web sitesinden indirip kurmanız gerekmektedir. VS Code, platformlar arası desteği ve zengin uzantı ekosistemiyle modern geliştirme için vazgeçilmez bir araçtır.
- Azure Logic Apps (Standard) Uzantısı: VS Code’u açtıktan sonra, Uzantılar görünümüne (
Ctrl+Shift+XveyaCmd+Shift+X) gidin ve “Azure Logic Apps (Standard)” aramasını yapın. Microsoft tarafından yayımlanan uzantıyı yükleyin. Bu uzantı, Logic Apps Standard iş akışlarını VS Code içinde oluşturmak, düzenlemek, çalıştırmak ve hata ayıklamak için gerekli tüm araçları sağlar. - Azure Functions Core Tools: Logic Apps Standard, Azure Functions çalışma zamanı üzerinde çalıştığı için, Azure Functions Core Tools’un yerel olarak yüklü olması gerekir. Bu araçlar, Logic App uygulamanızı yerel makinenizde çalıştırmak için gerekli komut satırı arayüzünü (CLI) sağlar. Terminalinizi açın ve aşağıdaki komutu kullanarak Core Tools’u yükleyin (npm yüklü olmalıdır):
npm install -g azure-functions-core-tools@4 --unsafe-perm trueBu komut, Core Tools'un 4.x sürümünü global olarak yükleyecektir. Yüklemenin başarılı olup olmadığını kontrol etmek için
func --versionkomutunu çalıştırabilirsiniz. - Azurite Kurulumu: Azure depolama hizmetleriyle (Blob, Queue, Table) yerel olarak etkileşim kurmak için Azurite emülatörüne ihtiyacımız var. Azurite, Azure depolama hizmetlerinin bir yerel öykünmesidir ve buluta bağımlı kalmadan depolama işlemlerini test etmenizi sağlar. Azurite'yi de npm aracılığıyla global olarak yükleyebilirsiniz:
npm install -g azuriteAzurite'yi başlattıktan sonra, yerel depolama hizmetlerine bağlanmak için kullanacağınız bağlantı dizesi genellikle şuna benzer olacaktır:
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzft50+==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;Bu bağlantı dizesini
local.settings.jsondosyanızdaAzureWebJobsStorageveya özel bir depolama bağlantı dizesi olarak kullanacağız. - Azure Hesabı ve Giriş (İsteğe Bağlı ama Önerilen): VS Code içinden Azure kaynaklarıyla etkileşime geçmek için Azure hesabınıza giriş yapmanız gerekebilir. VS Code'daki Azure uzantıları aracılığıyla kolayca giriş yapabilirsiniz. Bu, özellikle Logic App'inizi buluta dağıtırken veya buluttaki gerçek kaynaklarla test yaparken faydalı olacaktır.
Tüm bu adımları tamamladığınızda, Logic Apps Standard iş akışlarınızı VS Code içinde yerel olarak geliştirmek ve test etmek için hazır bir ortama sahip olacaksınız. Bu kurulum, size tam kontrol ve esneklik sağlayarak geliştirme sürecinizi hızlandıracak ve potansiyel hataları erken aşamada tespit etmenize yardımcı olacaktır. Her bir aracın düzgün bir şekilde kurulduğundan emin olmak için versiyonlarını kontrol etmeyi unutmayın. Bir sonraki bölümde, bu ortamda ilk Logic App'inizi nasıl oluşturacağınızı ve HTTP tetikleyicisini kullanarak nasıl çalıştıracağınızı göreceğiz.
İlk Logic App'inizi Nasıl Oluşturursunuz: HTTP Tetikleyicisi İle Başlangıç?
Geliştirme ortamımızı başarıyla kurduktan sonra, şimdi ilk Logic App'imizi oluşturmanın ve HTTP tetikleyicisini kullanarak yerelde nasıl çalıştırılacağını deneyimlemenin zamanı geldi. Bu basit senaryo, Logic Apps'in temel yapısını anlamanıza yardımcı olacak ve ileride daha karmaşık iş akışları oluşturmanız için sağlam bir temel oluşturacaktır.
- Yeni Bir Logic App Projesi Oluşturma:
- VS Code'u açın.
- Komut Paletini (
Ctrl+Shift+PveyaCmd+Shift+P) açın ve "Azure Logic Apps: Create New Project" komutunu arayıp seçin. - Projenizi kaydetmek istediğiniz boş bir klasör seçin.
- "Stateful" veya "Stateless" bir iş akışı oluşturmak isteyip istemediğiniz sorulacaktır. Şimdilik "Stateless" seçeneğini seçin; bu daha hafif ve hızlı yanıt veren iş akışları için uygundur. "Stateful" ise uzun süreli ve durum bilgisi gerektiren işlemler için tercih edilir.
- Yeni bir iş akışı oluşturmanız istenirken "HTTP request" tetikleyicisini seçin ve iş akışınıza "MyFirstHttpLogicApp" gibi bir isim verin.
Bu adımları tamamladığınızda, VS Code'da projeniz oluşturulacak ve otomatik olarak yeni bir iş akışı dosyası (
workflow.json) açılacaktır. Proje klasör yapınızın yaklaşık olarak aşağıdaki gibi görünmesi gerekir:MyLogicAppProject/ ├── .vscode/ ├── host.json ├── local.settings.json ├── MyFirstHttpLogicApp/ │ └── workflow.json ├── proxies.json └── extensions.json - İş Akışınızı Tasarlama:
MyFirstHttpLogicApp/workflow.jsondosyasını açtığınızda, Logic Apps tasarımcısı otomatik olarak açılacaktır. Eğer açılmazsa,workflow.jsondosyasına sağ tıklayıp "Open in Designer" seçeneğini seçebilirsiniz. Tasarımcıda, HTTP Request tetikleyicisi zaten eklenmiş olacaktır. Şimdi buna basit bir "Response" eylemi ekleyelim:- Tasarımcıda, HTTP Request tetikleyicisinin altındaki "+" işaretine tıklayın ve "Add an action" seçeneğini seçin.
- Arama kutusuna "Response" yazın ve "Response" eylemini seçin.
- Response eyleminin "Body" kısmına dinamik içerik eklemek için tıklayın. Örneğin, tetikleyiciden gelen bir veriyi kullanabiliriz. "Dynamic content" penceresinde, "Body" altındaki "HTTP request" seçeneğini seçin. Bu, HTTP isteğinin gövdesini yanıt olarak döndürecektir.
- "Status Code" alanını
200olarak bırakın.
- Yerelde Çalıştırma ve Test Etme:
- Terminalinizi açın (VS Code'da
Ctrl+).veyaCmd+ - Proje kök dizinine gidin (
cd MyLogicAppProject). - Logic App uygulamanızı yerel olarak başlatmak için aşağıdaki komutu kullanın:
func startBu komut, Azure Functions Core Tools'u kullanarak Logic App'inizi yerel bir sunucuda çalıştıracaktır. Konsolda, HTTP tetikleyicinizin URL'sini göreceksiniz. Genellikle
http://localhost:7071/api/MyFirstHttpLogicAppgibi bir adres olacaktır. - Bir web tarayıcısı, Postman veya cURL gibi bir araç kullanarak bu URL'ye bir HTTP isteği gönderin. Örneğin, cURL ile:
curl -X POST http://localhost:7071/api/MyFirstHttpLogicApp -H "Content-Type: application/json" -d "{ \"name\": \"Azure Logic Apps\" }" - Yanıt olarak, isteğinizin gövdesini (
{"name": "Azure Logic Apps"}) ve200 OKdurum kodunu almalısınız.
Bu adımlar, yerel Logic App geliştirme ortamınızın başarıyla çalıştığını ve temel bir HTTP tetikleyicili iş akışını yönetebildiğinizi göstermektedir. Terminalde gördüğünüz çıktı, iş akışının her çalıştığında log bilgilerini gösterecektir. Bu, hata ayıklama süreçlerinde oldukça faydalıdır. Dinamik içerik kullanımı, Logic Apps'in gücünü ortaya koyan önemli bir özelliktir. İsteğin gövdesinden veri çekip yanıt olarak döndürmek, temel bir veri işleme senaryosudur. Bu basit örnek, gerçek dünya senaryolarında daha karmaşık veri dönüşümleri ve entegrasyonlar için bir başlangıç noktasıdır.
Uzman İpucu:
local.settings.jsondosyasındaki"IsEncrypted": trueayarı, hassas bilgilerin şifreli olarak saklanmasını sağlar. Bu dosyayı sürüm kontrol sistemine eklemeden önce hassas verileri buradan dışarıda tutmaya özen gösterin.HTTP tetikleyicisi, genellikle web kancaları (webhooks) veya API çağrıları aracılığıyla harici sistemlerden olayları almak için kullanılır. Bu temel iş akışını anladıktan sonra, bir sonraki adımlarda Blob ve Queue depolama hizmetleriyle nasıl entegrasyonlar kuracağımızı keşfedeceğiz, böylece daha zengin ve veri odaklı iş akışları oluşturabiliriz.
Veri Entegrasyonu: Azure Blob Depolama ile Nasıl Çalışırsınız?
Çoğu iş akışı, dosya depolama hizmetleriyle etkileşime girmeyi gerektirir. Azure Blob Depolama, büyük miktarda yapılandırılmamış veriyi (resimler, belgeler, videolar vb.) depolamak için ölçeklenebilir ve uygun maliyetli bir çözümdür. Yerel Logic App'imizde Blob Depolama ile çalışmak için Azurite'yi kullanacağız. Bu bölüm, bir Blob tetikleyicisi ile dosya değişikliklerini izlemeyi ve dosya okuma/yazma eylemlerini nasıl gerçekleştireceğinizi gösterecektir.
- Azurite'yi Başlatma ve Yapılandırma:
Yeni bir terminal penceresi açın (önceki
func startişlemi devam ederken) ve Azurite'yi başlatın:azurite --blob --queueBu komut, Azurite'yi hem Blob hem de Queue hizmetleri için başlatacaktır. Azurite çalıştığında, varsayılan bir bağlantı dizesi kullanır. Bu bağlantı dizesini
local.settings.jsondosyanızdaAzureWebJobsStorageveya daha spesifik bir ayar olarak yapılandırmanız gerekecek.local.settings.jsondosyanızı açın ve aşağıdaki satırı ekleyin veya güncelleyin:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUfXw+YHkM/bMfP0y20nT+PFhQ/A==" }, "Host": { "CORS": { "Origins": [ "*" ] } } }Bu, Logic App uygulamanızın Azurite'ye bağlanmasını sağlayacaktır.
AccountKeyuzun bir dize olup, Azurite'nin varsayılan anahtarıdır. - Blob Tetikleyicili Yeni Bir İş Akışı Oluşturma:
- Komut Paletini açın ve "Azure Logic Apps: Create New Project" komutunu seçin (veya mevcut projenize yeni bir iş akışı ekleyin).
- "Stateful" veya "Stateless" seçeneği sorulduğunda yine "Stateless" seçebilirsiniz.
- Bu sefer, tetikleyici olarak "When a blob is added or modified (Blob)" seçeneğini seçin.
- İş akışınıza "BlobProcessingLogicApp" gibi bir isim verin.
- Blob İş Akışını Tasarlama:
Tasarımcıda, Blob tetikleyicisi zaten eklenmiş olacaktır. Şimdi, bir Blob konteynerini izlemek için tetikleyiciyi yapılandıralım ve bir eylem ekleyelim:
- Blob tetikleyicisini seçin. Bağlantı adını girmeniz istenecektir. "AzureWebJobsStorage" bağlantısını kullanabilir veya "New connection" seçeneğini seçerek yeni bir bağlantı oluşturabilirsiniz. Eğer "New connection" seçerseniz, Azurite bağlantı dizesini girmeniz gerekecektir.
- "Container" (Konteyner) alanına, izlemek istediğiniz Blob konteynerinin adını girin. Örneğin, "input-files". Eğer bu konteyner Azurite'de yoksa, otomatik olarak oluşturulacaktır.
- Tetikleyicinin altına "+" işaretine tıklayarak "Add an action" seçeneğini seçin.
- Arama kutusuna "Create blob" yazın ve "Create blob (Blob)" eylemini seçin. Bu eylem, gelen bir Blob'u işledikten sonra yeni bir Blob oluşturmamızı sağlayacak.
- "Storage account connection" kısmında yine "AzureWebJobsStorage" bağlantısını seçin.
- "Folder" (Klasör) kısmına yeni Blob'un kaydedileceği konteyner adını girin, örneğin "output-files".
- "Blob name" (Blob adı) kısmına, dinamik içerik olarak tetikleyiciden gelen dosyanın adını (
FileName) kullanabiliriz. Örneğin,Processed-@{triggerOutputs()?['body']?['FileName']}. - "Blob content" (Blob içeriği) kısmına ise, tetikleyiciden gelen dosyanın içeriğini (
File Content) dinamik içerik olarak ekleyin.
- Yerelde Test Etme:
func startkomutunuzun hala çalıştığından emin olun.- Azurite'nin de çalıştığından emin olun.
- Şimdi, Azurite'ye manuel olarak bir dosya yüklememiz gerekiyor. Bunu yapmak için Azure Storage Explorer gibi bir araç kullanabilirsiniz. Azure Storage Explorer'ı yükleyip açın, yerel Azurite depolamasına bağlanın ve "input-files" konteynerine basit bir metin dosyası (örneğin
test.txt) yükleyin. - Alternatif olarak, komut satırından
az storage blob uploadkomutunu kullanarak da dosya yükleyebilirsiniz. - Dosyayı yükledikten kısa bir süre sonra, Logic App'iniz tetiklenmeli ve terminalde ilgili logları görmelisiniz.
- Azure Storage Explorer'da "output-files" konteynerine bakarak, işlenmiş yeni bir Blob'un (örneğin
Processed-test.txt) oluşturulduğunu ve içeriğinin orijinal dosyanın içeriğiyle aynı olduğunu görebilirsiniz.
Bu senaryo, Logic App'inizin Azure Blob Depolama ile nasıl entegre olduğunu ve dosya tabanlı iş akışlarını yerelde nasıl işleyebildiğini göstermektedir. Azurite sayesinde, bulutta gerçek depolama kaynaklarına ihtiyaç duymadan bu işlemleri güvenle geliştirebilir ve test edebilirsiniz. Bir sonraki bölümde, mesaj kuyrukları ile asenkron iletişimi nasıl sağlayacağımızı keşfedeceğiz.
Asenkron İletişim: Azure Kuyruk Depolama Entegrasyonu Nasıl Yapılır?
Dağıtılmış sistemlerde asenkron iletişim, ölçeklenebilirlik, esneklik ve hataya dayanıklılık için kritik öneme sahiptir. Azure Kuyruk Depolama (Queue Storage), bu tür senaryolar için basit ama etkili bir mesajlaşma hizmeti sunar. Yerel Logic App geliştirme ortamımızda, Azurite kullanarak Queue Storage ile nasıl etkileşim kuracağımızı öğreneceğiz. Bu bölüm, bir kuyruğa mesaj göndermeyi ve kuyruktan mesaj almayı içeren bir iş akışını ele alacaktır.
- Kuyruk Tetikleyicili Yeni Bir İş Akışı Oluşturma:
Azurite'nin hala
azurite --blob --queuekomutuyla çalıştığından velocal.settings.jsondosyanızın doğru Azurite bağlantı dizesini içerdiğinden emin olun.- VS Code'da Komut Paletini açın ve "Azure Logic Apps: Create New Project" komutunu seçerek yeni bir iş akışı oluşturun.
- Yine "Stateless" seçeneğini tercih edebilirsiniz.
- Tetikleyici olarak "When messages are available in a queue (Queue)" seçeneğini seçin.
- İş akışınıza "QueueProcessorLogicApp" gibi bir isim verin.
- Kuyruk İş Akışını Tasarlama:
Tasarımcıda, Kuyruk tetikleyicisi zaten eklenmiş olacaktır. Şimdi, bir kuyruğu izlemek için tetikleyiciyi yapılandıralım ve alınan mesajı işlemek için bir eylem ekleyelim:
- Kuyruk tetikleyicisini seçin. Bağlantı olarak yine "AzureWebJobsStorage" bağlantısını kullanın.
- "Queue name" (Kuyruk adı) alanına, izlemek istediğiniz kuyruğun adını girin. Örneğin, "input-queue". Eğer bu kuyruk Azurite'de yoksa, otomatik olarak oluşturulacaktır.
- Tetikleyicinin altına "+" işaretine tıklayarak "Add an action" seçeneğini seçin.
- Arama kutusuna "Create message" yazın ve "Create message (Queue)" eylemini seçin. Bu eylem, alınan mesajı işledikten sonra başka bir kuyruğa bir yanıt mesajı göndermemizi sağlayacak.
- "Storage account connection" kısmında yine "AzureWebJobsStorage" bağlantısını seçin.
- "Queue name" (Kuyruk adı) kısmına, işlenmiş mesajın gönderileceği kuyruğun adını girin, örneğin "output-queue".
- "Message" (Mesaj) içeriğine, dinamik içerik olarak tetikleyiciden gelen kuyruk mesajının içeriğini (
Message text) kullanabiliriz. Örneğin,Processed: @{triggerOutputs()?['body']?['MessageText']}. Bu, mesajın başarıyla işlendiğini gösteren bir önek ekleyecektir.
- Yerelde Test Etme:
func startkomutunuzun hala çalıştığından emin olun (bu, aynı terminalde tüm Logic App'lerinizi çalıştırır).- Azurite'nin de çalıştığından emin olun.
- Şimdi, "input-queue" kuyruğuna manuel olarak bir mesaj göndermemiz gerekiyor. Bunu Azure Storage Explorer kullanarak yapabilirsiniz:
- Azure Storage Explorer'ı açın ve yerel Azurite depolamasına bağlanın.
- "Queues" altında "input-queue" kuyruğunu bulun (veya oluşturun).
- Kuyruğu seçin ve "Add Message" düğmesine tıklayın.
- Mesaj içeriği olarak "Hello from Azure Queue!" gibi bir metin girin ve mesajı gönderin.
- Mesajı gönderdikten kısa bir süre sonra, Logic App'iniz tetiklenmeli ve terminalde ilgili logları görmelisiniz.
- Azure Storage Explorer'da "output-queue" kuyruğuna bakarak, işlenmiş yeni bir mesajın (örneğin
Processed: Hello from Azure Queue!) oluşturulduğunu görmelisiniz.
Uzman İpucu: Kuyruk mesajlarının Logic Apps tarafından birden fazla kez işlenmesini önlemek için "atomik" ve "idempotent" iş akışları tasarlamak önemlidir. Bu, iş akışınızın aynı mesajı birden fazla kez alsa bile yalnızca bir kez etkili olmasını sağlar.
Bu örnek, Azure Queue Storage ile asenkron mesajlaşmanın gücünü ve Logic Apps'in bunu nasıl kolayca entegre edebildiğini göstermektedir. Bu tür bir mimari, mikro hizmetler arasında iletişimi sağlamak, uzun süreli görevleri işlemek veya aşırı yüklenmeyi yönetmek için idealdir. Bir sonraki bölümde, daha ileri düzey senaryoları ve Logic Apps geliştirmenizi daha verimli hale getirecek ipuçlarını keşfedeceğiz.
İleri Düzey Senaryolar ve Performans İpuçları: Gelişmiş Kullanım
Temel HTTP, Blob ve Queue entegrasyonlarını başarıyla kurduk. Şimdi, Logic Apps Standard ile çalışırken karşılaşabileceğiniz daha ileri düzey senaryoları ve performansınızı artıracak ipuçlarını inceleyelim. Bu bölüm, hata ayıklama, bağlantı dizesi yönetimi, dağıtım stratejileri ve CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) gibi konulara odaklanacaktır.
Hata Ayıklama (Debugging) ve Log Yönetimi: Yerel geliştirme ortamının en büyük avantajlarından biri, güçlü hata ayıklama yetenekleridir. VS Code'un yerleşik hata ayıklayıcısını kullanarak Logic App iş akışlarınızda kesme noktaları (breakpoints) ayarlayabilir, değişkenlerin değerlerini adım adım izleyebilir ve yürütme akışını kontrol edebilirsiniz. Bunun için:
workflow.jsondosyasında, bir eylemin üzerine gelip sol kenardaki boşluğa tıklayarak bir kesme noktası ayarlayın.- VS Code'un Sol panelinde "Run and Debug" (
Ctrl+Shift+D) görünümüne geçin. - "Run and Debug" düğmesine tıklayın. Bu, Logic App'inizi hata ayıklama modunda başlatır.
- Ardından, tetikleyiciyi manuel olarak çalıştırdığınızda (örneğin HTTP isteği göndererek), iş akışınız kesme noktasında duracaktır. Değişkenleri inceleyebilir ve iş akışınızı adım adım yürütebilirsiniz.
Ayrıca, Logic Apps'in yerel olarak oluşturduğu loglar da hata tespiti için hayati öneme sahiptir. Terminalde
func startkomutunu çalıştırdığınızda, her eylemin ve tetikleyicinin durumuyla ilgili detaylı logları göreceksiniz. Bu log seviyelerinihost.jsondosyasında yapılandırabilirsiniz.{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true } }, "logLevel": { "Host.Triggers.Http": "Information", "Host.Triggers.Blob": "Information", "Host.Triggers.Queue": "Information", "Function": "Information" } } }Bağlantı Dizeleri ve Uygulama Ayarları Yönetimi: Çoğu uygulamada olduğu gibi, Logic Apps'te de veritabanı bağlantı dizeleri, API anahtarları gibi hassas bilgilerin güvenli bir şekilde yönetilmesi gerekir. Yerelde
local.settings.jsondosyasını kullanırken, bulutta bu ayarlar "Application Settings" olarak yönetilir. Dağıtım sırasında bu ayarların doğru bir şekilde aktarıldığından emin olmak için tutarlı isimlendirme ve yapılandırma en iyi uygulamalarını takip edin. Örneğin, bağlantı dizesini@appsetting('AzureWebJobsStorage')şeklinde kullanarak uygulama ayarlarından dinamik olarak çekebilirsiniz.Dağıtım Stratejileri ve CI/CD: Logic Apps Standard, Azure Functions çalışma zamanını kullandığı için, Azure Functions uygulamaları için kullanılan dağıtım yaklaşımlarının çoğu Logic Apps Standard için de geçerlidir. ZIP dağıtımı, kaynak kontrol entegrasyonu (GitHub, Azure DevOps) ve CI/CD ardışık düzenleri (pipelines) ile otomatik dağıtım, geliştirme verimliliğini artırır. Azure DevOps veya GitHub Actions kullanarak, kod değişiklikleriniz tetiklendiğinde Logic App'lerinizin otomatik olarak test edilmesini ve dağıtılmasını sağlayabilirsiniz. Bu, hataları erken yakalamanıza ve daha hızlı yayın yapmanıza olanak tanır.
Performans İpuçları ve Mobil Uyumluluk: Logic App'lerinizin performansı, seçtiğiniz tetikleyicilere, eylemlere ve bunların sıralanışına bağlıdır. Uzun süreli çalışan iş akışları için "Stateful" seçeneğini kullanmak, iş akışınızın durumunu korumasını sağlar. Paralel eylemler, eşzamanlı işlem gerektiren senaryolarda performansı artırabilir. Ayrıca, gereksiz API çağrılarından kaçınmak ve büyük veri kümelerini toplu işlemek (batch processing), genel performansı önemli ölçüde iyileştirecektir. Eğer Logic App'lerinizin durumunu veya çıktısını gösteren bir web arayüzü geliştiriyorsanız, bu arayüzün mobil uyumlu olması önemlidir. Örneğin, HTML ve CSS kullanarak responsive tasarımlar oluşturabilirsiniz:
Bu örnek, bir web arayüzünün farklı ekran boyutlarına nasıl adapte olabileceğini gösterir. Logic Apps'in kendisi bir UI sağlamazken, onunla etkileşimde bulunan veya durumu gösteren her türlü arayüzün mobil uyumlu olması, kullanıcı deneyimini artıracaktır. Bu ileri düzey teknikler ve ipuçları, Logic Apps Standard projelerinizde daha sağlam, yönetilebilir ve performanslı çözümler geliştirmenize yardımcı olacaktır.
Gerçek Dünya Uygulamaları: E-Ticaret Sipariş İşleme Vaka Analizi
Şimdiye kadar edindiğimiz bilgileri kullanarak, gerçek dünyadan bir senaryoyu ele alalım: Bir e-ticaret platformunda sipariş işleme. Bu senaryo, HTTP, Blob ve Queue entegrasyonlarının bir kombinasyonunu içererek, Logic Apps'in farklı hizmetler arasında nasıl köprü kurabildiğini gösterecektir. Amacımız, yeni bir sipariş geldiğinde (HTTP tetikleyici), sipariş detaylarını bir dosyaya kaydetmek (Blob) ve ardından siparişin işlenmesi için bir kuyruğa mesaj göndermektir (Queue).
Senaryo Detayları:
Bir e-ticaret sitesi, yeni bir sipariş geldiğinde Logic App'imize bir HTTP POST isteği gönderir. Logic App bu isteği aldıktan sonra:
- Gelen sipariş verilerini alır.
- Sipariş verilerini JSON formatında bir dosyaya dönüştürür ve Azure Blob Depolama'ya (yerelde Azurite) kaydeder.
- Siparişin daha fazla işlenmesi için (örneğin stok kontrolü, ödeme onayı) bir Azure Kuyruk Depolama kuyruğuna (yerelde Azurite) bir mesaj gönderir.
İş Akışı Tasarımı (E-commerceOrderProcessorLogicApp):
- HTTP Request Tetikleyicisi:
- Yeni bir Logic App oluşturun ("Stateful" olarak adlandırabiliriz, çünkü siparişin durumunu takip etmek isteyebiliriz).
- Tetikleyici olarak "When an HTTP request is received" seçeneğini seçin.
- İstek gövdesinin JSON şemasını tanımlayın. Bu, Logic App'in gelen verileri doğru bir şekilde ayrıştırmasına yardımcı olur. Örnek bir şema:
{ "type": "object", "properties": { "orderId": { "type": "string" }, "customerEmail": { "type": "string" }, "totalAmount": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "productId": { "type": "string" }, "quantity": { "type": "integer" } } } } } }
- Create Blob Eylemi:
- HTTP tetikleyicisinin altına bir "Create blob (Blob)" eylemi ekleyin.
- "Storage account connection" olarak
AzureWebJobsStorage'ı kullanın. - "Folder" (Konteyner) olarak
ordersadını kullanın. - "Blob name" olarak, tetikleyiciden gelen
orderIddeğerini kullanarak dinamik bir isim verin:@{triggerBody()?['orderId']}.json. - "Blob content" olarak, HTTP isteğinin tüm gövdesini JSON formatında kaydedin:
@{json(triggerBody())}.
- Create Message Eylemi:
- "Create blob" eyleminin altına bir "Create message (Queue)" eylemi ekleyin.
- "Storage account connection" olarak yine
AzureWebJobsStorage'ı kullanın. - "Queue name" olarak
order-processing-queueadını kullanın. - "Message" içeriği olarak, siparişin anahtar bilgilerini içeren bir JSON nesnesi oluşturun:
{ "orderId": "@{triggerBody()?['orderId']}", "customerEmail": "@{triggerBody()?['customerEmail']}" }
Yerelde Test Etme:
Önceki bölümlerde olduğu gibi, Azurite'yi ve Logic App'inizi
func startile çalıştırın. Ardından Postman veya cURL kullanarak HTTP tetikleyici URL'nize aşağıdaki gibi bir POST isteği gönderin:curl -X POST http://localhost:7071/api/E-commerceOrderProcessorLogicApp -H "Content-Type: application/json" -d "{ \"orderId\": \"ORD-001\", \"customerEmail\": \"customer@example.com\", \"totalAmount\": 99.99, \"items\": [ { \"productId\": \"P-101\", \"quantity\": 1 }, { \"productId\": \"P-102\", \"quantity\": 2 } ] }"İsteği gönderdikten sonra:
- Terminalde Logic App'inizin başarıyla çalıştığını görmelisiniz.
- Azure Storage Explorer ile Azurite'ye bağlanarak
ordersBlob konteynerindeORD-001.jsonadında bir dosyanın oluşturulduğunu ve içeriğinin gönderdiğiniz sipariş JSON'u olduğunu kontrol edin. - Aynı şekilde,
order-processing-queuekuyruğundaorderIdvecustomerEmailbilgilerini içeren bir mesajın olduğunu doğrulayın.
Bu vaka analizi, Logic Apps Standard'ın farklı Azure hizmetleriyle nasıl entegre olduğunu ve karmaşık iş akışlarını yerelde kolayca nasıl tasarlayıp test edebileceğinizi göstermektedir. Bu yaklaşım, geliştiricilere bulut ortamına dağıtım yapmadan önce iş mantığını tamamen doğrulama imkanı sunarak, üretim ortamındaki hataların riskini minimize eder ve geliştirme sürecini hızlandırır. Bu esneklik, modern entegrasyon senaryolarında Logic Apps'i güçlü bir araç haline getirir.
Sonuç: Yerel Logic App Geliştirmenin Geleceği
Bu makale boyunca, Azure Logic Apps Standard'ın VS Code ile yerel geliştirme imkanlarını derinlemesine inceledik. HTTP tetikleyicileriyle API entegrasyonlarından, Azure Blob ve Queue Depolama ile dosya ve mesaj işleme senaryolarına kadar birçok farklı entegrasyon kalıbını adım adım uyguladık. Azurite gibi yerel öykünücüler sayesinde, bulut kaynaklarına bağımlı kalmadan geliştirme ve test süreçlerini nasıl hızlandırabileceğimizi gördük. Ayrıca, hata ayıklama teknikleri, bağlantı dizesi yönetimi ve CI/CD entegrasyonları gibi ileri düzey konulara değinerek, daha sağlam ve yönetilebilir Logic Apps çözümleri geliştirme konusunda önemli bilgiler edindik.
Yerel Logic App geliştirme, özellikle karmaşık ve sürekli değişen entegrasyon ihtiyaçları olan projelerde geliştiricilere paha biçilmez bir esneklik sunar. Bulut maliyetlerini düşürmenin yanı sıra, çevrimdışı çalışma yeteneği ve hızlı geri bildirim döngüleri sayesinde geliştirme verimliliğini önemli ölçüde artırır. Geliştiricilerin, buluta dağıtım yapmadan önce iş akışlarının her yönünü yerelde titizlikle test edebilmesi, potansiyel hataların erken aşamada tespit edilmesini sağlayarak üretim ortamındaki riskleri minimize eder. Logic Apps Standard, sunucusuz mimarinin avantajlarını yerel kontrolle birleştirerek, modern entegrasyon çözümleri geliştiren ekipler için vazgeçilmez bir araç haline gelmiştir. Gelecekte, Logic Apps'in bu yerel geliştirme yetenekleri, hibrit bulut senaryolarında ve edge computing uygulamalarında daha da kritik bir rol oynayacaktır.
Sıkça Sorulan Sorular
- Logic Apps Standard ile Tüketim planı arasındaki temel fark nedir?
- Logic Apps Standard, Azure Functions çalışma zamanı üzerinde çalışır, bu da ona daha fazla kontrol (örneğin ağ yapılandırması, özel dağıtım seçenekleri) ve yerel geliştirme/hata ayıklama yeteneği sağlar. Tüketim planı ise tamamen sunucusuzdur, ölçeklendirmesi otomatiktir ve genellikle her işlem için ödeme yapılır, ancak yerel geliştirme desteği daha sınırlıdır.
- Azurite yerine gerçek Azure depolama hizmetlerini yerelde kullanabilir miyim?
- Evet,
local.settings.jsondosyanızdaki bağlantı dizelerini gerçek Azure depolama hesaplarınızın bağlantı dizeleriyle değiştirerek bunu yapabilirsiniz. Ancak, bu durumda internet bağlantınızın olması ve gerçek bulut kaynaklarına erişim izninizin olması gerekir. Geliştirme maliyetlerini ve ağ bağımlılığını azaltmak için Azurite genellikle tercih edilir. - Logic Apps Standard'ı Docker konteynerleri içinde çalıştırabilir miyim?
- Kesinlikle! Logic Apps Standard, Azure Functions çalışma zamanını kullandığı için Docker konteynerleri içinde çalıştırılabilir. Bu, geliştirme, test ve üretim ortamları arasında tutarlılık sağlamak için harika bir yoldur ve CI/CD süreçlerinde büyük avantajlar sunar.
- Yerel Logic App'imde hata ayıklama yaparken performans sorunları yaşıyorum. Ne yapmalıyım?
- Hata ayıklama modunda çalışırken doğal olarak bazı performans düşüşleri yaşanabilir. Ancak,
host.jsondosyasındaki log seviyelerini ayarlayarak gereksiz log çıktısını azaltabilir, kesme noktalarını stratejik yerlere koyabilir ve sadece ilgili iş akışını çalıştırmak için tetikleyicileri manuel olarak tetikleyebilirsiniz. Ayrıca, sanal makinenize daha fazla kaynak (RAM, CPU) ayırmak da yardımcı olabilir. - Logic App iş akışlarında özel kod (örneğin C# veya Python) kullanabilir miyim?
- Evet, Logic Apps Standard, Azure Functions entegrasyonu sayesinde özel kod (örneğin C#, Python, JavaScript) içeren Azure Functions'ları çağırabilir. Bu, Logic App'lerinizin yerleşik konektörlerle yapamayacağı karmaşık iş mantığını veya veri dönüşümlerini uygulamanıza olanak tanır. İş akışınızda "Azure Function" eylemini kullanarak mevcut bir fonksiyon uygulamanızı çağırabilirsiniz.
- Terminalinizi açın (VS Code'da
