Infrastruktur

Die ByNinja Trading Bot-Infrastruktur ist für den langfristigen autonomen Betrieb in instabilen realen Umgebungen ausgelegt. Krypto-Handelssysteme müssen 24/7 betriebsbereit sein, sich automatisch von unerwarteten Ausfällen erholen und Ausfallzeiten minimieren, ohne dass manuelle Eingriffe erforderlich sind.

Um dies zu erreichen, umfasst die Infrastruktur:

  • Watchdog-Ausführungsschleifen
  • Automatische Absturzwiederherstellung
  • Prozess-Neustart-Orchestrierung
  • Kontrolliertes Herunterfahr-Handling
  • Persistente Laufzeitumgebung
  • Isolierte Modulausführung

Die gesamte Architektur ist auf Fehlertoleranz und Betriebskontinuität ausgelegt.


Watchdog-Skripte

Die Hauptausführungsebene des Systems wird durch ein dediziertes Watchdog-Launcher-Skript gesteuert:

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

Das Watchdog-Skript fungiert als leichtgewichtiger Prozess-Supervisor, der verantwortlich ist für:

  • Umgebungsvalidierung
  • Aktivierung der virtuellen Umgebung
  • Modulstart
  • Absturzerkennung
  • Automatische Neustartbehandlung

Dieser Ansatz vermeidet die Notwendigkeit externer Prozessmanager während der Entwicklung oder bei leichtgewichtigen Bereitstellungen und bietet dennoch produktionsorientierte Resilienz.


Umgebungsvalidierung

Bevor ein Modul gestartet wird, validiert das Skript:

  • Eingabeargumente
  • Existenz der virtuellen Umgebung
  • Laufzeitkonfiguration

Beispiel:

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

Das Skript stellt auch sicher, dass die Python-Virtual Environment existiert:

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

Dies verhindert versehentliche Starts mit defekten Abhängigkeiten oder falschen Ausführungsparametern.


Isolierte Laufzeitumgebung

Die Infrastruktur aktiviert vor der Ausführung eine dedizierte Python-Virtual Environment:

Code
source "./env/bin/activate"

Dies garantiert:

  • Abhängigkeitsisolierung
  • Stabile Paketversionen
  • Reproduzierbares Laufzeitverhalten
  • Saubere Bereitstellungstrennung

Der Launcher definiert auch explizit PYTHONPATH:

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

Dies gewährleistet zuverlässige Importe unabhängig vom aktuellen Shell-Kontext oder Bereitstellungsort.


Automatisches Neustartsystem

Eines der wichtigsten Infrastrukturmerkmale ist die automatische Neustartschleife.

Der Launcher überwacht kontinuierlich den Bot-Prozess:

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

Wenn der Prozess unerwartet beendet wird, erkennt der Watchdog sofort den Fehler und startet das Modul automatisch neu.

Absturzerkennungslogik:

Code
EXIT_CODE=$?

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

Dies schafft ein sich selbst heilendes Ausführungsmodell, das sich von Folgendem erholen kann:

  • Unerwarteten Ausnahmen
  • Netzwerkausfällen
  • API-Ausfällen
  • Deadlocks
  • Vorübergehender Systeminstabilität
  • Externer Prozessbeendigung

Kontrollierte Neustartverzögerung

Die Infrastruktur fügt absichtlich eine Neustart-Abklingzeit hinzu:

Code
RESTART_DELAY=3

Dies verhindert:

  • Endlose schnelle Neustartschleifen
  • CPU-Spitzen bei wiederholten Abstürzen
  • API-Hammering
  • Protokollüberflutung

Die kurze Verzögerung gibt externen Systemen Zeit, sich zu erholen, bevor die Ausführung erneut versucht wird.


Getrennte Dienstarchitektur

Das System trennt die Infrastruktur in zwei unabhängig neustartbare Dienste:

DienstVerantwortlichkeit
HandelsmodulHandelsengine und Strategieausführung
Telegram-ModulFernsteuerung und Benachrichtigungen

