Yapay zeka kodlama araçları ve Rust ile dağıtık sistem geliştiren bir yazılımcının çalışma ortamı.

100K Satır Rust Kodu ve Yapay Zeka ile Üretkenlik Sırları

100K Satır Rust Kodu ve Yapay Zeka ile Üretkenlik Sırları

Son aylarda, yapay zeka kodlama ajanlarının gerçek, üretim kalitesinde dağıtık sistemler oluşturmada ne kadar ileri gidebileceğini test ettim. Sonuç: Azure’ın Replikasyon Durum Kütüphanesi’nin (RSL) tüm özelliklerini uygulayan ve aynı zamanda modern donanıma uyum sağlayacak şekilde güncelleyen Rust tabanlı bir çoklu-Paxos konsensüs motoru oldu. Projenin tamamı yaklaşık 3 ay sürdü; yaklaşık altı haftada 130K satır Rust kodu yazıldı ve 1.300’den fazla test ile 23K işlem/sn’den 300K işlem/sn’ye performans optimizasyonu ~3 haftada tamamlandı. Bu eşi benzeri görülmemiş üretkenliğin yanı sıra, doğruluğu kod kontratları ile sağlamak, hafif spec-driven geliştirme uygulamak ve agresif performans optimizasyonu yapmak gibi etkili teknikler keşfettim. Bu yazı, yapay zeka destekli kodlamanın geleceği için istek listemle birlikte en değerli öğrenimlerimi paylaşıyor.

Neden RSL Modernize Edildi?

Azure’ın RSL’si, çoklu-Paxos konsensüs protokolünü uygular ve birçok Azure hizmetinde replikasyonun omurgasını oluşturur. Ancak RSL, on yıldan daha uzun bir süre önce yazıldı. Sağlam olsa da, modern donanım ve iş yüklerine uyum sağlayacak şekilde evrilmedi.

Bu projeyi motive eden üç temel eksiklik vardı:

  • **Ardışık İşleme Yokluğu:** Bir oylama devam ederken yeni isteklerin beklemesi gecikmeyi artırır.
  • **NVM Desteği Yokluğu:** Kalıcı olmayan bellek (NVM) artık Azure veri merkezlerinde yaygın ve commit süresini önemli ölçüde azaltabilir.
  • **Sınırlı Donanım Farkındalığı:** RSL, Azure veri merkezlerinde yaygın olan RDMA’dan yararlanmak üzere tasarlanmamıştı.

Bu sınırlamaların ortadan kaldırılması, modern bulut iş yükleri ve yapay zeka odaklı hizmetler için kritik olan önemli ölçüde daha düşük gecikme süresi ve daha yüksek verim sağlayabilir. Rust’a ve yapay zeka destekli geliştirmeye olan ilgim göz önüne alındığında, sıfırdan modern bir RSL eşdeğeri inşa etmeye karar verdim.

Büyük Üretkenlik Artışı

Yaklaşık altı hafta içinde, yapay zekayı kullanarak çoklu-Paxos, lider seçimi, günlük replikasyonu, anlık görüntüleme ve konfigürasyon değişiklikleri dahil olmak üzere RSL’nin tüm özellik setini kapsayan 130K satırdan fazla Rust kodu uyguladım.

Birçok mevcut yapay zeka kodlama aracını kullandım: GitHub Copilot, Claude Code, Codex, Augment Code, Kiro ve Trae. İş akışım hızla gelişti, ancak bugün ana sürücülerim **Claude Code** ve **Codex CLI**, VS Code ise farkları ve küçük düzenlemeleri hallediyor. CLI’dan kodlama yapmanın üretkenliğimi en üst düzeye çıkaran mükemmel bir asenkron akış yarattığını buldum. Ayrıca basit bir psikolojik numara keşfettim: Anthropic’in en yüksek planına ayda 100 dolar ödüyorum. Bu bir zorlama işlevi haline geldi – eğer yatmadan önce Claude ile bir kodlama görevine başlamazsam, para israf ettiğimi hissediyorum. Codex CLI geldiğinde, hız limitlerini yönetmek için ikinci bir ChatGPT Plus aboneliği ekledim – bir abonelik Pazartesi-Çarşamba, diğeri Perşembe-Pazar için.

Kod Kontratları – Yapay Zeka Tarafından, Yapay Zeka İçin

