“A world where everyone creates content gets confusing pretty quickly without a good search engine”- Ethan Zuckerman

Hayatımızın dijitalleşmesi ile birlikte, kontrol edilemez bir şekilde sürekli veri üretiyoruz. Petabyte, Exabyte’lar seviyesine ulaşan ve big data dediğimiz bu veri yığınları arasında kaybolmamak için elimizi güçlendirecek teknolojilere ihtiyaç duyuyoruz. Zuckerman’ın da belirttiği gibi, iyi bir arama motoruna sahip değilsek bu veri yığınları içinde kafa karışıklığı yaşamaya mahkûm olacağız. İşte tam da bu noktada bir teknoloji imdadımızı yetişiyor 🙂

ElasticSearch, Apache Lucene üzerine kurulmuş, Java ile geliştirilmiş açık kaynak (open source) kodlu bir full text (metin) arama motoru ve veri analiz aracıdır. Veri saklama biçimi ilişkisel değil documented oriented şeklindedir.
Bu ürünü big data (büyük veri) kavramının geçtiği orta ve büyük ölçekli işletmelerde görebiliriz. ElasticSearch kullanan başlıca şirketleri aşağıdaki şekilde toparladım. Yazılım dünyasında ElasticSearch’e ciddi bir yönelimin var olduğunu söyleyebiliriz.

ElasticSearch Kullanan Firmalar

Apache Lucene tabanlı Solr ile aynı işlevi görür ancak Solr’ye göre kullanımı daha kolaydır. Solr konfigurasyonu sizi biraz uğraştırırken, ES‘yi kurulumdan sonra hiçbir ayar yapmadan hemen kullanmaya başlayabilirsiniz. ES için cluster yapısı oluşturmak da oldukça basittir. Şöyle ki; ES kurulumu yapılmış iki sunucu aynı ağda ve aynı cluster name’de olacak şekilde konfigure edildiğinde bu iki sunucu birbirlerini otomatik olarak görecektir.
Sharding ve Replication sayılarını Solr’da baştan belirlemek gerekiyor ve ne yazık ki sonradan değiştirilemiyor. Solr CPU kaynaklarınızı kullanma konusunda tatlı bir acımasızlık sergilerken 🙂 ES ‘nin CPU kullanımı konusunda son derece iyimser olduğunu söyleyebiliriz. ES ve Solr ‘in kıyaslamasına ile ilgili daha fazla bilgiye şu linkten de ulaşabilirsiniz.

ES (Elasticsearch) ile ilgili kısaca bilinmesi gerekenler:

• Cluster yapısı çok basittir.
• Rakiplerine göre çok fazla kaynak tüketmez.
• Kendi içinde yüksek erişilebilirlik (high availability) sunar.
• İndexleme mantığı olduğu için hızlı arama yapar.
• Doküman ve indeksleme kavramı çok kullanılır.
• Dokümanları JSON olarak indexler.
• Mapping kavramı vardır. Bir belgenin arama motoruna nasıl aktarılması gerektiğini tanımlama sürecidir.
• Shared ve Replica kavramı vardır.

Shared : Elasticsearch bir cluster yapısına sahiptir. Böylece büyük veri kümelerini kaydetmek istediğimizde ve yüksek trafik aldığımızda sisteme yeni makinalar ekleyerek yapımızı ölçeklendirebiliriz.
Cluster içinde node’lar vardır her bir node üzerinde ES çalışır. Node’lar birbirleri ile haberleşir.
Node’lar içinde de shard’lar çalışır. Shard’lar store edilmiş olan document’ların tutulduğu küçük birimlerdir.
Node lar içerisinde çalışan shard’ lar aslında Apache Lucene uygulamalarıdır (instance). Verilerin indexlenmesinden sorumludur.

Replica: Shard’ın devre dışı kalması ihtimaline karşı index shard’larının bir veya birden çok kopyasının oluşturulabilmesini sağlayan replica shard (replika) yapısı bulunur. Bu yüksek erişilebilirlik için önemlidir.

Shared ve Replica kavramı ES mimarisi içi oldukça önemlidir. Detaylar için şu linke bakabilirsiniz. ES’yi kurmak ve denemek istiyorsanız bu link size yol gösterecektir.

Kendi sunucu ortamınıza kurmak istemezseniz veya donanım kaynağınız yok ise Elastic firmasının Cloud ortamından bu ürünü hizmet alarak satın alıp kullanabilirsiniz. Bunun dışında Elastic firmasının Azure, AWS ve Google ile yaptığı işbirlikleri sayesinde, ES’yi diğer bu bulut hizmet sağlayıcılardan da satın alarak kullanabilirsiniz.
ES’nin kendisi ücretsizdir. Cloud ortamından, ES’nin ihtiyaç duyduğu donanımı, kullandığın kadar öde , biçiminde hizmet olarak satın almış oluyorsunuz. ES ile entegre X-pack lisansı raporlama eklentisidir ve ücretlidir. Ayrıca ES ile ilgili danışmanlık ve support talebiniz olursa bir de bunlara ücret ödemeniz gerekir. Ücretli ve free kısımlarla ilgili detaylı bilgilere bu linkten ulaşabilirsiniz.

Azure üzerindeki kullanım modeli de şu şekildedir: Ücretli olan kısımlar için Elastic lisansları ve Elastic subscriptionu Elastic firmasından alıp, sistem gereksinimlerini Azure üzerinden temin ediyorsunuz. BOYL (Bring On Your Licence) modeli geçerli oluyor. Azure Marketplace’teki detaylar için bu linki inceleyebilirsiniz.

Elastic Stack ‘in mimari yapısında neler var inceleyelim.

https://cdn-images-1.medium.com/max/800/1*HIKepKkiY4SRzzXcM4Xb9Q.png

Kibana: Görsel katman diyebiliriz. Elastic Search’e kaydedilen logları anlık olarak izlemenizi sağlar ve ihtiyaç duyduğunuzda grafiksel istatistiler çıkartabilen bir web uygulamasıdır.

Beats: Verilerinizi Elasticsearch ‘e taşımanızı sağlayan bir platformdur.

Logstash: Logları toplayan, işleyen ve ES’ye aktaran bir üründür.Input, Filter ve Output olarak 3 konfigurasyon dosyası vardır. Data Input ile gelir ve okur, filtreler sonrasında output’a gönderir.

ElasticSearch isminin hakkını verecek kadar elastik bir arama motoru diyebiliriz. 🙂 Hem kullanım kolaylığı hem de çok fazla kaynak tüketmemesi açısından oldukça önemli bir teknoloji. ES ile ilk tanışmam Devnot’un kurucusu Uğur Umutoğlu hocamızın İTÜ’de düzenlediği bir ES atölye çalışması ile oldu. Bu etkinlikte katılımcılara detaylı bilgiler veren Haydar Külekçi hocamızın konuyla ilgili yazılarını mutlaka okumanızı tavsiye ediyorum.

Not: Bu yazı Ayşe Kulabaş tarafından hazırlanmış ve izniyle yayınlamıştır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Fill out this field
Fill out this field
Lütfen geçerli bir e-posta adresi girin.
You need to agree with the terms to proceed