Hazelcast ile bir Söyleşi

DevOpsTurkey olarak yaptığımız ziyaretlerde bu sefer ki konuğumuz yine Türkiye’den çıkan ve Silikon Vadisine kadar uzanmayı başarmış girişimlerden Hazelcast’in kurucu ortağı, benim de üniversiteden sınıf arkadaşım, Fuad Malikov

hazelcast

Derya: Öncellikle Hazelcast’i nasıl tanımlarsın Fuad?

Fuad: Hazelcast’e “in-memory datagrid” diyoruz. Birden fazla makine üzerinde çalışan bir uygulaman varsa ve bunlar üzerinde bir data paylaşmak, mesajlaşmak veya computation yapmak istiyorsan bunun için “in-memory datagrid” çok iyi çözüm oluyor. Hazelcast’ı başlatırken de bizim en önemli amacımız bu tarz distributed sistemlerin yazılımını kolaylaştırmak yani insanlar bunları deploy ederken zorlanmasınlar ve çok kolay olsun. Mesela birden fazla makinenin kendi arasında konuşması ve ortak kararlar alması gerekiyor, ya da data da consistency önemli oluyor vs. ve benzer ürünlere bakarsan bunların configuration’u çok zor oluyor. İşte Hazelcast çok kolay Open Source herkese ulaşabilen bir “in-memory datagrid” ürünüdür.

imag1761

Derya: En çok tercih edilen sektör ve müşteriler olarak neler söyleyebilirsin?

Fuad: Ürün olarak belirli bir vertikalden bağımsızız. Bizim şu anda e-commerce müşterilerimiz var, bankacılıkta müşterilerimiz var. E-commerce de şu an Apple, Apple-store da bizi kullanıyor, Walmart henüz bizim müşterimiz değil ama biliyoruz ki bazı projelerinde bizi kullanıyor. Sonra bankacılıkta aklınıza gelen bütün büyük bankalar Bank of America,  Credit Suisse, DeutscheBank bunlar bizim büyük müşterilerimiz. Genelde FX usecaselerinde ve kullanıcı portallerinde kullanabiliyorlar. American Express de buna bir örnek ve loyalty kart uygulamalarında kullanıyor. Şu anda, TNT en büyük müşterilerimizden bir tanesi. Verizon ile de bir PoC yaptık bitirdik aslında müşteri olmak üzereler ama biliyorum ki başka Open Source olarak kullandıkları projeler de var. Türkiye’den Avea kullanıyor bizi. Satın aldıkları bir projenin içinde var Hazelcast. Onun dışında gaming de var, logistics de var hatta savunma sanayisinde de bazı müşterilerimiz var. Evet aslında her alanda müşterilerimiz var diyebilirim.

imag1759

Derya: Rakipler ve yol planlarınız hakkında neler söyleyebilirsin?

Fuad: Oracle’ın Coherence diye bir ürünü var, bizden önce çıktı belki de. Konseptini de ortaya çıkaran ve bunu popüler yapan ürünlerden bir tanesi, ama kendisi direk yapmadı, satın aldı. Onlar bayağı iyiler piyasada ve iyi biliniyorlar. Çok ciddi şekilde Coherence’dan Hazelcast’e migrate eden müşterilerimiz var bu şekilde. Bunun dışında birkaç  Open Source ürün var: RedHat den Infinispan var, Gridgain var gene Silicone Valley’de Rus arkadaşlarımızın yaptığı bir Startup. Bunlar dışında IBM’in eXtremeScale diye bir ürünü var ama çok popüler değil o kadar. Pivotal’ın Gemfire diye bir ürünü var mesela bu da bayağı ünlü. Ama şu anda marketi biz Open-Source alternatif olarak ciddi anlamda bilinirliği arttırmış durumdayız. Yeni gelen müşteriler Open-Source alternatiflere daha sıcak bakıyorlar artık. Bu noktada ciddi bir mesafe kat ettik. Bundan sonra ekleyeceğimiz özellikler önemli ama bazen küçük detaylar oluyor. Büyük şey olarak şu anda üzerinde çalıştığımız ciddi bir computation platform var. Bunu Hazelcast’e entegre edip hem batch hem de stream processing işlerini Hazelcast üzerinden yapmak istiyoruz.