En sık aldığım soru şudur: _Yapay zeka Paxos gibi karmaşık bir şeyi nasıl doğru bir şekilde uygulayabilir?_ Test, ilk savunma katmanıdır. Sistemim şu anda birim testlerinden minimal entegrasyon testlerine (örn. sadece öneren + kabul eden) kadar, enjeksiyonlu hatalara sahip çoklu replika tam entegrasyon testlerine kadar 1.300’den fazla test içeriyor. Ancak gerçek atılım, yapay zeka odaklı **kod kontratları**ndan geldi.

Kod kontratları, kritik fonksiyonlar için _önkoşullar_, _sonkoşullar_ ve _değişmezler_ belirtir. Bu kontratlar, test sırasında çalışma zamanı iddialarına dönüştürülür, ancak performans için üretim yapılarında devre dışı bırakılabilir. Bu yaklaşımı .NET ile uzun zaman önce kullanmaya başlamış olsam da, yapay zeka kontratları çok daha güçlü hale getirdi.

İşte üç seviyede nasıl uyguladığım:

  1. **Yapay Zekadan Kontrat Yazmasını İsteme:** Opus 4.1 iyi kontratlar yazarken, GPT-5 High mükemmel olanları yazıyor. Ben incelemeye ve iyileştirmeye odaklanıyorum. Örneğin, ‘process_2a’ metodu (Paxos’taki 2a faz mesajlarını işleme) **16 kontrat** içeriyor.
  2. **Kontratlardan Test Oluşturma:** Kontratlar tanımlandıktan sonra, yapay zekadan her sonkoşul için hedeflenmiş test senaryoları oluşturmasını istiyorum. Anlamlı kenar durumlarını otomatik olarak oluşturmada üstün başarı gösteriyor.
  3. **Kontratlar İçin Özellik Tabanlı Testler:** Bu favorim. Yapay zeka, kontratları özellik tabanlı testlere çevirerek geniş bir rastgele girdi alanını keşfediyor. Herhangi bir kontrat ihlali bir panik tetikler ve derin hataları erken aşamada ortaya çıkarır. Yapay zeka tarafından oluşturulan bir kontrat, örneğin, ince bir Paxos güvenlik ihlalini buldu. Bu tek kontrat, üretime ulaşmadan önce ciddi bir replikasyon tutarlılık sorununu önledi.

Hafif Spec-Driven Geliştirme

Çeşitli Spec-Driven Development (SDD) araçlarını denedim. Aslında, lider seçimi, öneren, kabul eden ve öğrenen gibi daha önceki bileşenlerin tümü katı bir SDD yaklaşımıyla uygulandı. Gereksinim markdown’ı ile başlar, bunu bir tasarım markdown’ına ve ardından bir görev listesi markdown’ına dönüştürürdüm. Ancak, zamanla bu sürecin çok katı olduğunu; yol boyunca değişiklikler yapmanın ve tüm belgelerin tutarlı kalmasını sağlamanın bir baş ağrısı haline geldiğini gördüm.

Şimdi daha hafif bir yaklaşıma geçtim. Bir özellik üzerinde çalışırken (örn. anlık görüntüleme), bir spesifikasyon markdown’ı oluşturmak için **spec kit**’ten ‘/specify’ kullanıyorum. Bu spesifikasyon, birkaç kullanıcı hikayesi ve kabul kriterinden oluşuyor. Daha sonra ‘/clarify’ kullanarak yapay zekadan kullanıcı hikayelerini ve kriterlerini eleştirmesini ve iyileştirmesini istiyorum. Ayrıca, ilk spesifikasyonda yer almayan ek kullanıcı hikayeleri önermesini de istiyorum. Zamanımın çoğunu burada geçiriyorum.

Memnun kaldığımda, ‘plan moduna’ geçiyor ve yapay zekadan belirli bir kullanıcı hikayesi için bir plan oluşturmasını istiyorum. Günümüzün yapay zeka kodlama ajanlarının yeteneği göz önüne alındığında, tek bir kullanıcı hikayesi, etkili bir şekilde yönetebilecekleri ‘tatlı nokta’ iş birimi gibi hissettiriyor. Bu süreçte eklemeler veya ayarlamalar keşfedebiliriz, bunlar aynı kodlama oturumunda kolayca ele alınabilir.

Agresif Performans Optimizasyonu

Performans optimizasyonu, yapay zekanın gerçekten parladığı yerdir. Başlangıçtaki doğruluğu sağladıktan sonra, yaklaşık üç hafta boyunca sadece verim ayarlamasına harcadım – ve yapay zeka, performans mühendisliğinde eş pilotum oldu.

