Kendi kendini tamir (hot refactoring) eden uygulamalar devrinden bahsetmiştim.
Bunu kendi projelerimde nasıl uygulayacağımın reçetesini veriyorum.
– OpenAI’in max 20 aboneliğini kullan
– Sunuculara Codex CLI kur
– Git üzerinden projeleri klonla, yerlerini Codex ile paylaş
– Uygulamaların runtime çalışma ayarlarını Codex ile paylaş
– Çalışan uygulamalar için eşdeğer bir staging alanı oluştur
– Her işlem öncesinde prod DB backup oluştur ve staging alanında restore et
– Log, metric, health check ve gerektiğinde thread/heap dump gibi runtime verilerine Codex’in erişebilmesini sağla
– Uygulamanın sağlıklı çalışıp çalışmadığını belirleyen kuralları net olarak tanımla
– Bir hata oluştuğunda önce runtime verileri üzerinden root cause analizi yaptır
– Tespit edilen problem için kod değişikliğini staging üzerinde yaptır
– Unit, integration ve özellikle E2E testlerini otomatik çalıştır
– Staging üzerinde canlıya mümkün olduğunca yakın koşullarda yeni sürümü ayağa kaldır
– Aynı hatanın tekrar oluşmadığını ve mevcut fonksiyonların bozulmadığını doğrulat
– Tüm kontroller başarılıysa yeni sürümü oluştur
– Rolling deployment ile canlıya al
– Deployment sonrasında log, metric ve health check’leri tekrar kontrol ettir
– Bir regresyon tespit edilirse otomatik rollback yap
– Yapılan değişikliği, sebebini ve doğrulama sonuçlarını kayıt altına al
Böylece döngü şu hale geliyor:
Detect → Diagnose → Fix → Test → Deploy → Observe → Rollback
Buradaki kritik nokta Codex’in canlıda kafasına göre kod değiştirmesi değil.
Production problemi ortaya çıkarıyor. Yapay zeka problemi analiz ediyor. Düzeltmeyi staging üzerinde gerçekleştiriyor ve doğruluyor. Başarılı olan değişiklik kontrollü şekilde production’a taşınıyor.
Yani aslında uygulama kendi kodunu canlıda canlı canlı değiştirmiyor.
Canlıdan gelen geri bildirim, uygulamanın kendi yeni sürümünü üretmesini tetikliyor.
Benim “hot refactoring” dediğim şey tam olarak bu.
Bir sonraki aşama ise daha ilginç:
İnsan müdahalesini bu döngüden adım adım çıkarmak.
O zaman elimizde sadece kendi kendini tamir eden değil, kendi kendini işleten bir yazılım sistemi kalıyor.