Microsoft Azure Stream Analytics Servisi

Bir önceki yazımızda Microsoft Azure Event Hubs ile verinin elde edilmesi kısmını ele almış ve bu servisin genel özelliklerini ve çalışma mekanizmasını açıklamıştık. Bu yazıda ise elde edilen stream verinin analizini gerçekleştirmek için kullanılacak olan Microsoft Azure Stream Analytics servisinin genel özelliklerini aktaracağız.

ASA-blog

Microsoft Azure Event Hubs servisi ile elde edilen veri Microsoft Azure Stream Analytics servisi ile işlenebilmekte ve çıktı üretebilmektedir. Microsoft Azure Stream Analytics servisi iki farklı veri türünü input olarak kabul edebilmektedir. Bunlar, Event Hubs’tan gelen input verisi ve Blob Storage’dan gelen input verisidir. Stream olarak akan büyük miktarda verileri Azure Event Hubs’tan alarak Stream Analytics servisine aktarabilmekteyiz. Diğer yandan statik olan veya çok az değişen referans veriler için ise Azure Stream Analytics bizlere Blob Storage kaynağını sunmaktadır. Referans veri bizler için aslında akan veriyi anlamlandıran lookup yapılabilecek statik verileri temsil eder. Örneğin otoyol veya köprülerde karşımıza çıkan gişeleri düşünelim. Gişelerden anlık olarak yüzlerce araç geçmektedir. Bu araçların bilgileri RFID benzeri sistemlerle okunarak Event Hubs ile elde edilebilir. Ancak araca ait detay bilgileri bu akan stream verisinde bulmamız pek mümkün olmayacaktır. Veriyi analiz ederken bu bilgileri de göstermek veya işlemek istiyorsak araç plakası vb. bir lookup ile referans dataya erişebilir ve ilgili aracın rengi, markası, modeli, varsa borcu, trafiğe çıkış tarihi gibi detay bilgilere de ulaşılabilir. Referans datanın Azure Blob Storage üzerinde tutulması ve gerekli sıklıklarla refresh edilmesi gerekebilir. Bunları da Azure üzerinde tanımlayabileceğimiz joblar yardımıyla elde edebilmekteyiz. Şu an için Azure Stream Analytics ile referans datayı sadece Blob Storage üzerinde tutabilmekte ve buradan alabilmekteyiz. Limit olarak da referans datayı alma işlemi için 50 MB üst limiti bulunmaktadır.

8637.103015_0303_EventHubsSt2

Azure Stream Analytics ile işlenmek istenilen stream verisini ve referans veriyi alırken hangi formatta serialize (serileştirme) edeceğimizi de seçebilmekteyiz. Bunlar daha önce de bahsedildiği gibi CSV, JSON ve AVRO formatlarıdır. Ayrıca seçilen seçeneğe göre Unicode seçeneği de seçilebilmektedir. Şu an için UTF-8 formatı desteklenmektedir.

maxresdefault

Microsoft Azure Stream Analytics servisi ile anlık veri analizi yapılabilmektedir. Ayrıca yüzde 99,9 SLA oranı ile devamlılığı garanti etmektedir. Microsoft Azure Stream Analytics servisi ile stream verilerini analiz edecek bir çözüm üretmek oldukça kolaydır, kullanımı oldukça basittir. Var olan sistemlerde bile oldukça hızlı bir şekilde geliştirilebilmektedir. Ayrıca bütün Microsoft Azure servislerinde olduğu gibi Microsoft Azure Stream Analytics servisinde de otomatik restore seçeneği mevcuttur. Bu şekilde olası bir felaket senaryosunda veri kaybı yaşanmamış ve sistem çok hızlı bir şekilde tekrar kullanıma alınabilmektedir.

perf