Derya: PaaS alternatif planınız da var mıdır?

Fuad: Hayır olmayacak. Bir yazılım olacak mesela Spark gibi düşünebilirsin. Amacımız Big Data processing’i “Hazelcast style” yapmak. “Hazelcast style” derken biz basit ve çok hızlı bir biçimde kullanabileceğin bir library olarak düşünüyoruz. Şu anda çok fazla dependency olmayan böyle bir ürün üzerinde çalışıyoruz. Müşterilerimizden böyle bir talep de var açıkçası. Onlara da sorduk. Böyle bir market açıklığı seziyoruz ve burayı kapatmak için böyle bir ürünün üzerinde çalışıyoruz. En büyük değişikliğimiz bu. Ama onun dışında yeni çıkacak olarak Spark entegrasyonunu ekledik “Schedule Executor” servisi ekledik. Schedule computation’ı yapabilmek için internal optimizasyonu çok yapıyoruz şu anda. Örneğin; Performance optimizasyonları gibi. Mesela bazı edge caselerde bazı consistency problemleri var onları yapıyoruz ciddi bir şekilde improve ediyoruz ve en önem verdiğimiz konular arasında code coverage var ve %80’i geçti mesela.

imag1760

Derya: Peki, burada olmanın Türkiye’ye göre avantajı ve dezavantajı nedir? Size kattıkları nelerdir?

Fuad: Biz bu işe Türkiye’de başladık o zaman herkes ordaydı ve bu iş Türkiye’den olur mu diye düşündük. Ama şunu gördük bizim gibi teknoloji şirketleri ve müşterileri de corporate seviyede olanlar buralarda çok var. Bizim rakiplerimizin çoğu da buradaydı ayrıca, bir de bu iş sadece yazılım yazmakla bitmiyor. Enterprise bir şirket olacaksak bu işin sales ekibi var, marketing ekibi var hatta avukatları var. Mesela bugün biz AT&T ile bir kontrat yapıyoruz ve kontratı negotiate etmek 6 ay sürüyor. Onların anladığı terimler ve bunlar üzerinde anlaşmalar var. Ayrıca hem bu konuda bilgi gerekiyor hem de bu konuları anlaması gerekiyor. Şimdi Türk bir avukatın bunları anlaması çok zor. Teknik ekip olarak değil ama bizim teknik ekibin çoğu Türkiye’den bir de Avrupa’dan. İşin teknik olmayan yönünü düşünürsek burada olmak gerektiğini her geçen gün daha çok anlıyorum. Bu noktada mesela sales ekibimiz burada bu sales ekibinin zaten tecrübesi var buraya gelene kadar Oracle’da çalışmış arkadaşlar var, bizim gibi başka Open Source şirketlerde çalışmış, Redhat’de çalışmış arkadaşlar var sonuçta bu bilgi bizim işimize yarıyor. Onların kendi networkleri var bu bilgi de bizim işimize yarıyor. Marketing dersek daha önce başka şirketlerin marketinginde çalışmış, otomasyonunu yapmış arkadaşlarımız var. Marketing de bir engineering olayı sadece reklam vermek değil. Çünkü marketing dediğin lead generation’dan başlıyor olay sales’e dönene kadar bir engine kuruyor buradaki arkadaşlar. Bunu Türkiye’de yapmak çok zor. Biz 2012 de çıktık Türkiye’den. Tabii 2012’den bu yana belli gelişmeler olmuştur Türkiye’de. Gene tabii burası bu işin en uç noktası. Biz de onun faydasını görüyoruz. Bu işin bir de yatırımcı tarafı var. Yatırımcılar burada olduğu için o da burada olmanın ciddi bir avantajı oluyor.

hazelcast

Derya: Baştan beri Hazelcast Open-Source muydu?

