İçeriğe geç
edumintsBlog
AI Araçları3 dk okuma

GitHub'ın Yeni Git Depolama Mimarisi: Ajan Ölçeğinde Yazılım Geliştirme

Kaynak: Hacker News

Paylaş
AI AraçlarıEdumints Blog
İçindekiler 2 başlık

GitHub Universe etkinliğinde duyurulan yeni Git depolama mimarisi, saniyede binlerce yazma işlemini karşılayabilen ve okuma taleplerini anında ölçeklendirebilen bir altyapı sunuyor. Yapılan dahili testler, tek bir kod deposu (repository) üzerinde aynı anda çalışan 5.000 eşzamanlı ajanın, düşük gecikmeli okuma trafiğini aksatmadan saniyede 7.200 push işlemi gerçekleştirebildiğini kanıtladı. Yüz milyonlarca geliştirici için ajan tabanlı (agentic) yazılım geliştirmeyi destekleyecek bu temel, GitHub kesintisiz çalışmaya devam ederken arka planda inşa edildi.

Geçtiğimiz yıl boyunca yapay zeka ajanları, yoğun bir kod deposunun ne anlama geldiğini tamamen değiştirdi. Yeni nesil Git depolama mimarisi iki temel ilkeye dayanıyor: koordinasyonu en aza indirmek ve depolamayı hesaplamadan (compute) ayırmak. Depoların %99,99999'unun Azure'a taşınması, yazma çoğunluğunun (write quorum) tekil referanslarla sınırlandırılması ve Azure Blob Storage destekli sanal replikaların kurulması bu geçişin köprüsünü oluşturdu.

Mimarinin arkasındaki en kritik mühendislik gözlemi şudur: Bir yazma işleminin çok küçük bir kısmının sıralanması gerekir. Git nesneleri değiştirilemezdir (immutable) ve içeriklerine göre adlandırılır; yani iki farklı yazıcı, hiçbir konuda uzlaşmaya ihtiyaç duymadan aynı anda veri depolayabilir. Bir push işleminde uzlaşma gerektiren tek kısım, boyut olarak oldukça küçük olan referans güncellemesidir. Yalnızca referans güncellemelerinin uzlaşma gerektirmesi; veri depolama, istekleri yanıtlama ve depo bakımı gibi eskiden sıkı sıkıya bağlı olan altyapı bileşenlerinin birbirinden bağımsız ölçeklenmesini sağlar. Geliştiriciler için ise Git deneyimi aynı kalır; push, fetch ve branch işlemleri aynı koruma mekanizmalarıyla devam eder.

Ajan Ölçeği İçin İnşa Etmek#

GitHub platformunun ölçeklenmesi iki temel eksende ele alınmaktadır:

  • Yatay Ölçek (Horizontal Scale): Çok sayıda kod deposu genelinde kaç geliştiricinin ve ajanın çalışabileceğini ifade eder. Kiracıların (tenants) altyapı genelinde bölümlendirilmesi, trafik izolasyonu, adil kullanım kontrolü ve yük duyarlı yönlendirme gibi yıllar içinde kanıtlanmış yaklaşımlar yeni mimariye de taşınmıştır.
  • Dikey Ölçek (Vertical Scale): Tek bir kod deposu üzerinde aynı anda kaç geliştiricinin ve ajanın çalışabileceğini belirler. Ajanlar daha fazla kod yazdıkça tekil depoların büyümesi ve yoğunlaşması beklenmektedir. Günümüzde en yoğun depolar saniyede en fazla birkaç düzine yazma isteğini kısa süreli patlamalar (bursts) halinde alırken, paralel ve 7/24 çalışan ajanlarla birlikte bu durumun kalıcı bir trafiğe dönüşmesi öngörülmektedir.

Her push işlemi beraberinde çok daha fazla okuma işlemi getirir: CI süreçleri tetiklenir, dağıtım (deployment) sistemleri yeni commit'i çeker ve diğer ajanlar bağlam (context) oluşturmak için veriyi fetch eder. Bu okuma yayılımı (read fan-out), yazma işlemleriyle birlikte katlanarak artan devasa bir trafik çarpanı yaratır. Mart ve Mayıs ayları arasında en yoğun depolarda gözlemlenen günlük istek grafikleri, bu eğilimin şimdiden başladığını doğrulamaktadır.

Yazılım Geliştirme ve Öğrenme Açısından Pratik Çıkarımlar#

  • Durumsuz ve Değiştirilemez Veri Tasarımı: Git nesnelerinin içerik adreslemeli ve değiştirilemez (immutable) yapısı, dağıtık sistemlerde kilitlenme (locking) ihtiyacını ortadan kaldırır. Kendi sistemlerinizi tasarlarken değiştirilemez veri yapılarını tercih etmek eşzamanlılık darboğazlarını çözer.
  • Koordinasyon Darboğazlarını İzole Etmek: Sistemin tamamını senkronize etmek yerine yalnızca durum değiştiren en küçük birimi (örneğin referans güncellemelerini) koordine etmek, depolama ve hesaplama katmanlarını bağımsız ölçeklendirmenin anahtarıdır.
  • Okuma Yayılımını (Read Fan-Out) Hesaba Katmak: Çok ajanlı (multi-agent) mimarilerde üretilen her yeni çıktı, diğer ajanlar ve otomasyon araçları tarafından okunacağı için sistem tasarımında okuma önbelleklemesi ve sanal replikalar önceliklendirilmelidir.

Bu konuyu derinlemesine öğrenmek isterseniz: Ölçeklendirme ve Optimizasyon modülüne göz atın.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • github.blog/engineering/architecture-optimization/inside-githubs-new-git-storage-architecture