Deployment
Questa sezione descrive gli ambienti di esecuzione del sistema.
Variabile ENV
L'ambiente attivo e definito dalla variabile:
ENV=LOCALENV=PAPERENV=LIVE
ENV viene letta dai microservizi per:
- selezionare configurazioni runtime e endpoint esterni;
- separare canali/log/eventi per ambiente;
- applicare comportamenti diversi su integrazioni broker e automazioni.
Ambienti disponibili
LOCAL
Ambiente di sviluppo locale.
Uso tipico:
- sviluppo feature;
- debug e test manuali;
- avvio parziale o completo con profili Docker locali.
Caratteristiche principali:
- servizi esposti su host locale;
- configurazioni orientate a velocita di iterazione;
- dati e integrazioni spesso mock/stub o di test.
PAPER
Ambiente di simulazione operativa (paper trading).
Uso tipico:
- test end-to-end realistici senza capitale reale;
- validazione workflow scheduler/decision engine/execution;
- verifica monitoraggio, alerting e stabilita.
Caratteristiche principali:
- integrazione con account/sistemi paper;
- comportamento vicino alla produzione;
- rischio operativo ridotto rispetto a LIVE.
LIVE
Ambiente di produzione con operativita reale.
Uso tipico:
- esecuzione ordini reali;
- monitoraggio continuo del sistema;
- gestione incident e runbook operativi.
Caratteristiche principali:
- integrazioni reali broker/provider;
- policy di sicurezza e controllo piu restrittive;
- rilascio controllato e osservabilita completa.
Flusso LOCAL -> main -> PAPER
Il deployment verso PAPER e gestito da GitHub Actions nel file:
trading-system/.github/workflows/deploy.yml
Flusso operativo richiesto:
- Sviluppo e test in
LOCAL. - Commit/push su branch organizzativo
main. - Merge del codice su branch
PAPER. - Il push su
PAPERattiva automaticamente la pipeline CI/CD.
Cosa fa la pipeline CI/CD su PAPER
Quando c'e un push su branch PAPER, il workflow esegue:
- Checkout e setup build
- checkout repository;
- setup Docker Buildx;
- login DockerHub con secret.
- Build e publish immagini Docker
- build di tutti i microservizi con
Dockerfilepresente; - tagging immagine
lateste, se presente, anche versione darelease.json; - push su DockerHub.
- Build specifica IBKR API Gateway sul server
- copia file necessari (
Dockerfile,release.json, config) sul server; - build/push dell'immagine
ibkr-clientportallato server; - verifica presenza artefatti richiesti (
SW/clientportal.gw.zip).
- Generazione file
.envambiente PAPER
- crea
.envnel runner combinandovarsesecretsGitHub; - imposta
ENV=PAPER(tramitegithub.ref_name).
- Distribuzione asset di deploy sul server PAPER
- copia
.envsu server; - copia
docker-compose.paper.ymledocker-compose.build.yml; - copia script/artefatti restore DB.
- Restore DB condizionale
- cerca dump
Trading_PAPER_*.tar.gz; - se dump nuovo: esegue restore;
- se dump gia ripristinato: salta restore e avvia solo servizi core.
- Avvio servizi con profili dinamici
- esegue
deploy-with-profiles.shsu server; - lo script legge i microservizi abilitati e compone
COMPOSE_PROFILES; - avvia i container con
docker composee i profili calcolati.
- Allineamento finale container e cleanup
docker compose up -d --remove-orphans --no-recreatecon file compose previsti;- prune immagini Docker non usate;
- rimozione
.envdal server a fine run.
Nota pratica
In sintesi: il merge su PAPER e il trigger del deploy. La pipeline prende il codice, costruisce/pusha le immagini, prepara configurazione ambiente e riallinea i container sul server PAPER in modo automatizzato.
Pagine della sezione
Raccomandazioni
- Non condividere segreti tra ambienti diversi.
- Validare sempre in
PAPERprima di promuovere inLIVE. - Tenere
ENVcoerente con file compose/env caricati in fase di bootstrap.