Fuad: İlk günden beri Open Source’ du diyebilirim. İlk başta ne lisansı koyalım diye tereddütte bulunduk. Ama bu işi duyurunca insanlar “Apache Licence” olması lazım dediler ve bu bize de mantıklı geldi. Bundan sonra çıkacak yazılımların tutunabilmesi için bizim gibi büyük markete ulaşmak isteyen firmaların bence Apache Licence olması lazım. Başka türlü çok zor ya da çok büyük şirket olmanız lazım ki kendi müşterilerinize Open Source olmayan bir şey satabilesiniz. Çünkü diğer türlü market penetration yapmak çok zor. İlk günden beri OpenSource idive 2012-2013 civarında bunun yan enterprise ürünü olur mu diye düşünmeye başladık. Çünkü idealistik ortamda şunu bekliyorsunuz her şey Open Source olsun insanlar sizden destek alsın realistik de bu çok olmuyor insanlar bir şeyi bedava kullanıyorlarsa kullanmaya devam ediyorlar böylece de siz şirket olarak büyüyemiyorsunuz, ürüne daha çok yatırım yapamıyorsunuz. Amacımız bir de ürünü geliştirmek. Türkiye’de 30’a yakın mühendisimiz var. Ürünü bu şekilde geliştirebiliyoruz. Bunun olması için de biz temeli open source olan birçok özellik kullanıyoruz. Birçok insan da böyle kullanıyor ama bazı önemli özellikleri ciddi enterpriseların kullanabileceği enterprise Hazelcast çatısı altında ayrı bir ürün olarak sunuyoruz bu da bize ciddi bir gelir kaynağı oluyor. Yaklaşık müşterilerimizin %70’i enterprise kullanıyor ve bu şekilde ürünü daha fazla geliştirip Open Source olarak da daha çok kitlelere ulaşabiliyoruz. Open Source önemli.

Derya: Open Source olması sayesinde dışardan da contribution alıyor musunuz?

Fuad: Kesinlikle alıyoruz. Projemiz GitHub üzerinde. Open-source olmayan componentler de GitHub da tabii private olarak duruyor. Kendi ekibimiz 40 kişi olmasına rağmen engineering ekibinde 100’e yakın contribution’ umuz var. Çok ciddi componentleri bizim ekibin dışındaki insanlar contribute etti. Mesela hibernate modülünü dışardan insanlar contribute etti, Spring modülü de ciddi olarak dışardan contribution oldu. Bizim şu anda bazı çalışan ekibimiz daha önceden bize contribute eden, beğendiğimiz, gel sen bizle çalış dediğimiz arkadaşlar.

Derya: Yani Open Source olması hiring ve talent bulma açısından da size katkı sağladı?

Fuad: Kesinlikle, Avrupa’da bahsettiğimiz kişilerle özellikle. Birçoğu böyle. Adam bize contribution yapıyor zaten çok ilgili. Ben kendim böyle üç dört arkadaşa ilk e-maili attım yani. Sen çok iyi iş yapıyorsun bizle çalışmayı düşünür müsün diye ve bu şekilde işe aldığımız arkadaşlar var. Onun dışında da önemli bir şey hatırlıyorum. 2011 yılında da bir gün birisi bize bir e-mail attı ve e-mailinde de adamın ismi belli değil. Ya dedi distributed atomic long’a ihtiyacım vardı bir de semafor’a ihtiyacım vardı baktım bir arkadaş yapmaya çalışıyor ama çok ilerleyemedi ben bunu yaptım size gönderiyorum buyrun ismim filan önemli değil dedi ve gönderdi. Bu şekilde biz de baktık gerçekten çok kaliteli bir kod yazmış büyük de bir proje yapmış öyle birkaç kod değil mesela 30 sayfalık, 30 classlık contribution diyelim o şekilde düşünelim. Sen kimsin necisin dedik, “i am a ninja coder” ‘ım dedi. Coder kim olduğum önemli değil.

Derya: Hala kim olduğu belli değil mi?

Fuad: Kim olduğunu hala bilmiyoruz. Gerçekten bunlar oluyor. Biz de kesinlikle bunu istiyoruz. Mesela bize ciddi contribution yapan kişilere bazen buradan teşekkür anlamında tişört ya da kendi promosyon malzemelerimizden hediye gönderimi yapıyoruz. Bunları kesinlikle istiyoruz ve bekliyoruz. Çok da iyi oluyor.

