Big Data sistemleri ve tool seçimi
Piyasada birçok open-source olarak geçen tool var bunları yeteri kadar takip edebilirsek çok güzel big data sistemlerini basit bir şekilde kurabiliriz. Hepsi bu kadar mi? Peki böyle ise neden birçok firmanın bu tip hizmetler için çok yüksek maliyetleri oluyor?
Sorunun büyük kısmı tam da bu noktada başlıyor. Türkiye’de büyük bir yanlış algı var bir yazılım open source ise ben bundan her şekilde faydalanabilirim şeklinde, burada genellikle gözden kaçan önemli ayrıntılara yer vermek istiyorum.
En başta big data nedir bunu ele alalım. Big data tabiri hemen her firmada projede artık konuşulmaya/duyulmaya başlandı, tabi ki insanlar ile konuşulduğunda herkes aynı tabiri kullanıyor 10K 100K 1M kayıt öyle big data olarak ölçülmez 1M kullanıcı kaydınız olsun postgresql ile çok rahat select sorgularına vs dahil edebilirsiniz hatta güzel indexleme yaparsanız join vs de dahi problem yaşamazsınız 25M 30M kayıt olan tablolarda çok güzel ve performanslı joinler gördüm. Peki o zaman bu big data nedir ?
Big data;
-
Yoğun data üretimi olan noktalarda olur Örnek dk içerisinde 100 larca belki 1000 lerce insert yapmanız gerekebilir elbette çok daha yoğun sistemler var burada önemli nokta kullandığımız sistem biryandan sürekli yazma yaparken bir yandan okuma isteklerine takılmadan cevap verebilmelidir. Postgresql tarzı relational db ler de transaction olayından dolayı sürekli stream şeklinde yapılan yazma işlemleri okuma işlemlerini aşırı şekilde yavaşlatacaktır.
-
Yazılan veri üzerinde ağırlıklı aggregation veya text mining gibi işlemler yapılır bu işlemler relational db lerin çalışma mantıklarına uymadığı için relational db ler üzerinde ciddi performans sorunu yaşarız örnek 1M kayıt olan bir tabloda bir select sorgusu çok hızlı gelir hatta indexler düzgünse transaction yönetimi sıralama sayfalama çok düşük kaynaklarda yüksek performans ile alınabilir, ama aynı dataset üzerinde örnek aylık ortalamalar almaya çalışırsanız belki veri modelinizle bir miktar çözersiniz ama pek performanslı olmaz birde buna aylara göre grafik çizdirmek için ayrı datasetler halinde alayım derseniz iyice db nin canı çıkacaktır belki kaynaklarınız tümüyle sömürecektir.
Eğer sisteminizde bu iki parametreden birisi varsa bir şekilde big data teknolojilerine ihtiyacınız olduğu söylenebilir. Tabiki eko sistemimize eklenecek her bir araç bize bakım güncelleme ve monitoring yükü olarak dönecektir bu sebepten bu konu iyi analiz edilip tercih ona göre yapılmalıdır. Kısacası bir araç sırf kullanılmak için kullanılmaz gerçekten ihtiyacın varsa kullanırsın.
Peki sistemimizi analiz ettik bizim böyle big data denen işlere ihtiyacımız olduğuna karar verdik ne yapacağız ?
Big Data işlemlerine başladığımızda en başta klasik programcı mantığında kullanılan relational db single instance ve mimari tasarımların hepsi elden geçmesi gerekiyor. Hayatımıza yeni kavramlar giriyor. Bunlardan ilki reliable kavramıdır ki bence en önemlisi budur. Bu kavram relational db nosql dışında birde güvenilir veri kaynağını hayatımıza koyuyor peki bu ne demek? Bir veri tuttuğunuz tool düşünün bu araç size verilerde eksiksiz olma veya güncel olma garantisi sunmuyor veri ekliyorsun yazıldığını düşünüyorsun eklenemiyor, çünkü sadece sıraya aldı veya o an başka bir sebepten ignore etti. Big data dediğimiz nane de iş yükü çok fazladır, bu is yükünü kaldırmak için hazırlanan araçlarda bazi konulardan ödün verilir işte ödün verilen en başta ki konu verilerin güvenliği konusudur. Yani ne demek relational db gibi benim bir satır kaydım nereye gitti? veya bu kayıt diğer kayıtla eşleşmiyor neden buraya insert edildi? Gibi soruları sormamamız gerekiyor bunun farklı çözümleri var ama onlar detay konular girmiyorum. Zaten başta ne dedik aggregate işlemler, analiz, grafik vb gibi amaçlar için kullanıyoruz elinizde 1M üzeri data var belki sn de 10 larca sı geliyor arada alamadıklarımız olması çok olası bir durumdur. Mesela bazı araçlar eğer ram çok doluysa kitlenmemek için o an gelen kayıtları almazlar veya geçici bir yere koyar iş yüküne göre 1 saat belki daha sonra ekleyebilir. Dediğim gibi bu konuyu kabul etmemiz lazım çözüm içinde farklı alternatifler var.
Diğer konu modelleme piyasa da big data aracı olarak çok fazla araç var bu araçları kullanmak evet belki bir yerde bigdata ya giriş yapmış olmak denebilir ama asıl konu modellemedir aldığınız veriyi güzel modellerseniz en az kaynakla en fazla veriyi çevirebilirsiniz. Şöyle düşünürsek elimizde 1 GB veri var ve bunu yazmamız 1 gün sürdü ben sisteme bu veriyi modelimin dışında farklı bir şekilde bana raporlamasını söyledim bu şu demek bu 1 gb veriyi önce istediğim modele çevir sonra bana o model ile cevap ver demek oluyor. Bu sorguyu sitem aldıktan sonra tekrar 1 gün boyunca yeni modele uyarlayacak sonra size cevap verebilecektir. Mantıklı gelmiyor değil mi evet yine birçok araç sorgu aşamasında sizi kısıtlar kafanıza göre sorgu atamazsınız. O yüzden öncesinde veriye nasıl ihtiyacınız olduğunu düşünüp ona göre modellemek lazım. Peki ben çok fazla model kullanabilirmiyim? Bu sorunun cevabı da yine size bağlı 1 gb veriniz var bu veriyi zaten kullandığınız araç size hızlı cevap verebilmek için bir kaç kopya tutuyor(sizin kurulum yapılandırma ayarlarınıza bağlı) örnek 3 kopya tutuyor 3 GB yer tutar bunu sizde 2 farklı modelle tuttunuz 6 GB yer kullanacaksınız hem size yerden kaybettirdi hemde sorgularınızı iki farklı noktadan çalıştırıyorsunuz. Bunun yerine modelinizi güzel çıkarırsanız belki tek modelde bu işi çözersiniz.
Evet gelelim en önemli konuya Big data için araç seçimi. Bu konu başlı başına dert olabiliyor, neden ki o kadar alternatif var birisini kullanırım, zaten hepsi de beleş :) dediğinizi duyar gibiyim. Öncelikle şu beleş kavramını bir netleştirelim kimse kimseye beleş günahını vermez derler doğrudur kimse beleş vermez mutlaka karşılığında bir beklentisi vardır. Önemli olan bu beklentiyi bilmek ve karşılıklı çıkarların uyuştuğu noktaları tespit etmek. İşte burada lisans konuları geliyor sonuçta open source demek sadece kaynak kod açık demek kafana göre kullanabilirsin anlamına gelmiyor, Kullanıyorsan o lisansı kabul etmiş oluyorsun ve gerekliliklerini yerine getirmen bekleniyor, aksi durumda yasal yaptırımlara muhatap olabilirsiniz. Zaten hep merak etmiştim bu open source tooları yazanlar nasıl para kazanıyor niçin yazıyorlar diye işte cevabı da burada, detaya girmeden kısaca gruplayarak anlatayım;
-
Grupta eksik veya hatalı kod paylaşımları geliyor ki bol bol karşılaşırsınız, buradaki amaç kişiler bu araçları kullansın kritik yerlerde işin içinden çıkamasın :) ve bizden support alsın şeklindedir, veya datastax gibi kendi ekosisteminde sorunsuz çalışan sürüm dışarıda eksik sürüm paylaşıp sen onu yönetemezsin ben senin yerine yöneteyim diyerek para kazanırlar. Siz toollarınızı seçersiniz bütün geliştirmenizi tasarımınızı ona göre yaparsınız trick bi noktada takılır kalırsınız ilerleyemezsiniz geldiğiniz yolu da dönmek zordur o zaman tek çareniz kalır gidip support alırsınız.
-
Grupta özellikle son zamanlarda mongo ve elasticsearch ile başlayan SSPL lisans olayı ki başlı başına bir dert yine firmalar araçları piyasaya sürdüler bir çok kişi bunları kullandı ve ürünlerini inşa ettiler şimdi bu bu lisans ile herkese donanım tasarımınıza varana kadar açın diye zorluyorlar tabiki kullanan firmaların geri adım atması zor olduğundan ya para verecekler ya da tasarımlarını açacaklar lisans veren firmalarda kişilerin alt yapısındaki tasarımları kullanacak. Eğer uymazsanız yasal yaptırımlara muhatap olabilirsiniz.
-
Grupta kısıtlı yetenek sağlayan uygulamalar var enterprise sürümünü almazsanız ilerde ihtiyacınız olabilecek birçok özellikten faydalanamazsınız siz bunun farkında olmadan mimarinizi kurarsınız sonra o gün geldiğinde her şeyin sonudur sizin için. Örnek influx time series db open source ile size tek instance kurma imkanı verir eğer birden fazla instance kuracaksanız lisans satın almanız gerekir. Big data işinde tek instance ise hız ve kararlılık açısından pek tercih edilmez.
-
Grup en güzel gruptur benimde sevdiğim gruptur. Gerçekten amacı ortak olarak geliştirelim hepimiz faydalanalım şeklindedir mesela chromium projesi google tarafından başlatıldı ve desteklendi community tarafından çeşitli iyileştirmeler yapıldı ve projeden google başta olmak üzere microsoft vs herkes faydalandı. Şirketler bu topluluk gücünü arkalarına alıp ortak proje geliştirmek için bazı projelerde bu şekilde destekler yapıyorlar. Cri-o, solr, linux vs gibi projeler bu tip çalışmaların ürünüdür. Peki bu toolar ne ister ? en başta bu ürünü satıp para kazanamazsın derler çünkü amaç yine community e hizmet etmektir. Fakat bu ürünleri alt tarafta kullanıp üzerine geliştirdiğiniz yazılımları satıp para kazanabilirsiniz veya support sağlayarak para kazanabilirsiniz, ama doğrudna bu ürünü satıp para kazanamazsınız.
Bunlar sadece basit özet olarak yazdığım şeyler lisans detayları için https://opensource.org/licenses buradan inceleyebilrisiniz.
Tekrar maddemize dönecek olursak araç seçiminde lisans için karar verdik nelere dikkat etmeliyiz. Bi kere şunu kabullenmek lazım big data tarafında hala en iyi çözüm diyebileceğimiz çok az tool var mesela Apache lucene ve üzerine geliştirilen solr alanında rüştünü ispat etmiş, fakat bununla birlikte o toolları geliştiren destek veren firmaların kendi ihtiyaçlarına göre modeller oluşturulmuş durumda yani time series db dediğinizde onlarca çeşit göreceksiniz bunların her birinin bir diğerine göre farklılığı var bu özelliklere çok dikkat etmeli ve ona göre seçim yapmalısınız bu kısımda da bol bol tutorial okumak gerekecektir ben ise hiç sevmem kendisini :). Peki ne yapıyorum ekosistemleri inceliyorum ve mecburen yine tutorial okuyorum.
Tabiki burada yazdıklarım sadece işin küçük bir bölümü bir tool seçerken kararlı çalışma, geliştiriciler tarafından desteğin devam etmesi vs gibi bir çok etken vardır.
NOT: Lisanssız vey lisans kapsamı dışında ürün kullanmayın ve kullandırmayın bu konuda birazcık empati yapmamız gerekiyor, benim düşüncem lisanssız yazılım kullanmak HIRSIZLIKTIR.