Infrastruttura
L'infrastruttura del Trading Bot ByNinja è progettata per un funzionamento autonomo a lungo termine in ambienti reali instabili. I sistemi di trading crypto devono rimanere operativi 24/7, recuperare automaticamente da guasti imprevisti e minimizzare i tempi di inattività senza richiedere interventi manuali.
Per raggiungere questo obiettivo, l'infrastruttura include:
- •Loop di esecuzione Watchdog
- •Recupero automatico da crash
- •Orchestrazione riavvio processi
- •Gestione spegnimento graduale
- •Ambiente runtime persistente
- •Esecuzione modulo isolato
L'intera architettura è costruita attorno alla tolleranza ai guasti e alla continuità operativa.
Script Watchdog
Il livello di esecuzione principale del sistema è controllato attraverso uno script di lancio watchdog dedicato:
./run.sh trading
./run.sh telegramLo script watchdog agisce come un supervisore di processo leggero responsabile di:
- •Validazione ambiente
- •Attivazione ambiente virtuale
- •Avvio modulo
- •Rilevamento crash
- •Gestione riavvio automatico
Questo approccio evita la necessità di gestori di processi esterni durante lo sviluppo o distribuzioni leggere, fornendo comunque resilienza di tipo produttivo.
Validazione Ambiente
Prima di avviare qualsiasi modulo, lo script valida:
- •Argomenti di input
- •Esistenza ambiente virtuale
- •Configurazione runtime
Esempio:
if [[ "$MODULE" != "trading" && "$MODULE" != "telegram" ]]; then
echo "Invalid argument"
exit 1
fiLo script assicura anche che l'ambiente virtuale Python esista:
if [ ! -f "$VENV_PATH" ]; then
echo "Virtual environment not found"
exit 1
fiQuesto previene l'avvio accidentale con dipendenze rotte o parametri di esecuzione errati.
Ambiente Runtime Isolato
L'infrastruttura attiva un ambiente virtuale Python dedicato prima dell'esecuzione:
source "./env/bin/activate"Questo garantisce:
- •Isolamento dipendenze
- •Versioni pacchetti stabili
- •Comportamento runtime riproducibile
- •Separazione distribuzione pulita
Il launcher definisce anche esplicitamente PYTHONPATH:
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"Questo garantisce import affidabili indipendentemente dal contesto della shell corrente o dalla posizione di distribuzione.
Sistema di Riavvio Automatico
Una delle caratteristiche infrastrutturali più importanti è il loop di riavvio automatico.
Il launcher monitora continuamente il processo del bot:
while true; do
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"
doneSe il processo esce inaspettatamente, il watchdog rileva immediatamente il guasto e rilancia il modulo automaticamente.
Logica di rilevamento crash:
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "[CRASH] Restarting..."
sleep $RESTART_DELAY
fiQuesto crea un modello di esecuzione auto-riparante capace di recuperare da:
- •Eccezioni impreviste
- •Guasti di rete
- •Interruzioni API
- •Deadlock
- •Instabilità temporanea del sistema
- •Terminazione processo esterno
Ritardo di Riavvio Controllato
L'infrastruttura aggiunge intenzionalmente un tempo di raffreddamento al riavvio:
RESTART_DELAY=3Questo previene:
- •Loop di riavvio rapido infiniti
- •Picchi di CPU durante crash ripetuti
- •Sovraccarico API
- •Inondazione log
Il breve ritardo dà ai sistemi esterni il tempo di recuperare prima di riprovare l'esecuzione.
Architettura Servizi Separati
Il sistema separa l'infrastruttura in due servizi riavviabili indipendentemente:
| Servizio | Responsabilità |
|---|---|
| Modulo Trading | Motore di trading ed esecuzione strategia |
| Modulo Telegram | Controllo remoto e notifiche |
Questo isolamento fornisce diversi vantaggi:
- •Un sottosistema può fallire indipendentemente
- •Il monitoraggio Telegram può rimanere online durante i crash del trading
- •Il trading può continuare anche se Telegram fallisce
- •Debug e manutenzione più facili
I moduli comunicano attraverso il livello TCP interno piuttosto che tramite accoppiamento diretto.
Gestione Spegnimento Graduale
L'infrastruttura supporta il comportamento di spegnimento controllato utilizzando la gestione dei segnali.
Esempio:
signal.signal(signal.SIGINT, signal_handler)Allo spegnimento:
- •Il trading si ferma in modo sicuro
- •La persistenza viene scaricata su disco
- •Le connessioni TCP si chiudono pulitamente
- •I thread terminano gradualmente
Esempio di flusso di spegnimento:
🛑 Shutdown signal received...
💾 Forcing save to disk...
✅ PersistentMap stoppedQuesto è critico nei sistemi di trading perché spegnimenti impropri potrebbero altrimenti portare a:
- •Perdita dello stato della posizione
- •Persistenza corrotta
- •Dati di recupero incoerenti
- •Ordini non chiusi
Filosofia Recupero Crash
L'infrastruttura segue un principio semplice ma potente:
Crash → Detect → Restart → Recover State → Continue TradingIl bot è progettato presupponendo che i crash siano inevitabili nei sistemi distribuiti a lungo termine.
Invece di cercare di prevenire ogni possibile guasto, l'architettura si concentra su:
- •Rilevamento rapido
- •Riavvio affidabile
- •Recupero stato persistente
- •Continuità operativa
Questo aumenta drasticamente l'affidabilità a lungo termine.
Integrazione con Livello di Persistenza
L'infrastruttura lavora a stretto contatto con il sottosistema di persistenza.
Prima dello spegnimento o riavvio:
- •Lo stato runtime viene salvato
- •Le posizioni vengono persistite
- •La configurazione rimane intatta
- •I metadati di recupero vengono memorizzati
Dopo il riavvio:
- •Lo stato si ricarica automaticamente
- •Il trading riprende in modo sicuro
- •Le posizioni esistenti vengono ripristinate
- •La connettività Telegram ritorna automaticamente
Questo crea una pipeline di recupero resiliente anche dopo crash imprevisti o riavvii del server.
Monitoraggio Infrastruttura Telegram
Il sottosistema Telegram agisce anche come un leggero livello di monitoraggio operativo.
Gli eventi infrastrutturali vengono inoltrati direttamente a Telegram:
[CRASH] Module trading exited with code 1
Restarting in 3 seconds...Questo dà agli operatori visibilità immediata su:
- •Crash
- •Riavvii
- •Spegnimenti
- •Eventi di recupero
- •Problemi di connettività TCP
Il risultato è un'infrastruttura osservabile a distanza senza richiedere complessi dashboard di monitoraggio.
Design Affidabilità Orientato alla Produzione
L'infrastruttura ByNinja combina diversi concetti operativi di livello produttivo:
- •Loop di esecuzione Watchdog
- •Recupero automatico da crash
- •Gestione spegnimento graduale
- •Stato runtime persistente
- •Isolamento servizi
- •Comportamento di riavvio auto-riparante
- •Monitoraggio remoto tramite Telegram
- •Recupero sottosistema indipendente
Insieme, questi componenti creano un'infrastruttura capace di supportare operazioni di trading autonome continue con minima supervisione manuale.