Derya: Contribution yapanlar çoğunlukla Hazelcast’i alıp kendi bünyelerinde kullanmaya başlayan ve onun üzerinde de kendi ihtiyaçlarına özel kod geliştirenler mi oluyor yoksa daha farklı bir kesim mi oluyor? Onu nasıl tanımlarız?

Fuad: İki kesim oluyor. Birisi dediğim gibi Hazelcast’i bir şekilde zaten kullanmış oluyor. Diğeri ise arkadaşın yapısı itibariyle diyelim hem kullanıyor hem bulduğu eksiklikleri bize bildiriyor. Bazılarını implement ediyor veya diyelim ki hibernate modülüne ihtiyacı var, bakıyor bizde var olan hibernate modülü tam olarak ihtiyacını görmüyor ben bunun daha iyisini yaparım diyor, oturup yapıyor ve bunu da bize geri veriyor veya amacı bir şeyler öğrenmek olan arkadaşlar oluyor gerçekten amacı bir şeyler öğrenmek. Open Source ürünlere bakıyor ben nasıl katkıda bulunurum hem kendimi geliştiririm hem buradan bir şey öğrenirim diyen kişilerde var. İki türlü de var yani. Böyle heves olunca insanlarda ciddi güzel katkılar oluyor.

Derya: Biraz DevOps tarafına gelirsek, DevOps’a senin tanımın nasıl olur?

Fuad: Bizim bu konuya yaklaşımımız iki türlü’dür: Hazelcast DevOps açısından kendi ürünü olarak ne sunabilir kullanıcılara ya da Hazelcast “DevOps Friendly” olur mu bu önemli. Önce bir developerlar Hazelcast ile uğraşıyorlar, kodluyorlar ve deploy ediyorlar sonra DevOps operation ekibi ile bu süreçle bu olayı ne kadar daha hem otomatize yapabiliriz hem de kolay yapabiliriz diye düşünüyoruz. Mesela Docker image’ımız buna yönelik veya simulator diye ürünümüz var simüle etmeye yarayan bir ürün istediğin ortamda hem kendi hardware’inde veya istediğin Cloud environmentında Hazelcastı konfigure edip üç tane server olsun 5 tane client olsun istediğin kodu bana simüle et diye çalıştırabileceğimiz yapılarımız var bu biraz testing’e girer ama böyle smüle edebiliyorlar. Ayrıca kendi içimizde kendi DevOps süreçlerimiz var “Continuous Integration” sürecimiz var, Jenkins-CloudBees kullanıyoruz. Unit testlerimiz var, integration testlerimiz var, simulator testlerimiz var. Yani o simulator’u aslında biz de kullanıyoruz. Bunu kendimiz için yaptık müşterilerimize de sunuyoruz. Dosyada her commit sonrasında Daily unit testlerimiz çalışıyor. Unit testlerimizin gerçekten unit olan versiyonları var biraz daha kompleks olup integration olan versiyonları var. Her release öncesi mutlaka bu testler çalışıyor. Small, middle ve large clusterlarda 2 günlük simulator testleri çalıştırıyoruz. Large clusterda mesela 10 node clusterda, 20 node client oraya bağlanıyor. Yazdığımız belli testler var bunlar çalışıyor. İki gün boyunca hiçbir sıkıntı çıkmazsa ancak release ediyoruz.

Derya: Tüm bu testler automated testler mi?

Fuad: Bunların hepsi automated testler.

Derya: Bunlar nasıl yazılmış testler? Custom testler mi?

Fuad: Hazelcast için yazılmış simulator custom yazılan bir framework, yani “Distributed Hazelcast” testi edilebilmesi için yazılmış. Unit testlerimiz tabii gene unit test üzerinde bizim kendi framework’umuz var. Hazelcast de daha kolay test edebilmek için. Mesela Network yapısını mocklamış vaziyetteyiz onları bazen bypass edebiliyoruz. Gerçekten network’a dokunmadan sistemin diğer kısımlarını test edebiliyoruz. Ama bunların hepsi kesinlikle automated yani Jenkins üzerinde automated çalışıyor. Bunların hepsi bu arada paralelde değişik JVM’ler için çalışıyor. Java 7,8 için ayrı, IBM, Oracle için ayrı… Bunların hepsini paralelde test ediyoruz.