Microsoft Azure Stream Analytics servisini kullanarak altyapı maliyetine ve gerekli geliştirme karmaşıklığına hiç girmeden hızlı bir şekilde sadece servis hizmetini satın alarak kullandığınız kadar ücret ödeyebilirsiniz. Bu da ölçeklenebilir bir ödeme sistemi ve kullanım şekli avantajını bizlere sunmaktadır. Sahip olma konusunda başlangıç maliyeti ve fayda analizi yapıldığında Microsoft Azure Stream Analytics servisi oldukça ciddi bir avantaj sağlamaktadır. Yine ölçeklenebilir yapısı sayesinde ihtiyaç duyulan dönemlerde ölçeği arttırarak daha hızlı ve daha büyük verilerin analizini yapabilmekte, gerek duyulmadığında ise maliyet konusunda avantaj sağlayabilmek için sadece bir kaç tıklama ile ölçeği azaltarak sistemi daha efektif bir hale getirebilmekteyiz.

Bir sonraki yazımızda stream verinin elde edilmesi için kullanılan Event Hubs ve analizi için kullanılan Stream Analytics servisleri uçtan uca çözüm odaklı olarak nasıl kullanılabiliyor konusunu ele alacağız. Ş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.

Microsoft Azure Event Hubs Servisi ile Veri Edinme

Bir önceki yazımızda stream olarak gelen verinin elde edilmesi için kullanılabilecek olan yaygın seçeneklerden bahsetmiştik. Bu seçenekler içinde hem kullanım kolaylığı bakımından hem de tutulan verinin daha sonra analizini gerçekleştirileceği servislere entegre olması avantajı bakımından Microsoft Azure Event Hubs servisi bir adım öne çıkmaktadır. Bu yazımızda Microsoft Azure Event Hubs servisinin özelliklerini ve kullanımını ele alacağız.

AzureEventHubsOverview

Stream olarak gelen verinin analiz edilmesi için en kolay ve uygulanabilir çözümlerden biri de Microsoft Azure Event Hubs ve Microsoft Azure Stream Analytics servisleridir. Uzun yıllardır kullanıcı dostu tasarımlar yapan, ürettiği çözümlerde her zaman kullanım kolaylığını ön plana çıkaran Microsoft, bulut çözümü olan Microsoft Azure Servisleri ile de yine kullanımı kolay bulut hizmetleri çözümü sunmaktadır. Microsoft Azure Servisleri, SaaS (Software as a Service), PaaS (Platform as a Service) ve IaaS ( Infrastructure as a Service) olmak üzere üç farklı bölüme ayrılmaktadır. Burada Microsoft altyapı hizmetlerini çözüm olarak sunarak fiziksel bir müdahaleye gerek kalmadan sadece mantıksal (logical) yönetim hizmetini sunmaktadır. Ayrıca yazılım servisleri, veri servisleri ve platform olarak sunulan servisler ile de kullanımı kolay çözümlerini bizlere sunmaktadır.

Başta IoT (Internet of Things) nesneleri olmak üzere yüklü miktarda veri üreten birçok ortam bulunmaktadır. IoT cihazları gibi bir web sitesinin click stream verisi de çok yüklü miktarda veri üretmektedir. Saniyede milyonlarca event’in oluşturduğu bu verileri ilişkisel veri tabanlarında tutmak mümkün olmadığı için Microsoft Azure servislerinden Event Hubs servisi ile verileri elde etmek mümkün olabilmektedir. Event Hubs kullanılarak, stream olarak gelen yüklü miktarda veriyi uygulamalarda tanımladığımız endpoint’ler ve gateway’ler vasıtasıyla geçici bir ortamda tutmamıza olanak tanımaktadır. Event Hubs ile web sitesi üzerinde click stream ile oluşturulan kullanıcı verileri JSON, CSV veya AVRO formatlarında elde edilebilmektedir. Özellikle yazılım dillerinde sıklıkla kullanılan JSON formatı entegrasyon sistemleri için de kullanılan yaygın bir formattır. Web sitesi üzerinde oluşan tıklama ile gelen JSON formatındaki veriler uygulama tarafından Event Hubs’a gönderilmektedir. Uygulamadan gelen veriler ise Event Hubs servisinde belirlenen ayarlara göre geçici olarak tutulmaktadır. Event Hub servisi geçici bir veri ambarı gibi düşünülebilir. Microsoft Azure portalı üzerinden yapılabilen retention ayarı ile uygulamadan gelen verilerin ne kadar süre ile burada saklanacağı belirlenebilmektedir. En çok 30 güne kadar belirlenebilen bu ayar ile geçmişe dönük olarak da veriler saklanabilmektedir.

