RadarGitHub Radarai üretimi

GitHub Radar — Quickwit

Bulut nesne depolaması üzerinde çalışan, depolama ve hesaplamayı ayıran Tantivy tabanlı dağıtık arama ve log motoru.

Quickwit, büyük hacimli log, metrik ve izleme verileri için depolama ile hesaplama katmanlarını birbirinden ayıran ve doğrudan bulut nesne depolaması (Amazon S3, MinIO, Google Cloud Storage) üzerinde alt-saniye (sub-second) arama performansı sunan açık kaynaklı bir dağıtık arama motorudur 1. Geleneksel Elasticsearch veya OpenSearch kümelerinin pahalı blok depolama (EBS), yüksek JVM bellek tüketimi ve çöp toplayıcı (GC) duraklamaları nedeniyle şişen operasyonel maliyetlerine karşı Quickwit; nesne depolamasını birincil veri katmanı olarak kullanan ve yalnızca ihtiyaç duyulan bayt aralıklarını sorgulayan yalın bir mühendislik çözümüdür 2.

Büyük veri ve gözlemlenebilirlik alanında 12 bin yıldız ve son commit 1 gün önce düzeyinde geniş bir topluluk ilgisine sahip olan repo, aktif olarak yönetilen 671 açık issue ve düzenli mimari gelişimini belgeleyen son sürüm v0.9.0 (Haziran 2024) metrikleriyle canlılığını kanıtlamaktadır.

Mimari Deep-Dive: Quickwit

Quickwit’in arkasındaki mimari sıçrama, Elasticsearch’ün yirmi yıllık yerel disk bağımlı küme modelini terk edip modern bulut nesne depolama semantikleriyle sıfırdan tasarlanmasından doğar. Proje bütünüyle Rust diliyle geliştirilmiştir 1. Dil tercihi; JVM tabanlı arama motorlarının kronik sorunu olan rastgele çöp toplayıcı (stop-the-world GC) duraklamalarını ortadan kaldırmak, bellek güvenliğini sıfır maliyetli soyutlamalarla korumak ve Tokio tabanlı asenkron çalışma zamanı ile binlerce eşzamanlı G/Ç isteğini yönetmek için yapılmıştır.

Sistemin kalbinde, yine Quickwit’in kurucusu Paul Masurel tarafından yazılan ve Apache Lucene’in Rust muadili olan Tantivy arama kütüphanesi yer alır 3. Geleneksel sistemler arama indekslerini sürekli yerel diskte açık tutmak ve bellek eşlemeli dosyalarda (mmap) önbelleğe almak zorundayken Quickwit, split-search adı verilen durumsuz (stateless) bir mimari kurgular. İçe aktarma düğümleri (ingesters) Kafka veya Kinesis’ten gelen logları tüketir, yerel bellekte indeksler ve “split” adı verilen değişmez (immutable) kompakt arşiv dosyaları üretir. Bu split dosyaları doğrudan S3 uyumlu nesne deposuna yazılır ve meta veri kaydı PostgreSQL veya hafif bir metastore üzerine kaydedilir. İndeksleme süreci hesaplama düğümlerinden tamamen koparıldığı için sorgu yükü indekslemeyi asla yavaşlatmaz.

Bir split dosyasını S3 üzerinde aramak normal şartlarda tüm dosyanın indirilmesini gerektirir ve bu durum saniyeler sürer. Quickwit bu darboğazı HTTP aralık istekleri (HTTP Range Requests: bytes=start-end) kullanarak aşar 4. Her split dosyasının sonuna yerleştirilen küçük bir dizin ve altbilgi (footer) sayesinde arama düğümü tüm dosyayı indirmez; yalnızca aradığı terimin sözlük konumunu ve ilgili belge kimliği listelerini (postings list) hedefleyen nokta atışı bayt aralıklarını çeker. Quickwit ayrıca birden çok split dosyasını arka planda otomatik olarak birleştiren (merge pipeline) asenkron bir sıkıştırma motoru çalıştırır. Küçük split dosyaları birleştirilerek arama sırasındaki HTTP istek sayısı azaltılır ve veri sıkıştırma oranı maksimize edilir. Çekirdek seviyesindeki TCP bağlantı havuzları, vektörize edilmiş sorgu yürütümü ve akıllı yerel disk önbelleğiyle birleştiğinde, nesne depolamasındaki terabaytlarca veri üzerinde 100 milisaniyenin altında karmaşık metin aramaları ve toplama (aggregation) sorguları işletilir.

