BroadNet
Il giornaleIngegneria
Ingegneria

Una matrice decisionale aziendale per l'integrazione SMS, e perché usare entrambi i protocolli.

REST API è semplice, stateless e basato su webhook. SMPP è caratterizzato da un'elevata densità di throughput, bassa latenza ed efficienza binaria. Una matrice decisionale e le argomentazioni a favore dell'utilizzo di entrambi.

BroadNet Engineering
11 min di lettura
Ingegneria · Numero 43
11 min di lettura

a maggior parte delle integrazioni di messaggistica aziendale inizia con un'unica domanda tecnica: API REST o SMPP? La risposta sbagliata non è catastrofica (entrambi possono funzionare), ma la risposta giusta consente di risparmiare mesi di tempo di integrazione, a volte ordini di grandezza di costi operativi, e quel tipo di problemi di latenza sottili che si manifestano solo sotto carico. Questa è la versione estesa del dibattito decisionale: per cosa è effettivamente ottimizzato ciascun protocollo, le quattro dimensioni che dovrebbero guidare la scelta e i motivi per cui è consigliabile utilizzarli entrambi nello stesso stack aziendale.

Due protocolli, due centri di progettazione differenti

Un'API REST per SMS è un'interfaccia HTTPS senza stato. Si invia un payload JSON a un URL tramite POST, il server restituisce un codice di stato e la connessione può essere chiusa. L'autenticazione avviene tramite un token bearer o una richiesta firmata; i payload sono in formato JSON; le conferme di ricezione vengono inviate tramite webhook ospitati dal cliente. È il linguaggio di progettazione che gli sviluppatori di applicazioni moderne già conoscono: richiesta, risposta, riprova in caso di errore 5xx, analisi delle intestazioni.

SMPP 3.4 è un protocollo binario con stato su un socket TCP persistente. Il client si connette una sola volta con ID di sistema, password, tipo di sistema, intervallo di indirizzi e tipo di connessione (trasmettitore, ricevitore, ricetrasmettitore). I messaggi fluiscono come PDU (submit_sm per l'invio, deliver_sm per la ricezione e DLR) in entrambe le direzioni sullo stesso socket, identificati da numeri di sequenza. I keepalive (enquire_link) mantengono la sessione; la gestione delle finestre regola la concorrenza. La sessione può rimanere attiva per giorni.

Questa differenza architetturale — HTTP, che è di breve durata e senza stato, rispetto a TCP, che è di lunga durata e con stato — è alla base di ogni compromesso pratico descritto di seguito.

Le quattro dimensioni che lo determinano

1. Throughput e latenza

HTTPS prevede il pagamento dell'handshake TCP più l'handshake TLS per ogni connessione, a meno che il client non utilizzi un pool di connessioni e un riutilizzo più intensivi. Anche con un pooling aggressivo, l'overhead per messaggio è significativo ad alti TPS, anche se BroadNet non imposta nessun limite di velocità fisso per account su REST (vedi limiti di velocità dell'API). SMPP paga l'handshake esattamente una volta per ogni bind e poi trasmette le PDU senza costi di connessione per messaggio; mantenere centinaia o poche migliaia di TPS su un singolo bind è una pratica comune, limitata dalla dimensione della finestra negoziata e dall'SMSC di destinazione, piuttosto che dalla configurazione della connessione. Per il traffico critico in termini di latenza, SMPP elimina anche l'handshake TLS dal percorso critico: un OTP inviato tramite un bind SMPP "caldo" può raggiungere l'SMSC dell'operatore di destinazione in meno di 50 ms; lo stesso OTP inviato tramite HTTPS paga l'handshake ogni volta, a meno che la connessione non venga riutilizzata, operazione che il codice applicativo spesso non esegue correttamente.

2. Ricevute di consegna