Tekrarlayan döngülerle, tek bir dizüstü bilgisayarda verimi ~23K işlem/sn’den ~300K işlem/sn’ye çıkardık. İşte tekrar tekrar uyguladığım döngü:

  1. Yapay zekadan tüm kod yollarında gecikme metrikleri enstrümanlaştırmasını isteme.
  2. Performans testleri çalıştırma ve izleme günlüklerini çıktı olarak alma.
  3. Yapay zekanın gecikme dökümlerini analiz etmesine izin verme (nicelikleri hesaplamak ve darboğazları belirlemek için Python betikleri yazıyor).
  4. Yapay zekadan optimizasyonlar önermesini, birini uygulamasını, yeniden ölçmesini ve tekrarlamasını isteme.

Bu süreç, kaçırmış olabileceğim içgörüleri ortaya çıkardı – örneğin, asenkron yollardaki kilit çekişmesi, gereksiz bellek kopyalamaları ve gereksiz görev oluşturmalar. Rust’ın güvenlik modeli, bu optimizasyonları güvenle uygulamayı kolaylaştırdı. Temel kazançlar, tahsisatları minimize etmek, sıfır kopyalama teknikleri uygulamak, kilitlerden kaçınmak ve asenkron yükü seçici olarak kaldırmaktan geldi. Her iyileştirme, yüksek performanslı bir motorun gecikme süresinden başka bir katman soyulması gibi hissettirdi – bellek bozulması korkusu olmadan.

Yapay Zeka Destekli Kodlama İçin Dilek Listesi

Yolculuğumu düşünürken, yapay zekanın daha fazla değer katabileceği yerleri merak etmeye devam ediyorum. İşte dilek listemdeki bazı maddeler:

  • **Uçtan Uca Kullanıcı Hikayesi Yürütme:** Kullanıcı hikayelerini kendim tanımlamayı hala tercih ediyorum. Bir mimar olarak, ne inşa ettiğim ve nasıl inşa etmek istediğim konusunda daha iyi bir sezgiye sahip olduğumu hissediyorum. Ancak, mükemmel bir yürütmenin teslimini yapay zekanın giderek daha iyi halledebileceğine inanıyorum. Bugün hala yapay zekayı yönlendirmek için oldukça fazla zaman harcamak zorundayım – durduğunda devam etmesini söylemek, yeniden düzenleme önermek, test kapsamını gözden geçirmek ve ek testler önermek. Yapay zekanın bu uçtan uca süreci daha fazla otonomiyle yönetmesini tercih ederim.
  • **Otomatik Kontrat İş Akışları:** Kontratları uygulama akışı büyük ölçüde otomatikleştirilebilir görünüyor. Kontratları yine de gözden geçirmek ve önerilerde bulunmak istesem de, geri kalanını yapay zekanın yönlendirmesini isterim: kontratlara dayalı testler oluşturmak, bireysel test senaryolarını hata ayıklamak, testler ve kontratlar arasındaki tutarlılığı sağlamak ve özellik tabanlı testler yazmak. Bir test başarısız olduğunda, yapay zekanın önemsiz sorunları otomatik olarak hata ayıklamasını ve düzeltmesini, sadece kontratlarda veya uygulamada gerçek doğruluk sorunları olduğunda beni bilgilendirmesini isterim.
  • **Otonom Performans Optimizasyonu:** Performans ayarlaması, daha fazla otomasyon için uygun görünüyor. Yaptıklarımın çoğu tekrarlayıcı ve paralelleştirilebilir. AlphaEvolve (veya OpenEvolve) gibi projeler bu yönde umut vaat ediyor. İdeal olarak, potansiyel optimizasyon yolları önereceğim ve yapay zeka deneyleri tamamen kendisi yürütecektir. Mevcut araçlar küçük kod parçacıklarını hallederken, benzer teknikleri uçtan uca ölçümle daha büyük kod tabanlarına uygulamak mümkün görünüyor.

Sonuç ve Gelecek

Projenin tohumu, Microsoft Research’ten Jay Lorch’un çoklu-Paxos’taki tüm bileşenleri basitleştiren zarif bir tasarım markdown’ına dayanıyor. Bugüne kadar, RSL’nin üç sınırlamasından ikisi giderildi: ardışık işleme ve NVM desteği (Jay, OSDI 2025’te yayınlanan ‘PoWER Never Corrupts’ makalesinde açıklanan, NVM için tam doğrulukta kalıcı günlük entegre etti). RDMA desteği hala beklemede. Proje, %65’ten fazla kod tabanını oluşturan 1.300’den fazla test ile 130K satırın üzerinde Rust koduna ulaştı.

Comments

No comments yet. Why don’t you start the discussion?

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir