Kurs
Azure Functions, Microsoft’un sunucusuz işlem hizmetinin bir parçasıdır. Basitçe, sunucuları kendiniz yönetmeden, olaylara yanıt olarak küçük kod parçalarını çalıştırmanızı sağlar.
Örneğin, bir işlev bir HTTP isteği geldiğinde, bir dosya depolamaya yüklendiğinde veya planlanan bir zamana ulaşıldığında çalışabilir.
“Sunucusuz” mutlaka sunucu olmadığı anlamına gelmez. Azure’un altyapıyı sizin yerinize yönettiği anlamına gelir. Azure, sağlama, ölçekleme ve bakımı arka planda üstlenir.
Bu rehberde, yapı taşlarını ele alacağım: Tetikleyiciler, bağlamalar, barındırma seçenekleri ve başlamanıza yardımcı olacak uygulamalı bir örnek.
Azure Functions Nedir?
Azure Function, seçtiğiniz bir olay tarafından tetiklendiğinde çalışan küçük bir kod parçasıdır. Mantığı siz yazarsınız, gerisini Azure halleder.
Bu modeli tanımlayan üç fikir vardır.
- Olay güdümlü yürütme, kodun sürekli değil, yalnızca bir şey olduğunda çalışmasına izin verir.
- Otomatik ölçekleme, Azure’un talebe göre işlem kaynaklarını ekleyip çıkarmasına olanak tanır.
- Tüketime dayalı fiyatlandırma, bazı barındırma planlarında, yalnızca kodunuzun gerçekten çalıştığı süre için ödeme yapmanızı sağlar.
İdeal olarak, tek bir işlev tek bir işi yapar; örneğin bir görseli yeniden boyutlandırmak veya bir mesajı işlemek gibi. Function App ise bir veya daha fazla işlevi barındıran kaptır. İçindeki tüm işlevler için yapılandırma ve dağıtım gibi paylaşılan ayarları yönetir.
Azure Functions Nasıl Çalışır
Bir işlevin yaşam döngüsü aşağıdaki basit deseni izler:
- Bir olay gerçekleşir; örneğin bir dosya yüklemesi veya bir HTTP çağrısı.
- Bir tetikleyici olayı algılar ve işlevi anında başlatır.
- İşlev kendi kodunu çalıştırır.
- Bağlamalar, işlevi ihtiyaç duyulan girdiyi okuyan veya çıktıyı gönderen diğer hizmetlere bağlar.
- Azure, seçtiğiniz barındırma planına göre bu sürecin arkasındaki işlem kaynaklarını yönetir.
Bu akış, dil veya barındırma seçeneğinden bağımsız olarak büyük ölçüde aynıdır. Yalnızca tetikleyici, kod ve bağlamalar değişir.
Azure Functions Tetikleyicileri
Her işlevin tam olarak bir tetikleyicisi vardır. Tetikleyici, işlevin tam olarak nasıl başladığını tanımlar. Bilmeniz gereken en yaygın türler şunlardır:
- HTTP Trigger: Bir HTTP isteği aldığında bir işlevi çalıştırır. API geliştirmede yaygındır.
- Timer Trigger: Bir işlevi bir zamanlamaya göre çalıştırır; örneğin, her saat veya günde bir kez.
- Blob Storage Trigger: Azure Blob Storage’a bir dosya eklendiğinde veya değiştirildiğinde bir işlevi çalıştırır.
- Queue Trigger: Bir kuyruğa yeni bir ileti geldiğinde bir işlevi çalıştırır.
- Event Hub Trigger: Bir olay akışına yanıt olarak bir işlev çalıştırır. Büyük veri hacimleri için çok kullanışlıdır.
- Cosmos DB Trigger: Cosmos DB kapsayıcısında belgeler oluşturulduğunda veya güncellendiğinde, Change Feed’den yararlanarak bir işlevi çalıştırır.
- Service Bus Trigger: Azure Service Bus kuyruğu veya konusu üzerinden gelen iletilere yanıt olarak bir işlev çalıştırır; kurumsal mesajlaşma ve sistemleri ayrıştırma için yaygın olarak kullanılır.
- Durable Functions: Sunucusuz bir ortamda durum bilgili işlevler yazarak karmaşık, çok adımlı iş akışlarını orkestre etmenizi sağlayan Azure Functions uzantısı.
Azure Functions Bağlamaları
Tetikleyiciler ve bağlamaların sıkça karıştırıldığını düşünüyorum, ancak benzer görünseler de tamamen farklı işler yaparlar. Tetikleyici bir işlevi başlatır; bağlama ise veriyi okuyup göndererek işlevi veriye bağlar.
Girdi bağlamaları
Burada, özel tümleşme kodu yazmadan işlevinize veri verirsiniz. Örneğin, yalnızca bağlamayı tanımlayarak bir işlev bir veritabanından bir kaydı otomatik olarak okuyabilir.
Çıktı bağlamaları
Bu, işlevinizin sonucunu başka bir yere göndermenizi sağlar. Örneğin, işlenmiş bir mesajı bir kuyruğa yazmak için çıktı bağlamalarını kullanabilirsiniz.
İşte yardımcı olacak bir örnek: Bir Blob Storage tetikleyicisi, bir görsel yüklendiğinde bir işlevi başlatır. Ardından bir çıktı bağlaması, yeniden boyutlandırılmış görseli farklı bir depolama kapsayıcısına kaydeder. Bağlamalar depolama bağlantılarını yönetir ve elle yazılmış depolama istemcisi koduna gerek yoktur.
İlk Azure Function’ınızı Nasıl Oluşturursunuz
İşte bir selamlama döndüren, HTTP ile tetiklenen çok basit bir işlev örneği. Akış şu şekildedir:
- Bir Function App oluşturun. Bu, Azure’da işlevinizin konteyneridir.
- Bir çalışma zamanı seçin ve kod yazmak istediğiniz dili belirleyin.
- Function App’inizin içine yeni bir işlev ekleyin.
- İşlevin web isteklerine yanıt vermesi için HTTP tetikleyiciyi seçin.
- İstekten bir isim okuyup “Merhaba, [isim].” döndürmek gibi basit bir işlevsellik ekleyin.
- Yerleşik test araçlarını kullanarak veya tarayıcınızdan bir istek göndererek işlevi çalıştırıp test edin.
- Canlı ve erişilebilir olması için Azure’a dağıtın.
Deseni göstermek ve gerisini yaratıcılığınıza bırakmak için bu örneği özellikle küçük tuttum.
Azure Functions’ın Desteklediği Diller
Azure Functions birçok dili destekler; örneğin:
- C#
- JavaScript/TypeScript
- Python
- Java
- PowerShell
Destek ve geliştirme modelleri dile ve sürüme göre değişebilir. Bu nedenle, yeni bir projeye başlamadan önce güncel Azure belgelerine bakmanızı öneririm; çünkü bu detaylar sık değişir.
Azure Functions Barındırma Seçenekleri
Her Azure Function aynı şekilde çalışmaz. Azure, her biri farklı ödünlerle gelen birkaç barındırma planı sunar. Doğru seçim durumunuza bağlıdır. Başlıca ödünler şunlardır:
- Ölçekleme: Bazı planlar otomatik ve anında ölçeklenirken, diğerleri biraz daha fazla manuel kontrol gerektirir.
- Başlangıç davranışı: Bazı planlar işlevleri “sıcak” tutar. Bu, anında çalışmaya hazır oldukları anlamına gelir; diğerleri ise işlevleri talep üzerine başlatır.
- Ağ: Bazı planlar özel bir sanal ağa bağlanma gibi gelişmiş ağ özelliklerini desteklerken, diğerleri desteklemez.
- Maliyet: Fiyatlandırma modelleri, yürütme başına ödemeden sabit aylık maliyetlere kadar büyük farklılık gösterir.
Azure Functions’ta Ölçekleme ve Soğuk Başlangıçlar
Bir işlev üretimde çalışırken iki kavram daha önem kazanır. Bunlar:
Otomatik ölçekleme
Burada Azure, işlevinizin yükünü izler; talep arttığında daha fazla işlem örneği ekler, talep azaldığında ise onları kaldırır. Bunu manuel olarak yönetmeniz gerekmez.
Soğuk başlangıçlar
Bir işlev yakın zamanda çalışmadıysa, yeni bir isteği işleyebilmeden önce başlamak için kısa bir süreye ihtiyaç duyabilir. Bu gecikmeye soğuk başlangıç denir. Bazı barındırma planları, belirtildiği gibi örneği sıcak tutarak bunu azaltır veya önler.
Yaygın Azure Functions Kullanım Senaryoları
Olay güdümlü model, karşılaşabileceğiniz birçok günlük probleme uygundur. Özellikle:
API’ler ve web kancaları
Tam zamanlı bir web sunucusu çalıştırmadan gelen HTTP isteklerini ele almak için.
Dosya ve görsel işleme
Depolamaya bir dosya geldiğinde bir işlevi tetikleyip ardından yeniden boyutlandırmak, dönüştürmek veya yalnızca taramak için.
Zamanlanmış işler
Sürekli açık bir sunucuya ihtiyaç duymadan zamanlayıcıyla temizlik görevleri, raporlar veya hatırlatıcılar çalıştırmak için.
Veri işleme hatları
İletiler veya olaylar geldikçe, adım adım işlemek için.
IoT ve olay işleme
Akış halinde gelen büyük hacimli sensör veya cihaz verilerini ele almak için.
Arka plan görevleri
E-posta göndermek gibi yavaş veya ara sıra yapılan işleri ana uygulamanızı engellemeden dışarı almak için.
Azure Functions’ı İzleme ve Sorun Giderme
Bir işlev canlıya alındığında, nasıl performans gösterdiğine dair görünürlük gerekir.
Örneğin, her çalıştırmada ne olduğunu kaydeden günlükleri görebilirsiniz; bu, hata ayıklama için çok kullanışlıdır. Ayrıca, performansı, istekleri ve hataları tek bir merkezde izleyen Azure araçlarındaki Application Insights’ı da kontrol edebilirsiniz.
Bir işlevin ne zaman ve neden tamamlanmadığını bilmek için çağrı başarısızlıklarını da izlemelisiniz. Performans izleme, sorun haline gelmeden önce yavaş işlevleri tespit etmenize yardımcı olur ve elbette, başarısız yürütmelerin otomatik olarak yeniden denenmesi için yeniden deneme davranışı yapılandırılabilir.
Sonuç
Azure Functions, alttaki sunucuları yönetmeden, olaylara yanıt olarak kod çalıştırmanın bir yolunu sunar. Tetikleyiciler bir işlevin ne zaman başlayacağına karar verir. Bağlamalar ise, ek tümleşme kodu olmadan o işlevi diğer hizmetlere bağlamayı kolaylaştırır.
Basit bir test işlevinden üretimde çalışan bir şeye geçtiğinizde, barındırma ve ölçekleme seçimleri çok daha önemli hale gelir. Doğru plan maliyeti etkiler, ancak aynı zamanda hız ve güvenilirliği de belirler.
Merkezi olmayan veriler ve dağıtık iş yükleri üzerinde bütünleşik (federated) ML işlem hatlarıyla uç zekâ sağlayan hızlandırılmış yapay zekâ sistemleri üzerinde çalışıyorum. Çalışmalarım Büyük Modeller, Konuşma İşleme, Bilgisayarlı Görü, Pekiştirmeli Öğrenme ve ileri ML topolojilerine odaklanmaktadır.
SSS
Azure Functions nedir?
Olaylara yanıt olarak küçük kod parçalarını çalıştıran, sunucuları sizin yönetmediğiniz sunucusuz bir hizmet.
Bir Azure Function’ı ne tetikler?
HTTP istekleri, zamanlayıcılar, dosya yüklemeleri veya kuyruk iletileri gibi olaylar.
Tetikleyici ile bağlama arasındaki fark nedir?
Bir tetikleyici işlevi başlatır. Bir bağlama ise girdi veya çıktı için onu diğer hizmetlere bağlar.
Soğuk başlangıç nedir?
Bir işlevin, boşta kaldıktan sonra çalışmaya başlarken yaşadığı kısa gecikme.
Azure Functions hangi dilleri destekler?
C#, JavaScript/TypeScript, Python, Java ve PowerShell.