Su SMPP, le conferme di consegna arrivano come PDU deliver_sm sullo stesso bind, in banda, in tempo reale. L'applicazione le legge dal socket; non è richiesta alcuna infrastruttura pubblica. Su HTTPS, i DLR sono callback webhook che il cliente deve ricevere su un endpoint HTTPS pubblico e ad alta disponibilità, per poi confrontarli con i messaggi inviati. Tale endpoint rappresenta un vero e proprio impegno operativo: gestione dei certificati, gestione dei tentativi in caso di indisponibilità temporanea, protezione dagli attacchi di replay (verificare ogni callback: una firma HMAC con segreto condiviso e timestamp se il provider firma i callback, oppure una allowlist di IP se non lo fa - vedi firma DLR HMAC-SHA256) e elaborazione idempotente, poiché i provider invieranno un webhook più di una volta in caso di tentativi.

3. Superficie operativa

Un'integrazione REST è qualcosa che uno sviluppatore backend implementa in un pomeriggio e poi in gran parte dimentica. La libreria client HTTP gestisce i tentativi di ripetizione, il framework gestisce l'endpoint webhook e l'osservabilità è quella che l'applicazione già possiede. Un'integrazione SMPP è un'infrastruttura: il client deve gestire il ciclo di vita del bind (bind, rebind in caso di disconnessione, backoff esponenziale, evitare di forzare un SMSC non funzionante), i keepalive enquire_link a cadenza regolare con rilevamento del timeout, il tracciamento del numero di sequenza per la correlazione delle PDU, la gestione delle finestre per submit_sm in uscita, la disconnessione controllata allo spegnimento e, idealmente, il failover multi-bind per l'alta disponibilità. Si tratta di una responsabilità ingegneristica continua, non di un'integrazione una tantum. Molti team che soddisfano i criteri tecnici per SMPP sono serviti meglio da HTTPS semplicemente perché non vogliono uno stack di protocolli di telecomunicazione persistente nel loro inventario di servizi.

4. Ergonomia e idempotenza dello sviluppatore

Molte API REST moderne offrono intestazioni Idempotency-Key, paginazione standardizzata, client di tipo OpenAPI in tutti i principali linguaggi di programmazione, documentazione per webhook firmati, ambienti sandbox e dashboard per sviluppatori. SMPP non possiede nessuna di queste caratteristiche: è una specifica binaria degli anni '90 con una semantica più ricca per il settore delle telecomunicazioni, ma un'esperienza di sviluppo più scarna. L'idempotenza su SMPP esiste solo come convenzione definita dal cliente (in genere un riferimento univoco al messaggio nei dati utente); la protezione dagli attacchi di replay è compito dell'applicazione; gli ambienti sandbox devono essere creati dal provider anziché essere inclusi nel protocollo. Nemmeno tutti i provider REST offrono tutto questo: l'API REST di BroadNet non accetta una chiave di idempotenza — i retry sicuri si basano sull'ID messaggio che restituisce e su un controllo dello stato prima di qualsiasi reinvio (vedi idempotenza e retry sicuri) — e l'accesso di prova avviene sull'API di produzione con credenziali di test, non in una sandbox separata.

Una semplice matrice decisionale

Se la tua situazione è…Usa questo
Traffico inferiore a diverse centinaia di messaggi al secondo, carico di lavoro modellato sull'applicazione, team ridottoAPI REST
Diverse centinaia di messaggi al secondo in modo sostenuto, o necessità di bind persistenti; misto transazionale e di massaSMPP 3.4 (o entrambi)
OTP a latenza critica a qualsiasi volumeSMPP per OTP; REST per tutto il resto.
Sei un aggregatore di routing per i clienti a valleSMPP, periodo
Disponi di un'infrastruttura SMS esistente basata su SMPPMantieni SMPP; non migrare senza motivo.
Desideri un tempo di risposta rapido al primo messaggio e non disponi di un team operativo.API REST
È necessaria una solida sicurezza per i webhook con callback firmatiAPI REST; verifica dei callback alla ricezione (HMAC se il provider li firma, oppure allowlist di IP)
È necessario mantenere aperte conversazioni bidirezionali costanti.SMPP, associazione del ricetrasmettitore

Quando eseguire entrambi

La scelta non è sempre un'aut aut. Un modello aziendale comune prevede: SMPP per i carichi di lavoro critici in termini di volume e latenza (OTP, campagne di massa, picchi di marketing), REST per tutto il resto (strumenti interni a basso volume, avvisi operativi ad hoc, integrazioni con prodotti SaaS che già utilizzano HTTP). Il costo per messaggio è identico su una rete di provider progettata correttamente, quindi l'utilizzo di entrambi non penalizza in termini di costi unitari e, inoltre, dare agli sviluppatori la possibilità di utilizzare REST per i piccoli progetti di cui sono responsabili, mentre il team operativo utilizza SMPP per i progetti più grandi, rispetta la realtà organizzativa a team della maggior parte delle aziende.

Le squadre di trappole rientrano in: RIPOSO su scala SMPP

L'errore più comune è scegliere REST perché è più semplice e poi aumentare il carico di lavoro oltre la capacità di REST. I sintomi compaiono gradualmente: latenza p95 in aumento, timeout occasionali durante i picchi di traffico, esaurimento del pool di connessioni in uscita dell'applicazione, tentativi di ritrasmissione che si traducono in invii duplicati. La soluzione non è "ottimizzare il client HTTP in modo più stringente": non appena invii in modo continuativo diverse centinaia di messaggi al secondo, la risposta corretta è migrare il percorso ad alto volume a SMPP e mantenere REST per tutto il resto. La migrazione va effettuata prima che il carico di lavoro la renda urgente, non durante un'interruzione del servizio.

La trappola dall'altra parte: SMPP senza utilizzarlo

L'errore opposto consiste nello scegliere SMPP per il caso di throughput elevato e poi gestirlo in modo superficiale: un singolo binding, nessuna logica di rebind, nessun monitoraggio keepalive, nessun failover multi-regione. Il primo riavvio dell'SMSC, il primo problema di rete, la prima finestra di manutenzione del provider provocano un'interruzione silenziosa perché il binding si interrompe e nessuno lo controlla. SMPP premia la disciplina operativa; senza di essa, REST è sostanzialmente più sicuro.

Sicurezza e autenticazione moderna

Le integrazioni REST dovrebbero utilizzare token bearer o credenziali client OAuth2 con rotazione dei token, trasporto su TLS 1.3 e callback webhook verificati per i DLR in entrata (una firma HMAC con segreto condiviso se il provider firma i callback, oppure una allowlist di IP). SMPP dovrebbe essere su TLS 1.3 — SMPP in chiaro su Internet pubblico non è accettabile per nessuna implementazione A2P moderna, indipendentemente da ciò che consente la specifica — con ID di sistema e password ruotati regolarmente e whitelist di IP sorgente presso il provider. Nessuno dei due protocolli esenta il cliente dalle norme di sicurezza di base; entrambi possono essere gestiti secondo gli standard aziendali.

BroadNet espone lo stesso motore di routing, di deliverability e di conformità dell'ID mittente sia tramite SMS API che SMPP 3.4: la scelta del protocollo modifica la struttura dell'integrazione, non la qualità del messaggio. Per il percorso REST sono disponibili credenziali di test sull'endpoint di produzione, un SDK TypeScript ufficiale e una specifica OpenAPI 3.1; credenziali SMPP con endpoint TLS 1.3 e failover a doppia regione per il percorso binario.

Come decidere concretamente, in tre domande

  1. Qual è il picco realistico di TPS per il carico di lavoro nei prossimi 24 mesi, non la media ideale? REST gestisce comodamente il traffico modellato sull'applicazione (BroadNet non imposta nessun limite di velocità fisso per account); pianifica SMPP se invii in modo continuativo diverse centinaia di messaggi al secondo o ti servono bind persistenti; vicino a quella soglia, valuta la criticità della latenza e la propensione del team all'utilizzo di protocolli persistenti.
  2. Il vostro team desidera gestire un client TCP persistente con stato, ciclo di vita di binding, keep-alive e logica di riconnessione? Un onesto "no" è una risposta perfettamente valida e indica la soluzione ideale per REST.
  3. Esiste un carico di lavoro critico in termini di latenza (OTP, avvisi in tempo reale) e molti altri occasionali? Il modello a due protocolli è adatto: SMPP per i carichi di lavoro critici, REST per gli altri.