ic759858

Microsoft Azure Event Hubs servisinin bir başka avantajı da partiton’lara bölünebilmesidir. Bu şekilde aynı anda farklı partition’lara veriyi yazarak çok daha hızlı ve büyük miktarda veri işlenebilmektedir. Event Hubs ile 1 partition’dan başlayarak istenilen kadar partition oluşturulabilmektedir. Microsoft Azure portal üzerinden seçilebilecek maksimum partition değerinden daha fazla partition almak istenilirse Azure support ile iletişime geçilerek istenilen partition değeri talep edilebilir. Tabi ne kadar çok parititon değeri artarsa Event Hubs servisinin kullanım maliyeti de o derecede artacaktır. Ayrıca Event Hubs servisi için her bir partition 1 MB/sec veri akışına izin verebilmektedir. Ayrıca her bir Event Hub, Consumer Group içinde oluşturulmaktadır. Her bir Event Hub çözümünün ayrı bir Consumer Group altında oluşturulması tavsiye edilmektedir.

Yazıyı çok uzun tutup okunabilir bir halden çıkmasını önlemek için şimdilik genel özelliklerinden bahsettiğimiz Microsoft Azure Event Hubs servisini burada tanıtma kısmını tamamlıyoruz. Ancak yazı serisinin devamında Azure Event Hubs servisinin nasıl ayağa kaldırılacağı ile ilgili ayrıca makalelerimiz olacak. Şimdilik bu kadar yeterli 🙂

Serinin devamında 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.

Veri Edinme Seçenekleri (Azure Event Hubs, AWS Kinesis, Apache Kafka)

Bir önceki yazımızda Advanced Data Analytics kavramından ve stream olarak gelen büyük verinin analiz edilmesinin gerekliliğinden bahsetmiştik. Özellikle Internet of Things (IoT) cihazları başta olmak üzere saniyede milyonlarca veri üretebilen sistemler günümüzde hiç de az değil. Üstelik bu kadar kısa sürede üretilen bu kadar büyük verileri bir yerde depolamak ve ardından standart iş zekası çözümleri ile analizini yapmak pek mümkün de olmamaktadır. Saniyede milyonlarca veri üreten bir sistemin verilerini ilişkisel bir veritabanı sisteminde tutmak şu anda mümkün değildir. Böyle senaryolar için stream olarak üretilen büyük miktarda verinin elde edilmesi ve gerekli analizlerin yapılması için geçici bir ortamda tutulabilmesi gerekmektedir.

Stream_3

Teknoloji firmaları bu gibi ihtiyaçları karşılayabilmek için çeşitli çözümler üretip şirketlerin kullanımına sunmaktadır. Bunlara örnek olarak en başta Microsoft’un Azure portali üzerindeki çözümlerinden olan Azure Event Hubs verilebilir. Yine aynı şekilde yüklü miktarda veriyi elde etmek için Amazon Web Services (AWS) Kinesis ve Apache Kafka gibi sistemler çözüm olarak sunulabilecek diğer örneklerdendir. Bunların dışında da kullanılabilecek başka çözümler ve custom geliştirmeler olabileceği gibi, şu anda en yaygın kullanımı olan, kullanımı en kolay yöntemler olarak bu servisleri sayabilmekteyiz. Aşağıdaki şekilde farklı kaynaklardan stream verinin elde edilmesi ve ardından bu verilerin analiz aşamasına yönlendirilmesi konusundaki mimari yer almaktadır. Event Hub ve Stream Analytics servislerinin yapısını aktaran bu mimari şemaya ait detayları ilerleyen yazılarımızda ayrıca ele alacağız.

