Azure Event Hubs ve Stream Analytics ile Uçtan Uca Mimari Çözümü

Advanced Data Analytics serisindeki daha önceki yazılarımızda Azure Event Hubs ve Stream Analytics servislerini ayrı ayrı ele almıştık. Bu yazımızda ise uçtan uca çözüm amacı ile bu servislerin nasıl kullanılabileceğini ele alacağız. Çözüm ile ilgili örnek uygulamalara ise serinin devamındaki yazılarda yer vereceğiz.

Microsoft Azure Event Hubs ve Microsoft Azure Stream Analytics servislerini kullanarak uçtan uca bir stream veri akışı analizi çözümü kolaylıkla uygulanabilmektedir. Aşağıdaki şemada bu çözümlerde hangi aşamada verinin nasıl elde edilebileceği, nasıl analizinin yapılabileceği ve sonuçlarının nasıl çıktı olarak alınabileceği gösterilmektedir.

ASA-blog

Event Producers:

Bu kısımda daha önce de bahsedildiği gibi veri üreten mekanizmalardan verinin alınması için gerekli çalışmaların yapıldı bölümdür. Stream olarak akan ve analiz edilmek istenen bu verileri bir uygulama, bir web sitesi, IoT (Internet of Things) cihazları, diğer veri üreten cihazlar üretebilmektedir. Saniyede milyonlarca bilgi ve veri akışı sağlayabilen bu cihaz ve uygulamaların ürettiği veri yoğunluğu ancak anlık analiz yapabilen bir çözümle mümkün olabilmektedir.

Collection:

Bu kısımda veri üreten cihaz ve uygulamalardan gelen veriler tanımlanan gateway’ler yardımıyla toplanmaktadır. Bir bağlantı cümlesi (connection string) ile belirtilen hedefe veriler iletilecektir. Bu aşamada bizim kullanacağımız veri toplama çözümü Microsoft Azure Event Hub olacaktır.

Ingestor:

Uygulamalar, web siteleri veya IoT cihazlarından gelen veriler gateway’ler yardımıyla Microsoft Event Hub’a iletilmektedir. Burada tanımlı connection string ile bağlantı sağlanan Event Hub’a bilgiler serialize edilerek gönderilmektedir. Serialize edilmek istenilen format seçeneği JSON, AVRO veya CSV olabilmektedir. Yazılan kod yardımıyla bu seçenek set edilebilmektedir.

Transformation:

Bu aşamada Microsoft Azure Event Hub veya Azure Blob Sorage’dan gelen veriler alınarak gerekli dönüşüm işlemleri yapılabilmektedir. Microsoft SQL Server’dan aşina olduğunuz T-SQL diline çok benzeyen SQL komutları ile istenilen sorgular yazılarak JSON olarak gelen veri temel SQL bilgisiyle harmanlanarak çok hızlı ve pratik bir şekilde dönüştürülebilmektedir. Burada dönüştürülen veriler çıktı olarak bir sonraki adıma aktarılmaktadır.

Long-term Storage:

Uygulama veya IoT cihazlarından çekilen veriler Event Hub ile alınıp Stream Analytics ile analiz edildikten sonra ortaya çıkan sonuçlar kalıcı olarak saklanmak istenebilir. Bu gibi bir durumda Microsoft Azure Stream Analytics analiz edilen veriyi çıktı olarak saklamak için çeşitli seçenekler sunmaktadır. Bu seçenekler, Azure SQL Database, Azure Blob Storage, Azure Event Hub, Power BI, Azure Table Storage, Service Bus Queues, Service Bus Topics, Azure DocumentDB’dir. Bu seçeneklerden hangisini tercih edeceğimiz kullanmak istediğimiz senaryoya bağlı olarak değişiklik gösterebilmektedir. Örneğin stream verinin çıktısı ilişkisel bir veri tabanında saklanmak isteniliyorsa Azure SQL Database, ilişkisel olmayan bir yapıda saklanmak isteniliyorsa Microsoft Azure NoSQL çözümü olan DocumentDB veya key-value çiftleri olarak saklanmak isteniliyorsa Azure Table Storage tercih edilebilir. Bunun dışında analiz edilen veri Azure Service Bus hizmetinde Service Bus Queues, Service Bus Topics ve Event Hub’a gönderilebilir. Böylece analiz edilen stream verinin çıktısı başka bir analiz yapılabilmesi için tekrar bir yerde toplanmış olacaktır. Örneğin analizi yapılan stream verisi çıktı olarak tekrar Event Hub’a gönderilip buradan başka bir uygulama için veri kaynağı olabilir, Azure Machine Learning (AzureML) algoritmaları yardımıyla ileriye dönük tahmin etme çalışmaları, sınıflandırmalar vb. çalışmalar yapılabilir.

Presentation and Action:

Çıktı olarak elde edilen verinin uzun dönemli olarak kalıcı saklanmasının yanında bir de bu verinin anlık olarak analiz edilmesi ihtiyacı doğabilmektedir. Örneğin, bir web sitesinden stream olarak gelen tıklama verileri alınarak sitenin hangi bölümüne tıklandığı bilgisini koordinat sistemi sayesinde görsel bir rapor ile sunabilmekte, anlık olarak kaç kullanıcı, kaç tıklama yapıldığı gibi bilgilere erişilebilmektedir. Bu gibi senaryoları gerçekleştirebilmek için Excel ile raporlar oluşturulabileceği gibi canlı anlık stream verinin raporlanması için Microsoft Power BI ürünü de kullanılabilmektedir. Power BI ile alınan stream verinin çıktısı gerçek zamanlı olarak oluşturulan dashboard’larda raporlanabilmektedir. Böylece bu panolara bakılarak anlık olarak gerçek zamanlı veri analizi ile raporlar takip edilebilmektedir.

asa

Stream olarak gelen verinin analiz safhalarını özet olarak gösteren yukarıdaki görselde de uçtan uca mimariyi görebilmekteyiz. Burada veri kaynağı (data source) kısmında uygulama, IoT cihazları vb. kaynaklardan gelen büyük miktarda stream veri alınarak Event Hub’ta toplanmaktadır (collect). Bu aşamada daha önce bahsedildiği gibi referans veri kullanılmak isteniliyorsa Azure Blob Storage üzerinden bu veriler de input olarak alınabilmektedir. Toplanan verileri biçim değiştirme ve işlemek için Stream Analytics içinde proses edilirler (Process). Analiz edilen verinin çıktısı output olarak kalıcı saklanmak isteniliyorsa Azure SQL Database, Azure Blob Storage veya başka bir input olarak kullanılacaksa Azure Event Hub’a gönderilebilir (deliver). Çıktı olarak alınan veri anlık olarak raporlanmak isteniliyorsa Microsoft Power BI ile panolar oluşturularak raporlanabilir veya çıktılar Azure Machine Learning gibi başka bir uygulama tarafından alınarak istatistiksel algoritmalar vasıtasıyla tahmin etme çalışmaları yapılabilir (consume).

Bir sonraki yazımızda Event Hubs servisinin ayağa kaldırılması ile ilgili örnek bir demo gerçekleştireceğiz. Şimdilik görüşmek üzere…

Yazar: Abdullah ALTINTAŞ

Dipnot: Yazı içinde kullanılan görsel öğeler için Microsoft Azure Documentation sayfası ve çeşitli kaynaklardan faydalanılmıştır.

Yorum Yaz