Azure Functions’ta PowerShell Kullanarak Serverless Otomasyon – Bölüm – 2
  1. Anasayfa
  2. DevOps

Azure Functions’ta PowerShell Kullanarak Serverless Otomasyon – Bölüm – 2

0

Fonksiyonlarımız için ne tür Triggers ( tetikleyiciler) kullanabileceğimizden bahsettik ve örneklerini anlattık. Şimdi hız kesmeden Bindings (tam türkçeye çeviremiyorum. Bağlar/Bağlantılar) kavramına açmak istiyorum. Bindings size fonksiyonunuz içerisinden verilere bağlanmanız için bir yol veya yöntem için yardımcı olurlar. Bir önceki yazımızda bildiğimiz gibi Triggers ( tetikleyicilerin ) bize geliştirdiğimiz fonksiyonun hangi servisler tarafından tetiklenebileceğini söyleyebiliyorduk. Örneğin, Azure Queue Servisi ile fonksiyonunuz tetiklenmesini ( yani çalışmasını/aksiyon almasını ) sağlayabiliyoruz. Fakat bu tetiklemeden sonra Storage Queue servisinden gelen veri bizim için fonksiyonun içerisindeki parametreye atanıyor. Bindings kullanmak zorunda değiliz fakat kullanma senaryomuzu biraz daha açmak ister isek, Storage Queue’den bir mesaj geldiği zaman tetiklenecek olan Azure Fonksiyonumla beraber Storage Table tuttuğum transcation verileriminde bindings kullanarak bir parametreye atanması sağlayıp, daha sonra bu verileri karşılaştırabilir ve fonskiyonumun onun sonuca göre çalışmasını sağlayabilirim. Bindings tamamen isteğe bağlıdır. Bu yüzden karşımıza farklı Bindings türleri çıkıyor olacak. Bir önceki yazımızda herhangi bir kod yazmadan tetikleyen servise erişmemizi sağlayacağından bahsetmiştik. Bindings sayesinde yine farklı servislere kod yazmadan erişip bir parametreye atayıp veriler elde edebilir ve onları değerlendirebiliriz.

Yukarıda gördüğünüz ekran görüntüsünde en sol kısımda Bindings tiplerini göreceksiniz. Görüntünün en sağ tarafında ise son iki sutünda Input ve Output şeklinde iki tane kavram karşımıza çıkıyor olacak şimdi bunları anlamaya çalışalım. Öncelikle Function trigger eden bir Queue Storage olsun, bu kısımdan akan mesaj bize parametreye atanması gerçekleştirelecektir.Ama Trigger tarafından tetiklenen fonksiyon sırasında yukarıda desteklenen Input Bindings gelen servislerden Azure fonksiyonu içerisine veriler elde etmemiz mümkün. Bindings isteğe bağlıdır ve bir fonksiyonun talebe göre bir veya daha fazla Input ve / veya Output bindings (bağlaması) olabilir.

Input Bindings: Function – Trigger tarafından tetiklendikten sonra alınmak istenen veriler için kullanılır. Input Bindings tanımlaması yapılırken (IN) olarak görebilirsiniz. Table Storage’dan okunacak veriyi almak için örneğin ‘Input’ tipinde binding tanımlanırlar.Yukarıda tablo’da desteklenen Input Binding’lerden ancak veriler alabilirsiniz.

Output Bindings: Trigger tarafından fonksiyonunuz tetiklendi ve talebinze göre Input Bindings tanımlayarak başka servisten veriler alma şansınızda vardı. Aynı şekilde fonksiyon bittiği zaman desteklenen servislere Output Bindings kullanarak veri gönderebilirsiniz.

Not: Yukarıda resim içerisinde farklı bir örnek bulunmaktadır. Trigger tarafından tetiklenen Azure Function daha sonra Input ve Ouput Bindings kullanarak çalışma sürecini tamamlayıp işlevini gerçekleştiriyor. Yazılarımız devam ettikçe Bindings atamasını fonksiyon bazında ‘function.json’ dosyasından yönettiğimize şahit olacaksınız. Bu dosya tamamen Bindings yönetimi ve diğer konfigürasyonlar için her fonksiyon özelinde bulunmalıdır.

Genel anlamıyla fonksiyonlarınızın temel yapı taşları olan özelliklerinden bahsettim. Makale başlığımızdan çıkmadan ‘Serverless automation’ hakkında konuşmaya başlayabiliriz. Neden Azure Functions App seçmeliyiz diye düşünme zamanı olduğunu düşünüyorum. Şu zamana kadar konuştuklarımız aslında Azure Servisleri ile çok kolay bir şekilde entegre olup servisler arası veri okuma sağlamak, etkileşim haline geçmek, servisler ile içli dışlı olmak için minumum seviyede kod yazmak gibi düşünebiliriz. Fakat bunu Infrastructure seviyesinde düşünebilirsek Powershell Core ve arkamıza Azure Functions App alıp tüm bu özelliklerden faydalanabilirsek harika şeyler ortaya çıkabilir. Hemen gelin beraber biraz örnekler üzerinden konuşalım.