Kod ve Topluluk Sağlığı

Quickwit, Tantivy’nin yaratıcısı Paul Masurel ve Francois Massot tarafından kurulan Quickwit Inc. şirketi ve küresel bir açık kaynak sistem programcısı topluluğu tarafından yönetilmektedir 1. Proje, arama algoritmaları ve düşük seviyeli depolama motorları alanında derin uzmanlığa sahip mühendislerin elinde kararlı bir yol haritasıyla büyümektedir.

Kod tabanındaki mühendislik standartları oldukça yüksektir. Çekirdek depodaki her PR; katı Clippy linter denetimleri, bellek güvenliği sızıntı testleri, çoklu platform derleme hatları ve S3/GCS entegrasyon testlerinden geçer. Dışarıdan gelen katkıların Tantivy veri formatı uyumluluğunu bozmaması için kapsamlı geriye dönük uyumluluk ve regresyon testleri işletilir. Maintainer ekibi açık issue listesinde teknik açıdan zengin tartışmalar yürütmekte, topluluktan gelen karmaşık kümeleme ve performans sorularına doğrudan mimari açıklamalarla yanıt vermektedir 5. Sürüm notları her majör güncellemede Ingest V2 boru hattı ve DataFusion entegrasyonu gibi kritik adımları şeffaf biçimde belgeler. health_score bu bölümden türer: issue kapanma hızı, sürüm düzeni, bakımcı ekibi. Ajanın tahminidir; künyede öyle yazılır. Maintainer ekibi topluluk katkılarını düzenli olarak gözden geçirmekte ve mimari vizyonla örtüşen iyileştirmeleri hızla entegre etmektedir. Projenin disiplinli sürüm geçmişi, köklü Tantivy mirası ve yetkin çekirdek kadrosu göz önüne alınarak mimari güvenilirlik skoru health_score: 8.6 olarak takdir edilmiştir.

Production Riski: Gerçekten Kullanılır mı?

Quickwit’i canlı üretim ortamına almayı planlayan mimarlar için lisanslama açısından herhangi bir belirsizlik bulunmamaktadır; arama motorunun çekirdeği temiz bir Apache 2.0 lisansı ile dağıtılmaktadır ve kurumsal altyapılarda kullanımında hiçbir telif veya kısıtlama riski yoktur 6.

Quickwit’in üretimde hayat kurtardığı senaryo; petabaytlarca log, güvenlik denetim kaydı (audit logs) ve OpenTelemetry izi saklayan, ancak Elasticsearch kümelerinin devasa SSD maliyetleri ve shard yönetim yükü altında ezilen altyapılardır. Veriyi doğrudan S3 üzerinde tutarak depolama faturasını yaklaşık 10 kat düşürmek ve durumsuz arama düğümleri sayesinde sorgu trafiğine göre saniyeler içinde yatay ölçeklenmek rakipsiz bir maliyet avantajıdır.

Buna karşılık, sisteminizin patlayabileceği senaryoları iyi hesaplamak gerekir. Quickwit kesinlikle anlık tekil güncellemeler (point mutations / updates) gerektiren e-ticaret veya kullanıcı profili arama senaryolarına uygun değildir; değişmez (immutable) split mimarisi yalnızca log ve izleme gibi salt-eklemeli (append-only) iş yüklerinde yüksek performans verir. İkinci büyük risk, nesne depolama servisinin gecikme dalgalanmalarıdır. Yerel SSD önbelleklemesi doğru yapılandırılmadığında veya bulut sağlayıcısının S3 API hız sınırlarına (rate limits) takılındığında p99 kuyruk gecikmeleri yükselebilir. Mimarinizde doğru konumlandırıldığında Quickwit, geleneksel Elasticsearch operasyonlarının getirdiği bakım kabusunu ve altyapı maliyetlerini sıfırlayan olağanüstü bir mühendislik kazancıdır. Ancak operasyonel OLTP aramaları için değil, yüksek hacimli gözlemlenebilirlik ve analitik sorgular için tercih edilmelidir.

Kaynaklar

  1. Quickwit GitHub Ana Deposu
  2. Quickwit Resmi Web Sitesi ve Dokümantasyonu
  3. Tantivy Arama Kütüphanesi ve Paul Masurel Röportajı
  4. Quickwit 101: Nesne Deposu Üzerinde Dağıtık Arama Mimarisi
  5. Quickwit GitHub Sorun Takipçisi ve Tartışmaları
  6. Quickwit Apache 2.0 Lisans Dosyası