Diese Isolierung bietet mehrere Vorteile:

  • Ein Subsystem kann unabhängig ausfallen
  • Die Telegram-Überwachung kann bei Handelsabstürzen online bleiben
  • Der Handel kann auch bei Telegram-Ausfall fortgesetzt werden
  • Einfachere Fehlersuche und Wartung

Module kommunizieren über die interne TCP-Ebene anstatt über direkte Kopplung.


Kontrolliertes Herunterfahr-Handling

Die Infrastruktur unterstützt kontrolliertes Herunterfahrverhalten durch Signalverarbeitung.

Beispiel:

Code
signal.signal(signal.SIGINT, signal_handler)

Beim Herunterfahren:

  • Der Handel stoppt sicher
  • Die Persistenz wird auf die Festplatte geschrieben
  • TCP-Verbindungen werden sauber geschlossen
  • Threads werden ordnungsgemäß beendet

Beispielhafter Herunterfahrabulauf:

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

Dies ist in Handelssystemen kritisch, da unsachgemäße Herunterfahren andernfalls zu Folgendem führen können:

  • Verlorenem Positionszustand
  • Beschädigter Persistenz
  • Inkonsistenten Wiederherstellungsdaten
  • Nicht geschlossenen Orders

Absturzwiederherstellungsphilosophie

Die Infrastruktur folgt einem einfachen, aber leistungsstarken Prinzip:

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

Der Bot ist unter der Annahme konzipiert, dass Abstürze in lang laufenden verteilten Systemen unvermeidlich sind.

Anstatt zu versuchen, jeden möglichen Fehler zu verhindern, konzentriert sich die Architektur auf:

  • Schnelle Erkennung
  • Zuverlässigen Neustart
  • Persistente Zustandswiederherstellung
  • Betriebskontinuität

Dies erhöht die langfristige Zuverlässigkeit erheblich.


Integration mit der Persistenzschicht

Die Infrastruktur arbeitet eng mit dem Persistenzsubsystem zusammen.

Vor dem Herunterfahren oder Neustart:

  • Der Laufzeitzustand wird gespeichert
  • Positionen werden persistiert
  • Die Konfiguration bleibt intakt
  • Wiederherstellungsmetadaten werden gespeichert

Nach dem Neustart:

  • Der Zustand wird automatisch neu geladen
  • Der Handel wird sicher fortgesetzt
  • Bestehende Positionen werden wiederhergestellt
  • Die Telegram-Konnektivität kehrt automatisch zurück

Dies schafft eine widerstandsfähige Wiederherstellungspipeline selbst nach unerwarteten Abstürzen oder Serverneustarts.


Telegram-Infrastrukturüberwachung

Das Telegram-Subsystem fungiert auch als leichtgewichtige betriebliche Überwachungsschicht.

Infrastrukturereignisse werden direkt an Telegram weitergeleitet:

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

Dies gibt Betreibern sofortige Einblicke in:

  • Abstürze
  • Neustarts
  • Herunterfahrungen
  • Wiederherstellungsereignisse
  • TCP-Konnektivitätsprobleme

Das Ergebnis ist eine fernbeobachtbare Infrastruktur, die keine komplexen Überwachungs-Dashboards erfordert.


Produktionsorientiertes Zuverlässigkeitsdesign

Die ByNinja-Infrastruktur kombiniert mehrere produktionsreife Betriebskonzepte:

  • Watchdog-Ausführungsschleifen
  • Automatische Absturzwiederherstellung
  • Kontrolliertes Herunterfahr-Handling
  • Persistenter Laufzeitzustand
  • Dienstisolierung
  • Selbstheilendes Neustartverhalten
  • Fernüberwachung über Telegram
  • Unabhängige Subsystemwiederherstellung

Zusammen schaffen diese Komponenten eine Infrastruktur, die kontinuierliche autonome Handelsoperationen mit minimaler manueller Überwachung unterstützt.