Redis’e Bakarken: Biz Gerçekten İcat Eden Geliştiriciler miyiz?
(blog.day1swhan.com)Redis ekosistemine bakarken, gerçekten icat eden bir geliştirici olduğumu gönül rahatlığıyla söyleyip söyleyemeyeceğimi bir kez daha düşünüyorum.
Key-Value depolamanın doğuşu
- 2000’li yıllardan sonra Web 2.0 dönemi gelince, web hizmeti şirketleri muazzam kullanıcı sayılarını kaldırmak zorunda kaldı
- Bu devasa trafiği karşılamak için büyük ve gösterişli sunucular değil, küçük ama ucuz, büyük ölçekli dağıtık sistemler gerekli hale geldi
- Neyse ki çoğu veri yapısı basitti (ör.
userid = 1234bilgisini getirmek) - İlişkisel veritabanı (RDBMS) kullanmak fazla ağır, pahalı ve karmaşıktı
- CAP Theorem ortaya çıktı
- O halde tutarlılıktan vazgeçsek bile erişilebilirlik ve hızı yakalamak yeterliydi
- Anahtar verince değer döndüren basit veritabanları ortaya çıktı (Memcached-2003, Amazon Dynamo-2007)
Redis’in doğuşu
- Makarnanın memleketi İtalya’da Salvatore Sanfilippo adlı bir geliştirici LLOOGG adlı bir startup işletiyordu (
Logyazımı gerçekten iki tane) - LLOOGG, web sitesi ziyaretçilerini gerçek zamanlı izleme hizmeti sunuyordu
- Küçük ölçekliydi ama gerçek kullanıcıları da vardı
- O dönemde gerçek zamanlı analiz oldukça zor bir işti
- Veri birikmeye başladı → mevcut RDBMS giderek yavaşladı → gerçek zamanlı tepki veremez hale geldi
- Gerçek zamanlı tepki için belleği kullanmak gerekiyordu → Memcached o dönemde yalnızca string biçiminde basit GET, PUT işlemlerini destekliyordu
- INCR, DECR, LIST gibi biraz daha gelişmiş dictionary işlevleri gerekiyor ama böyle bir DB yok mu? → Lanet olsun, o zaman kendim yaparım
- Son derece basit bir TCP sunucusu üzerinde çalışan ilk sürüm ortaya çıktı (cluster, AOF, replikasyon gibi ileri seviye özellikler falan yoktu)
Redis’in evrimi
- Redis, bir cache değil, gerçek zamanlı işleme için bir veri yapısı deposu amacıyla doğdu
- Ama insanlar onu cache olarak kullanmaya başladı
- Mevcut devlerin (Facebook, Twitter, GitHub, Stack Overflow vb.) cache’in ötesine geçen veri yapısı ihtiyaçları arttı
- Oturum saklama, giriş token’ı yönetimi, gerçek zamanlı sayaçlar, sıralama sistemleri, beğeni sayısı gibi küçük işlevlerle kademeli benimseme başladı
- Gerekli çeşitli işlevler ve veri yapıları evrimsel biçimde eklendi (Sorted Set, HASH, Cluster, persistence...)
- Esnek bir veri işleme platformuna dönüştü
Topluluk, UX ve geliştirici felsefesi
- Redis’in temelinde özelliği çok olsa da karmaşık olmamalı felsefesi vardır
- Resmî dokümantasyon, CLI tabanlı doğrudan çalıştırılabilir örnekler ve açık davranış açıklamaları sunar
- Sezgisel komutlar (SET, GET, LPUSH, ZADD, HGETALL vb.) sayesinde resmî dokümantasyona hızlıca göz atınca ne işe yaradıkları hemen anlaşılır
- Bu sezgisellik, yalnızca kullanım kolaylığı sağlamanın ötesinde, araca karşı psikolojik eşiği düşürür ve geliştirici üretkenliğini artırır
- Bu yapıdan doğan çok yönlülük; kullanıcılar, bulut sağlayıcıları ve açık kaynak katkıcılarının hepsine fayda sağlar
- Karşılıklı çıkarlarla oluşan bu ekosistemde Redis, zorla dayatılmadan yapılan tercihler sayesinde in-memory DB dünyasının fiilî standardı haline geldi
Redis ekosistemine bakarken
- Redis, ziyaretçilerin gerçek zamanlı analizi gibi belki de sıradan sayılabilecek bir fikri hayata geçirmek için bir araç olarak başladı
- SQL adlı mevcut yaklaşımın sınırlarını (yavaş ve pahalı olması) yeni bir yaklaşımla aştı
- Şirket bağlantılarını kullanmak, tedarikçileri sıkıştırmak, donanım ayarı yapmak ya da kullanım kısıtı koymak gibi mevcut kuralları optimize etmek değildi mesele
- Belleği veritabanının temel unsuru haline getiren yeni bir kural ortaya koydu
- Aracı doğrudan tasarlamak, daha önce olmayan bir akış önermek ve bunu tüm dünyanın benimsemesini sağlamak için, uygulamaya dönük temel bilgi önemlidir
- Sadece alışveriş sepeti saklama sorununu çözmek için tasarlanan Amazon Dynamo’ya bakılsa bile, karmaşık dağıtık sistem bilgisinin uygulanması gerektiği görülür
- Herkesin gönüllü seçimiyle sektör standardı haline gelindiğinde muazzam katma değer ve istihdam oluşur
- Redis uzmanlığı, donanım altyapısı, eğitim içerikleri, yönetilen hizmetler (AWS, Azure), uzman çözümler (Redis Enterprise) buna bakınca anlaşılabilir
- Bütün bunlar, hükümet politikalarının ya da yasaların yarattığı bir şey değil
Belki de hâlâ yalnızca dış görünüşüyle gelişmiş bir ülkeyiz ve belki de sanayi çağı zihniyetiyle yaşarken geliştiricileri bilgi hizmetleri sektörünün çalışanları sanma yanılgısı içindeyiz; bunu düşünmemiz gerekiyor.
- Temel teknolojinin (ör. algoritmalar) neden önemli olduğunu sonuçlarla kanıtlayabiliyor muyuz
- Sorun çözmek için araç yapabilen bir geliştirici kültürü ve eğitim sistemi var mı
- Herkes başarısızlığı tolere eden bir kültür büyütmek gerektiğini söylüyor ama ben de başkalarının hatalarına öfkelenip sövüyor muyum
- Bilgi hizmetleri sektörünün gerçek katma değerini gerçekten anlayıp ısrarla ileri taşıyabiliyor muyuz
Gerçek geliştiricinin, yalnızca araçları iyi kullanan kişi değil; eksik de olsa ihtiyaç duyduğu aracı kendisi tasarlayan, o aracı başkalarının da kolayca kullanabilmesini sağlayarak ekosistemi genişletebilen ve katma değer üretebilen kişi olduğu düşüncesini yeniden hatırlıyorum
2 yorum
Ben sahte gibiyim :(
Kullanışlılığın icadı…