6327.image_thumb_5D0180F9

Microsoft Azure Event Hubs dışında diğer yaygın kullanımlardan olan Amazon Web Services (AWS) Kinesis‘e ait benzer çalışma metodolijisine ait yapıyı da aşağıda bulabilirsiniz.

awskinesis

Benzer şekilde stream olarak akan verinin elde edilmesi açısından kullanılabilecek üçüncü bir çözüm olarak Apache Kafka da kullanılabilmektedir. Kafka ürününde de veri elde etme açısından avantaj sağlayacak noktalar bulunmaktadır. Aşağıda genel olarak benzer bir işlem olan çözümü görebilirsiniz.

current-and-future-of-apache-kafka-9-638

Her üç seçenek de aslında benzer amaçla kullanılabilmektedir. Genel amacımız stream olarak üretilen çok büyük miktardaki verilerin anlık olarak analizlerinin yapılabilmesi için verilerin tutulabileceği geçici bir ortam sağlamalarıdır. Elde edilen ve burada geçici olarak tutulan veri daha sonra veri analizi için kullanılabilecek servislere veri kaynağı görevi görecektir. Örneğin Microsoft Azure çözümleri ele alındığında Azure Event Hubs ile elde edilen veriler analiz edilmek için Azure Stream Analytics servisine aktarılacak ve burada analizi yapılarak istenilen işlemler gerçekleştirilebilecektir.

Bu üç servis çözümü için daha detaylı bilgileri ve özellikle Microsoft Azure Event Hubs çözümünün detaylı bilgileri ve uygulanması ile ilgili ilerleyen yazılarda bilgi vereceğim. Devamı gelecek… 🙂

Faydalı olması dileğiyle…

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.

Advanced Data Analytics Kavramına Giriş ve IoT (Internet of Things) Nedir?

Uzun zamandır blogumda vakit buldukça teknik konular hakkında yazı yazmaktayım. Yoğun iş temposuna rağmen fırsat buldukça yeni bir şeyler yazmak, karşılaşılan hatalara ait çözümleri paylaşmak insana keyif veriyor. Ayrıca yeni çıkan teknolojiler ve güncel ürünlere ait bilgileri Türkçe içerik olarak sunmak da sektördeki Türkçe içerik sorununa kısmen de olsa bir çözüm sağlıyor. Bugüne kadar ağırlıklı olarak yazdığım bloglarımdaki makaleler Microsoft SQL Server, İş Zekası ve Oracle ağırlıklı bir içeriğe sahipti. Son zamanlarda revaçta olan ve üzerinde daha fazla çalışma ve araştırma fırsatı bulduğum yeni bir kategori daha artık gündemime girdi: Advanced Data Analytics. Hatta bu başlık altında yazmayı planladığım yazılar için sitede ayrı bir kategori bile oluşturdum, kullanıcılar daha rahat erişebilsinler diye. Umarım faydalı olur.

Advanced Data Analytics kategorisi altında standart ilişkisel veritabanı sistemlerinden farklı olarak Data Science konularına ağırlıklı olarak yer vereceğim. Bu kapsamda hem iş hayatımda, hem yüksek lisans eğitimi bitirme projemde üzerine yoğunlaştığım konular hakkında hem de yeni teknolojiler hakkında yazılar paylaşmayı düşünüyorum. Bunlar arasında Machine Learning, Stream Analytics, Event Hubs, Big Data, NoSQL gibi konular başlıca ana konularımız olacaktır. Zamanla yazılan konu başlıklarını çeşitlendirmemiz de mümkün tabii.

Bu kapsamda ilk olarak son zamanlarda çok sık karşımıza çıkmaya başlayan bir kavramdan bahsetmek istiyorum: IoT. Namı diğer Internet of Things. Her ne kadar Türkçe’ye Nesnelerin İnterneti olarak çevrilse de ben Internet of Things kavramının daha açıklayıcı olduğunu düşünenlerdenim 🙂

The Internet of things market connected smart devices tag cloud

Peki nedir bu IoT? Bu kadar gündeme gelmesinin sebebi ne olabilir hiç düşündünüz mü? Aslında bu sorunun cevabı teknolojinin gelişimine ve evrimine bağlı. Günümüzde gelişen teknoloji sayesinde hayatımız o kadar kolaylaşıyor ki bazen bu durumun farkına bile varamıyoruz. Eskiden üzerine zaman ayırdığımız, bizi fazlasıyla meşgul eden hatta bazı durumlarda yapmamızın imkansız olduğu bazı şeyleri şimdi çok daha rahat bir şekilde gerçekleştirebiliyoruz. Mesela faturalarınızı düşünün. Eskiden elektrik, su, telefon, doğal gaz gibi faturaları ödeyebilmek için her ay ilgili kurumun oturduğunuz bölgeye en yakın şubesine/ödeme noktasına giderek (Babam hala bu yöntemi tercih ediyor 🙂 ) faturaları ödemekteydik. Bu bize hem zaman hem de ulaşım vb. konularda ek maliyete mal oluyordu. Bir de günümüzde geldiğimizi durumu konuşacak olursak oturduğumuz yerden, bir bilgisayar veya tablet yardımıyla kullandığımız bankanın internet şubesinden hızlıca bu gibi işlemleri gerçekleştirebiliyoruz artık. Zamandan tasarruf etmekle kalmıyor aynı zamanda ulaşım vb. ek masraflarla da uğraşmıyoruz.

Fatura ödeme işlemini gerçekleştirmek için bir bilgisayar veya tablet kullanabileceğimizden bahsetmiştik. Artık durum bunlarla da sınırlı değil aslında. Neredeyse herkesin elinde olan ve artık hayatımızın bir parçası haline gelen akıllı cep telefonları sayesinde internet bağlantısı sayesinde her hangi bir yerde fatura ödeme, para transferi, alış veriş yapma gibi bir çok işlemi çok rahat gerçekleştirebilmekteyiz. Akıllı cep telefonları o kadar çok hayatımıza girmiş durumda ki bazen bir anlığına hayatımızdan çıkmış olsalar diye düşünmek istiyorum, sonra korkup vazgeçiyorum 🙂

internet-of-things-everything-you-need-to-know

Yine benzer şekilde eskiden belediye otobüsleri, tren vb. toplu ulaşım araçlarına binmek için kağıttan üretilen biletler satın alır ve bunlarla yolculuk ederdik. Teknolojinin gelişmesiyle birlikte şimdi artık elektronik kartlar sayesinde istediğimiz zaman istediğimiz ulaşım aracına bu kartlarla binmek mümkün olabiliyor. Tabii yeterli bakiyeniz kartta mevcutsa 🙂

Yazının devamı aşağıdadır.

Bkz: https://www.youtube.com/watch?v=was27agP7A4

Alışveriş alışkanlıklarımız bile gelişen teknolojiyle değişiyor. Eskiden o mağaza senin bu mağaza benim dolaşıp istediğimiz ürünleri ararken, şimdi markaların internet sayfaları üzerinden istediğimiz bütün ürünleri inceleyip, istediğimiz renk ve bedeni sepete ekleyip kredi kartıyla ödemeyi yaparak işlemi tamamlayabiliyoruz.

Gördüğünüz üzere teknolojinin gelişmesiyle artık her yerde yeni teknolojinin nimetlerinden faydalanmaya başlıyoruz. Hayatımızın neredeyse her alanında teknoloji ağırlığını giderek daha da fazla hissettiriyor. Tabii ne kadar çok teknolojiyi hayatımıza sokarsak o kadar da dijital yaşama ve büyük verilerin oluşmasına olanak sağlamış oluyoruz. Örneğin bahsetmiş olduğumuz akıllı cep telefonlarımız, kullanmış olduğumuz elektronik ulaşım kartlarımız, kredi kartlarımız bizler için devamlı anlık olarak veri üretiyor. Bu gibi nesneleri / cihazları aslında Internet of Things kapsamına dahil etmemiz gerekiyor. Sadece Türkiye’de yaklaşık olarak 50 milyon cep telefonu olduğunu, yine sadece İstanbul’da yaklaşık olarak 17 milyon insanın yaşadığını ve büyük çoğunluğunun toplu ulaşımı bir şekilde tercih ettiğini düşünürsek anlık olarak ne kadar büyük bir verinin üretildiğini de anlamış oluruz. Kapsamımızı Türkiye’den çıkartıp bütün dünyayı ele aldığımızda çok daha büyük verilerin üretildiğini, çok daha farklı nesnelerin insanların hayatına bir şekilde girdiğini görebilmekteyiz.

Örneğin akıllı ev sistemleri, akıllı araç sistemleri, sosyal medya, akıllı çevre bilimi sistemleri, akıllı sağlık sistemleri, akıllı trafik ve ulaşım sistemleri gibi sayılabilecek bir çok konuda artık nesneler bizler için veri üretiyor ve bu büyük veriler de biz veritabanı uzmanlarının ilgi alanına doğal olarak dahil oluyor. Aşağıda 60 saniye içerisinde dünya üzerinde üretilen veri miktarını gösteren bir şekil görmektesiniz. Sadece bu şekle bakmak bile bizlere büyük veri dünyasının ne kadar önemli bir yere doğru gittiğini gösteriyor.

Picture1

IoT cihazları ve diğer ortamlar nedeniyle üretilen bu kadar büyük verilerle çalışabilmek için normal ilişkisel veritabanı sistemi bakış açımızı biraz değiştirip Data Science konularına bakmak sektörde yer alan bizler için giderek önem kazanıyor. Üstelik bu gelişim ivmesi arttıkça Big Data ve Data Analytics gibi başlıklarda daha çok iş alanı ve çalışma fırsatı da karşımıza aynı oranda çıkacaktır. Sektörde olan veya sektöre girmeyi hedefleyen gençler için bu da gözardı edilmemesi gereken bir gerçek olarak karşımızda duruyor.

Bu yazı ile kısaca bahsettiğimiz Advanced Data Analytics, Internet of Things, Data Science gibi konuların detaylarını bundan sonraki yazılarımda yine bulabileceksiniz. Özellikle IoT gibi nesnelerin ürettiği büyük verilerin nasıl elde edileceği, bu kadar büyük miktarda verinin nerede saklanabileceği, nasıl analiz edilerek doğru kararlar alınmasının sağlanabileceği gibi konularda yazılar sırayla gelecek. Bu kapsamda özellikle kullanım kolaylığı sağlaması açısından Microsoft ürünleri başta olmak üzere diğer teknoloji sağlayıcılarının ürünlerini de karşılaştırmalı olarak sizlerle buluşturmak istiyorum. İlgi duyanlar için güzel bir yazı serisi olabileceği düşüncesindeyim. Umarım okurken, benim yazarken duyduğum heyecanı sizler de duyarsınız.

IoT_InfographicLG

Klasik ilişkisel veritabanı yönetim sistemleri (SQL Server ve Oracle gibi) ‘nin ve klasik iş zekası uygulamalarının yetersiz kaldığı bu yeni dünyada yeni çözümler karşımıza çıkacak. Bu çözümleri de sırasıyla hep beraber inceleyeceğiz. Hayatımıza her alanda giren Internet of Things kavramına kısaca bir göz attığımız bu yazımızı burada noktalıyorum. Umarım faydalı olur. Bir sonraki yazımızda büyük verinin elde edilmesi konusunu ele alacağız. Görüşmek üzere…

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

Yazar: Abdullah ALTINTAŞ