Event-Based Automation hakkında örnekler;

  • Örnek 1: Event Grid servisini kullanarak, Azure Resource Group içerisinde yapılan olayları ( Write, Delete, Action ) dinleyip ve bunları alıp Azure Functions içerisine gönderebiliyoruz. Şu şekilde genişletelim, Azure aboneliğiniz bulunmakta, Resource Group oluşturulduğu zaman yapılan işleri alıp, Azure Functions gönderebilme şansınız var. ( Azure Functions Trigger – Event Grid ). Aşağıda görebilemeniz için bir resim bırakıyorum. Aslında bu bize, Azure aboneliğinizin, Event Grid içerisine Subscribe olmasını sağlayan adımlardan bahsediyor. Bu işlemleri yaptıktan sonra Azure Subscription içerisinde oluşacak her yeni olay ( yani Event ) Event Grid’ tarafından alınacak ve talebinize göre, Azure Functions içerisine gönderebileceksiniz. Peki bunları yapmam bana ne tür fayda sağlar? Abonelikten bu bilgilerin Azure functions akmasında amaç nedir diye düşünürseniz, işte bu kısımda artık ‘Event-Based – Automation’ başladınız demektir. Örneğin Bu adımları gerçekleştirdiniz, abonelik üzerinde yeni bir Resource oluşturuldu ve onun içerisinde meela ‘Tags ( Etiket )’ ataması yapmak isteyebilirsiniz, veya farklı bir örnek yeni bir Resource oluşturuldu, bu resource tipine göre farklı kontroller yapmak istiyor olabilirim. Azure Policy, Azure Web App üzerinde bir çok kontroller, yeni bir kaynak yaratıldığı zaman, CMDB ile varlığını kontrol etmek vb adımlar gerçekleştirebilir.

  • Örnek 2: Event-Based automation özelinde somut bir kavram bulmak çabasına girelim, özetle Infrastructure ortamında şu tipte bir olay olduğu zaman şu servislerin çalışması gerektiğini ve onları olay gerçekleştiği zaman çözümleyici olduğunu söylemek yeterli olabilir. Farklı bir örnek olması açısından, örneğin Azure Active Directory özelinde ‘Diagnostic Settings’ sekmesinden ‘AuditLogs’, ‘SignInLogs’ izleyebiliyoruz. Bunları dilerseniz Azure Log Analytics Workspace, Storage Account veya Event Hub gönderme şansınız var. Burdan gelecek tüm events(olayları) Azure Functions tetikleyip istediğimiz kontrolleri yaptırabiliriz.
  • Örnek 3: Azure Sentinel bildiğimiz gibi Cloud- Native bir SIEM hizmeti ve bu servis üzerinden gelen veriyi Event Grid üzerine gönderip, ihtiyacımız olan kısmı ile Azure Functions tarafından işlenmesini sağlayabilir buda bize herhangi bir olayla karşılaştığımız zaman almamız gerek aksiyonu otomatikleştirmemize olanak sağlayan farklı bir örnek.
  • Örnek 4: Event-Based Automation sadece Azure functions olarak düşünülmemelidir. Azure Logic Apps– Servlerss workflow hizmeti olarak karşımıza çıkıyor ve bir çok Azure Servisi ile native bir şekilde connectorleri sayesinde entegrasyon yapabiliyorsunuz. Azure functions zorlandığı yerde, Azure Logic Apps çağırıp veya Azure Functions Logic Apps içerisinde kullanabilirsiniz. Bu tarz özelliklere Azure Active Directory üzerinde yaptığınız event-based automation süreçlerinde denk gelebilirsiniz.
  • Örnek 5: Scheduler Trigger sayesinde Azure Function – Hybrid Connection özelliği sayesinde sadece Azure kaynaklarınıza değil, On-Premise loksayonunuzda sanal sunucu ve diğer kaynaklarınız üzerinde işlem yapabilirsiniz. Hybrid Connection bir nevi sizin On-Premise bağlamak için kullanılan bir agent gibi düşünebilirsiniz. O yüzden Event-Based automation sadece azure özelinde değil – Hybrid ve Cloud automation olarak düşünülmelidir.
Bu İçeriğe Tepkin Ne Oldu?
  • 3
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Hasan Güral, Istanbul doğumlu ve uzun yıllardır bilişim sektöründe danışmanlıktan eğitmenliğe farkli pozisyonlarda görev almıştır. Üniversite eğitimiyle birlikte bilişim sektöründe Kibar Holding, Bilge Adam Bilgi Teknolojileri Akademisi ve PeakUp Bilgi Teknolojileri gibi farkli kurumlarda Kıdemli Danışman ve Eğitmen olarak sektöre yön veren projelerde yer almistir.Microsoft Azure alanında yapmış olduğu paylaşımlar ve katkılarından dolayı Microsoft Valuable Professional (Azure) unvanına hak kazanmıştır. Cloud teknolojilerinin otomasyon alaninda gelişmesiyle birlikte zamaninin bir çoğunu PowerShell, Event-Driven Orchestration, Infrastructure as a Code ve Configuration as a Code ile geçirmektedir.Kariyerine Ingiltere’de DevOps Engineer ve Automation Enthusiast rolü ile Cloud Rundle’da devam etmektedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir