Altyapı

ByNinja Trading Bot altyapısı, kararsız gerçek dünya ortamlarında uzun süreli otonom çalışma için tasarlanmıştır. Kripto trading sistemleri 7/24 çalışır durumda kalmalı, beklenmeyen arızalardan otomatik olarak kurtulmalı ve manuel müdahale gerektirmeden kesinti süresini en aza indirmelidir.

Bunu başarmak için altyapı şunları içerir:

  • Watchdog yürütme döngüleri
  • Otomatik çökme kurtarma
  • Süreç yeniden başlatma orkestrasyonu
  • Düzgün kapanış işleme
  • Kalıcı çalışma zamanı ortamı
  • İzole modül yürütme

Tüm mimari, hata toleransı ve operasyonel süreklilik etrafında inşa edilmiştir.


Watchdog Scriptleri

Sistemin ana yürütme katmanı, özel bir watchdog başlatıcı scripti aracılığıyla kontrol edilir:

Code
./run.sh trading
./run.sh telegram

Watchdog scripti, aşağıdakilerden sorumlu hafif bir süreç denetleyicisi görevi görür:

  • Ortam doğrulaması
  • Sanal ortam aktivasyonu
  • Modül başlatma
  • Çökme tespiti
  • Otomatik yeniden başlatma işleme

Bu yaklaşım, geliştirme veya hafif dağıtımlar sırasında harici süreç yöneticilerine ihtiyaç duymaktan kaçınırken yine de üretim tarzı dayanıklılık sağlar.


Ortam Doğrulaması

Herhangi bir modülü başlatmadan önce, script şunları doğrular:

  • Giriş argümanları
  • Sanal ortam varlığı
  • Çalışma zamanı yapılandırması

Örnek:

Code
if [[ "$MODULE" != "trading" && "$MODULE" != "telegram" ]]; then
    echo "Invalid argument"
    exit 1
fi

Script ayrıca Python sanal ortamının var olduğundan emin olur:

Code
if [ ! -f "$VENV_PATH" ]; then
    echo "Virtual environment not found"
    exit 1
fi

Bu, bozuk bağımlılıklar veya yanlış yürütme parametreleriyle kazara başlatmayı önler.


İzole Çalışma Zamanı Ortamı

Altyapı, yürütmeden önce özel bir Python sanal ortamını etkinleştirir:

Code
source "./env/bin/activate"

Bu şunları garanti eder:

  • Bağımlılık izolasyonu
  • Kararlı paket sürümleri
  • Tekrarlanabilir çalışma zamanı davranışı
  • Temiz dağıtım ayrımı

Başlatıcı ayrıca PYTHONPATH'i açıkça tanımlar:

Code
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"

Bu, geçerli kabuk bağlamından veya dağıtım konumundan bağımsız olarak güvenilir içe aktarmalar sağlar.


Otomatik Yeniden Başlatma Sistemi

En önemli altyapı özelliklerinden biri otomatik yeniden başlatma döngüsüdür.

Başlatıcı, bot sürecini sürekli izler:

Code
while true; do
    PYTHONPATH="$(pwd)/src" python3 -c "$CMD"
done

Süreç beklenmedik şekilde çıkarsa, watchdog hemen arızayı tespit eder ve modülü otomatik olarak yeniden başlatır.

Çökme tespit mantığı:

Code
EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
    echo "[CRASH] Restarting..."
    sleep $RESTART_DELAY
fi

Bu, aşağıdakilerden kurtulma kapasitesine sahip kendi kendini iyileştiren bir yürütme modeli oluşturur:

  • Beklenmeyen istisnalar
  • Ağ arızaları
  • API kesintileri
  • Kilitlenmeler
  • Geçici sistem kararsızlığı
  • Harici süreç sonlandırma

Kontrollü Yeniden Başlatma Gecikmesi

Altyapı, kasıtlı olarak bir yeniden başlatma soğutma süresi ekler:

Code
RESTART_DELAY=3

Bu şunları önler:

  • Sonsuz hızlı yeniden başlatma döngüleri
  • Tekrarlayan çökmeler sırasında CPU artışları
  • API bombardımanı
  • Günlük taşması

Kısa gecikme, yürütmeyi yeniden denemeden önce harici sistemlere iyileşme süresi verir.


Ayrı Hizmet Mimarisi