Esempio concreto: un tipico profilo fintech

Consideriamo una fintech regionale con tre carichi di lavoro di messaggistica: OTP per l'accesso e la conferma delle transazioni (alto volume, latenza critica, transazionale), assistenza clienti in entrata e in uscita (basso volume, conversazionale, bidirezionale) e campagne di marketing (picchi occasionali, a batch). L'architettura pragmatica: un transceiver SMPP per l'OTP (un bind primario, uno di backup in una regione diversa, failover automatico); API REST per l'assistenza clienti (un servizio basato su webhook semplifica la gestione delle chiamate in entrata); trasmettitore SMPP per le campagne di marketing quando si verificano (i picchi sono esattamente il caso in cui il costo dell'handshake per messaggio su REST diventa oneroso). Tre modelli di integrazione, due protocolli, tutti sullo stesso provider e prezzi unitari identici su una rete di provider ragionevole. Il team possiede uno stack persistente (il client SMPP) e riutilizza HTTP standard per tutto il resto.

Percorso migratorio tra i due

I team che iniziano con REST e poi lo superano non hanno bisogno di migrare tutto in un unico progetto. Il percorso più comune è il seguente: introdurre SMPP per il carico di lavoro che ne ha più bisogno (in genere OTP), testare il ciclo di vita del binding e la logica di riconnessione in un ambiente a basso rischio, eseguire SMPP e REST in parallelo per uno o due mesi monitorando la qualità della consegna e la latenza su entrambi, quindi migrare ulteriori carichi di lavoro su SMPP man mano che la fiducia del team nel protocollo cresce. Andare nella direzione opposta (da SMPP a REST) è più raro e quasi sempre indica un team che vuole abbandonare la gestione operativa dei protocolli di telecomunicazione a favore della semplicità di HTTP: anche questa è una scelta valida e fattibile carico di lavoro per carico di lavoro.

Letture correlate

Per il confronto completo punto per punto, vedi SMPP o API HTTP (REST) per gli SMS.

È stato utile?

Come scriviamo e revisioniamo i contenuti

Scritto da

BroadNet Engineering

L'ingegneria gestisce la rete: i binding SMPP , gli stack SS7 , i motori di routing, la noiosa infrastruttura che rende possibili un miliardo di messaggi al mese. Scrivono qui quando c'è qualcosa che vale la pena di annotare.

La rivista, via e-mail

Un saggio al mese. Nient'altro.

Iscriviti e ti invieremo il prossimo articolo – su ingegneria, regolamentazione o industria – il giorno stesso della sua pubblicazione. Nessuna campagna di email marketing, nessuna presentazione di prodotti, nessuna condivisione con terze parti. Puoi disiscriverti con un solo clic.

Inviamo un'email al mese. Puoi disiscriverti in qualsiasi momento. Consulta la nostra informativa sulla privacy.

Cosa otterrai
  • Articolo di lunga durata, non un semplice titolo acchiappa-link.
    Da sei a undici minuti di scrittura mirata su un singolo argomento.
  • Scritto dagli operatori
    Ingegneri, responsabili degli aspetti normativi e redattori di prodotto interni.
  • Consapevole della regione
    Una prospettiva basata sulla regione MENA in merito a regolatori, operatori e mix di canali.
  • Una volta al mese
    Niente campagne a goccia. Un solo saggio quando ce n'è uno da condividere.
Smetti di leggere. Inizia a spedire.

Gran parte di ciò che scriviamo l'abbiamo imparato durante la produzione.

Se questo articolo ti ha fatto annuire, probabilmente dovremmo parlarne. Descrivi il caso d'uso, i volumi, i mercati: ti forniremo informazioni su come procedere, sui prezzi e su un cliente di riferimento che potrai contattare.

$ curl -X POST https://api.broadnet.me/sms/sendSms