04
Integrazioni
Far parlare i sistemi che avete già, senza rifarli
Un’integrazione non fallisce quando il fornitore risponde «errore». Fallisce quando risponde «va bene» e non fa niente, o quando manda due volte lo stesso ordine. È da lì che partiamo.
- InventarioCosa espone ciascun sistema e — soprattutto — cosa non espone
- ContrattoSchema dei dati e casi d’errore concordati prima di scrivere il codice
- PonteLa traduzione fra i due modelli sta in un solo posto, non sparsa
- RipetibilitàOgni operazione può essere rifatta senza danno: prima o poi verrà rifatta
- Rete di sicurezzaUn controllo periodico riallinea quando l’altro lato tace
- AllarmeSe il collegamento si rompe lo sappiamo noi, non il vostro cliente
Prima si scrive il contratto
Ogni scambio ha uno schema dichiarato: quello che entra viene controllato prima di toccare qualsiasi cosa, quello che esce è documentato. Il vantaggio si vede il giorno dell’integrazione con un sistema di terzi: invece di scoprire i campi a forza di tentativi, c’è un documento che dice cosa arriva e cosa torna — e un test che fallisce se qualcuno lo cambia.
Doppioni, ritenta e rete di sicurezza
I messaggi arrivano doppi, arrivano in ordine sbagliato, o non arrivano. Ogni operazione che cambia lo stato è scritta per poter essere ripetuta senza danno, e ogni coda ha un numero massimo di tentativi con attesa crescente.
Quando il collegamento di un fornitore si dimostra inaffidabile non lo si supplica: gli si affianca un controllo periodico che riallinea lo stato. Costa poco e toglie una classe intera di telefonate.
Sistemi che non vogliono parlare
Gestionali con interfacce degli anni duemila, piattaforme che espongono solo una fetta di quello che serve, portali della pubblica amministrazione che accettano un file e basta: il lavoro è costruire uno strato che normalizza tutto questo in un modello unico, e chiudere le stranezze di ogni fornitore in un solo posto.
Portfolio
Cosa abbiamo fatto, progetto per progetto, su questa competenza.
Manora
API di una piattaforma blockchain
- API documentate con controllo dei dati in ingresso, limiti di frequenza e metriche esposte per il monitoraggio.
- Un processo separato segue la catena blocco per blocco, ricostruisce transazioni e saldi in PostgreSQL e riparte da dove si era fermato.
- Notifiche in più lingue verso l’app, generate dagli eventi letti dalla catena invece che dal percorso di scrittura.
- Node.js
- PostgreSQL
- Redis
- OpenAPI
- Prometheus
BigFishIta
API pubbliche e integrazione con LinkedIn
- API di sola lettura per contenuti e anagrafica, con chiave per azienda: automazioni esterne leggono senza che si apra il database.
- Integrazione con la piattaforma di pubblicazione social: messaggi in ingresso gestiti nei due formati che il fornitore alterna, più un controllo ogni cinque minuti che riallinea stato e commenti quando il collegamento tace.
- Coda di lavori in PostgreSQL con presa esclusiva e ritenta, svuotata sia a intervalli sia subito dopo ogni inserimento.
- Next.js
- PostgreSQL
- webhook
- cron
CocoonServer
Console di gestione per istanze Odoo
- Ogni rotta protetta da un controllo di autorizzazione unico e tipizzato: l’autenticazione non si riscrive a mano in ogni punto, quindi non si può dimenticare.
- Operazioni lunghe trasmesse al browser mentre avvengono, invece di una richiesta che scade nel silenzio.
- Next.js
- Prisma
- API Kubernetes
- SSE
Ti serve questo?
Raccontaci il problema e vi diciamo come lo affronteremmo — e se non è il caso di farlo, ve lo diciamo lo stesso.
Parliamone