Derya: Scaling konusunda bir yaklaşımınız var mı? Mevcut altyapıda horizontal veya vertical scaling’e ihtiyaç duyuyor musunuz? Public-cloud veya private-cloud’da böyle bir scaling’e ihtiyaç duyuluyor mu?

Fuad: Duyuluyor kesinlikle, o yüzden bizim yapılarımızda mesela simulator testlerimiz ve diğer unit testlerimiz için “Continuous Integration” CloudBees-Jenkins kullanıyorduk. Onların scalable yapısı üzerinde biraz düşünüyorduk ama simulator’un kendisi şimdi bizim Türkiye’de kendi labımız var oradaki serverlarımız var orda run ediyoruz. Yani aslında bizim kendimizin host ettiği bir şey olmadığı için developement ekibi olarak ürünü generate ediyoruz, test ediyoruz ve bunları release ediyoruz. O yüzden labımız sadece performans testleri için release testleri için bazen Jenkins için kullanıyoruz. Bazen bunların yetmediği oluyor bazen de birden fazla test yapmamız gerekiyor. Farklı ürünleri mesela aynı anda release etmemiz gerekiyor onların farklı prosesleri oluyor o yüzden bu ürünlerin hepsi istediğimiz zaman AWS’de istediğimiz zaman Google Cloud’da da çalışabilir vaziyette. Mesela simulator’s çok kolay bir şekilde AWS’de çalıştırmanı istiyorum diyebiliyoruz. En son testlerimiz 15 bin client test yaptık yani 15 bin tane client JVM üretip makineye bağladık bunun testini yapmaya çalışıyoruz ve bunu ancak AWS gibi bir cloud da yapabiliyoruz. Bunların hepsi scalable olmak zorunda. Öbür türlü işimiz bayağı zor.

Derya: Bunun dışında şu an Docker gündeminize ne kadar girmektedir? Orda orchestration ihtiyaçlarınız doğuyor mu?.

Fuad: Bu konuların hepsi aslında müşterilerin ihtiyacına göre. Biz Hazelcast olarak bunları müşterilere sunabilir miyiz bunun için Docker image’ımız var. DockerHub’da publish ediyoruz. Hatta bu en son versiyonumuzla beraber çıktı. Sonra bu Kubernetes için aslında discovery sürecini Hazelcast nodelarını Kubernetes kullanarak discover edebilir mi birbirini. Bunları implement ettik.

Derya: Şu an aktif mi o da?

Fuad: Evet aktif. Bunlar müşterilerin ihtiyaçları. Hazelcast da bunları sunuyor. Bu konuda benim bildiğim bir eksikliğimiz yok. Olayın bu kısmı da community effort olarak yapıldı. Çünkü biz buna “Cloud Discovery” prosesi dedik. Bunun için bir interface yarattık ve Kubernetes modülünü Google’daki Kubernetes projesinin evangelist’i 30 dakikada implemente edip bize submit etti.

Derya: Hazelcast ile ilgilenenlere ve Türkiye’dekilere vermek istediğiniz ek bir mesaj var mıdır?

Fuad: En büyük mesajımız kesinlikle eleman arıyoruz. Hangi pozisyonların açık olduğunu bilmiyorum ama DevOps ekibine de eleman arıyoruz. Bu süreçlerimizin hepsi için arkadaşlara ihtiyacımız var. Çok kaliteli çalışan arkadaşlarımız var. Hazelcast.com‘dan başvurabilirler. İlgili olan arkadaşlardan contribution bekliyoruz. Bu şekilde kendilerini geliştirip bize kendilerini gösterebilirler. Standartlarımız bayağı yükseldi bilinir olduktan sonra, bize başvuran kişiler gayet kaliteli kişiler.

Derya: Fuad’a bize zaman ayırdığı için teşekkür ediyorum. Tekrar görüşmek güzeldi. DevOps Turkey olarak Hazelcast’ı takip etmeye devam edeceğiz.

hazelcast