Sistem, altyapıyı iki bağımsız yeniden başlatılabilir hizmete ayırır:

HizmetSorumluluk
Trading ModülüTrading motoru ve strateji yürütme
Telegram ModülüUzaktan kontrol ve bildirimler

Bu izolasyon çeşitli avantajlar sağlar:

  • Bir alt sistem bağımsız olarak arızalanabilir
  • Telegram izleme, trading çökmeleri sırasında çevrimiçi kalabilir
  • Telegram başarısız olsa bile trading devam edebilir
  • Daha kolay hata ayıklama ve bakım

Modüller, doğrudan bağlantı yerine dahili TCP katmanı aracılığıyla iletişim kurar.


Düzgün Kapanış İşleme

Altyapı, sinyal işlemeyi kullanarak kontrollü kapanış davranışını destekler.

Örnek:

Code
signal.signal(signal.SIGINT, signal_handler)

Kapanışta:

  • Trading güvenli bir şekilde durur
  • Kalıcılık diske temizlenir
  • TCP bağlantıları düzgün kapanır
  • İş parçacıkları düzgün şekilde sonlanır

Örnek kapanış akışı:

Code
🛑 Shutdown signal received...
💾 Forcing save to disk...
✅ PersistentMap stopped

Bu, trading sistemlerinde kritiktir çünkü uygun olmayan kapanışlar aksi takdirde aşağıdakilere yol açabilir:

  • Kayıp pozisyon durumu
  • Bozuk kalıcılık
  • Tutarsız kurtarma verileri
  • Kapatılmamış emirler

Çökme Kurtarma Felsefesi

Altyapı basit ama güçlü bir ilkeyi takip eder:

Code
Crash → Detect → Restart → Recover State → Continue Trading

Bot, uzun süreli dağıtılmış sistemlerde çökmelerin kaçınılmaz olduğu varsayımı altında tasarlanmıştır.

Her olası hatayı önlemeye çalışmak yerine, mimari şunlara odaklanır:

  • Hızlı tespit
  • Güvenilir yeniden başlatma
  • Kalıcı durum kurtarma
  • Operasyonel süreklilik

Bu, uzun vadeli güvenilirliği önemli ölçüde artırır.


Kalıcılık Katmanı ile Entegrasyon

Altyapı, kalıcılık alt sistemiyle yakın çalışır.

Kapanış veya yeniden başlatmadan önce:

  • Çalışma zamanı durumu kaydedilir
  • Pozisyonlar kalıcı hale getirilir
  • Yapılandırma bozulmadan kalır
  • Kurtarma meta verileri saklanır

Yeniden başlatmadan sonra:

  • Durum otomatik olarak yeniden yüklenir
  • Trading güvenli bir şekilde devam eder
  • Mevcut pozisyonlar geri yüklenir
  • Telegram bağlantısı otomatik olarak geri döner

Bu, beklenmeyen çökmeler veya sunucu yeniden başlatmalarından sonra bile dayanıklı bir kurtarma hattı oluşturur.


Telegram Altyapı İzleme

Telegram alt sistemi ayrıca hafif bir operasyonel izleme katmanı görevi görür.

Altyapı olayları doğrudan Telegram'a iletilir:

Code
[CRASH] Module trading exited with code 1
Restarting in 3 seconds...

Bu, operatörlere aşağıdakilere anında görünürlük sağlar:

  • Çökmeler
  • Yeniden başlatmalar
  • Kapanışlar
  • Kurtarma olayları
  • TCP bağlantı sorunları

Sonuç, karmaşık izleme panoları gerektirmeyen, uzaktan gözlemlenebilir bir altyapıdır.


Üretime Yönelik Güvenilirlik Tasarımı

ByNinja altyapısı, birkaç üretim sınıfı operasyonel konsepti birleştirir:

  • Watchdog yürütme döngüleri
  • Otomatik çökme kurtarma
  • Düzgün kapanış işleme
  • Kalıcı çalışma zamanı durumu
  • Hizmet izolasyonu
  • Kendi kendini iyileştiren yeniden başlatma davranışı
  • Telegram aracılığıyla uzaktan izleme
  • Bağımsız alt sistem kurtarma

Bu bileşenler birlikte, minimum manuel gözetim ile sürekli otonom trading işlemlerini destekleyebilen bir altyapı oluşturur.