spring | yenigün
Ehcache vs Hazelcast
Jan 12 2013	Published by yalcin under software development
Bu yazıda iki açık kaynak kodlu dağıtık bellek ürününün karşılaştırmasını yapmak istiyorum. Bunlardan biri Terracota firmasının Apache lisansına sahip ürünü Ehcache (http://ehcache.org/), diğeri ise İstanbul’dan çıkıp açık kaynak kod dünyasına hızlı bir giriş yapmış olan Hazelcast. (http://www.hazelcast.com/)
Google Trends’in verilerine göre Ehcache’de yavaş bir düşüş varken, Hazelcast’te piyasaya yeni girmiş olmasından kaynaklanan bir yükseliş bulunuyor.
İki ürünün açık kaynak kodlu versiyonlarını karşılaştırdığımızda Hazelcast önde gözüküyor. Sebeplerine gelirsek Hazelcast’in açık kaynak kodlu versiyonunda dağıtık bellek (distributed cache) olarak genişletilebilir (scalable) bir bellek sunucusu (cache server) varken Ehcache’in açık kaynak kodlu versiyonunda ayrı bir bellek sunucusu yok ve dağıtık bellek, nesne kopyalama (object replication) ile sağlanıyor. Ehcache’te ayrı bir bellek sunucusuna (Terracota Array) sahip olabilmek için kurumsal versiyonu satın almak gerekiyor. İki ürün de konfigürasyon altyapısı olarak JMX’i desteklemekle beraber Hazelcast açık kaynak kodlu versiyonunda web arayüzü ile yönetime de imkan tanıyor. Ehcache’te ise bu imkan kurumsal (enterprise) versiyonda bulunuyor. Bu açılardan Hazelcast bir adım önde görünse de Ehcache’in arkasındaki halk desteği (community support) daha güçlü.
Her kurumun kendi gereksinimlere göre bu iki üründen birini seçme özgürlüğü var fakat küçük bir genelleme yapmam gerekirse küçük firmalar (start-up) için Hazelcast daha uygun görünüyor zira Ehcache’e göre kullanımı çok daha kolay ve bedavaya Ehcache’in kurumsal versiyonunda olan bir çok özelliğe sahip olmak mümkün. Kurumsal firmalar için ise Ehcache tercih edilebilir çünkü hem arkasında Terracota isimli görece güçlü bir firma var hem de Hazelcast’e göre daha oturmuş ve riski az bir ürün.
Bu arada iki ürünün de Spring entegrasyonu bulunuyor şöyle ki @Cacheable notasyonuyla (annotation) belleğe atılan bir veri yapısı, altyapıdaki bellek ürünü değiştirilse de çalışıyor. Dolayısıyla altyapıdaki bellek ürünü, koda dokunmadan sadece konfigürasyonla değiştirilebiliyor.
Not: Bir de şöyle bir karşılaştırma var: http://stackoverflow.com/questions/5245487/hazelcast-vs-ehcache/5271450#5271450