Pisano’da Neden Clojure’u Seçtik?

Ertuğrul Çetin
pisanoeng
Published in
3 min readOct 17, 2019

Clojure Hakkında

Clojure, Lisp’in bir türevi olan fonksiyonel programlama dilidir. JVM (Java Virtual Machine), CLR (Common Language Runtime) ve JavaScript platformlarında çalışabilmektedir.

Clojure Seçimi

Teknik ekipte sadece 2 kişi daha önceden Clojure tecrübesine sahipti. Radikal ve cesur bir kararla Dashboard’umuzu ClojureScript (Clojure’un JavaScript üstünde çalışan versiyonu) ile yeniden yazmaya karar verdik. Bu da ekibin sıfırdan yeni bir dil ve platform öğrenmesi demekti fakat biz bu riski aldık ve yola koyulduk.

Clojure’a geçiş sonrası junior programcıların ilk durumu :)

Takım Kurma Süreci

Tabii ki ilk etapta endişeler vardı, çünkü ekibin farklı bir paradigmayı öğrenmesi ve ardından production kodu geliştirmesi süreci söz konusuydu. Beklediğimden kısa sürede cengaver junior programcılarımız platformu ve dili hızlıca kucakladılar. Yazdıkça dili daha çok seviyorlar ve daha da fazla yazıyorlardı :) Tabii her şey ilk etapta idiomatic (o dile özgü modelde) kodlanmıyor.

Bu orta/uzun vadeli bir yatırımdı ve biz bunun çok farkındaydık. Gördük ki ekipteki arkadaşlar eski kodda geliştirme yapma konusunda pek istekli değillerdi. Sanıyorum her Clojure programcısı gibi dilin yalınlığı karşısında büyüleniyorlardı.

Türkiye’de hali hazırda Clojure bilen bulabilmek çok zor, tahminim bizlerle birlikte production’a kod yazmış 10 kişi ya vardır ya yoktur. Eğer bu platforma geçmeyi düşünecek olursanız ekibinizi eğitmeniz gerekecek ya da yurtdışından Clojure programcısı tutabilirsiniz.

Geri Dönüşler

Clojure’u niş veya vizyoner bir dil diye seçmedik, daha önceki projelerde çok ciddi zamansal ve üretkenlik avantajları sağladığı için Pisano’da da kullanmaya karar verdik. Enterprise bir ürün geliştirdiğimiz için bu avantajları kesinlikle göz ardı edemezdik.

  • Junior arkadaşlarımız yaklaşık 2 aylık bir süreçten sonra production’a kod yazmaya başladılar.
  • Ekip çok daha mutlu, üretken ve hızlı. Fonksiyonel paradigmayı benimsedikleri için problemleri farklı şekilde çözebilme yetileri gelişti.
  • Bug fix ve feature isteklerine çok daha hızlı cevap verip kısa sürede çıktı sağlıyoruz. (En büyük avantajımız)

Teknik Kazanımlar

  • Yeni dashbordumuzu çok kısa bir sürede yayına aldık ve eskisine göre çok daha performanslı.
  • Google Closure Compiler’ın sunduğu avantajlardan yararlanabiliyoruz.
  • Deployment süreçlerimiz kısaldı ve kolaylaştı.
  • Lisp’in macroları sayesinde kodumuz çok büyük oranda azaldı ve daha anlamlı hale geldi.
  • Artık frontend’i JVM üzerinden serve ettiğimiz için Node’a göre makinayı çok daha utilize edebiliyoruz.
  • Müşterilerimizden performans konusunda aldığımız olumlu geri bildirimlerin ardı arkası kesilmedi. Hatta bir müşterimiz yeni dashboard’a Hüseyin (Usain Bolt) adını verdi.

Bir Sonraki Adım

Hali hazırda 2 servisimiz Clojure’da çalışıyor; Dashboard (ClojureScript), Event Analytics (Clojure). Bundan sonraki süreçte tüm servislerimizi Clojure’a geçirip tek bir dil kullanarak hem backend hem frontend’i daha optimize bir şekilde yönetmeyi hedefliyoruz.

Clojure’un bize sunduğu avantajlar işlerimizi son derece rahatlattı, özellikle Enterprise ürününüz olunca bu tarz etkilerin çıktıları çok net gözüküyor. Yazıyı sonlandırırken bizimle aynı kaderi paylaşıp Clojure’u kullanan birkaç ünlü firmanın bulunduğu ufak bir liste sunmak istiyorum.

  • Walmart
  • Facebook
  • Apple
  • Boeing
  • Amazon
  • Netflix

Teşekkürler Muhammet S. AYDIN, Sabire Avcı, Burkay Durdu, Oguzhan Aydin, ergenekon yigit ve Alican Çelik.

Not: Clojure hakkında derinlemesine daha fazla bilgi sahibi olmak için bu yazımı okuyabilirsiniz.

Ertuğrul Çetin, Software Development Team Lead @Pisano

--

--

Ertuğrul Çetin
pisanoeng

Clojure Developer who likes to make and break things.