Lingue: English · Nederlands · Deutsch · Español · Français · Italiano · Português · Papiamentu · Frysk

Indice / Articoli / Collegare Lemmid Store alle cucine

Collegare Lemmid Store alle cucine

Integrarsi con sistemi esterni che non controlli

Pubblicato
Aggiornato
(creato )
Scritto da
Willem L. Middelkoop
Argomenti
dati · design · lemmid-store · reti · programmazione · server · lavoro
Versione umana di questo articolo
https://willem.com/it/2020-06-12_collegare-lemmid-store-alle-cucine/
English
Linking Lemmid Store with kitchens
Nederlands
Lemmid Store koppelen met keukens
Deutsch
Lemmid Store mit Küchen verknüpfen
Español
Conectando Lemmid Store con cocinas
Français
Relier Lemmid Store aux cuisines
Português
Ligar o Lemmid Store às cozinhas
Papiamentu
Konektá Lemmid Store ku kushina
Frysk
Lemmid Store keppelje oan keukens
Lingue
Tradotto dall’originale inglese da un modello linguistico in due passaggi (traduzione e correzione) con un glossario e un controllo ortografico; non ancora letto da un madrelingua.

Riassunto

Per l'app di ordinazione di cibo che sto costruendo, avevo bisogno di progettare un modo affidabile per collegare l'app a sistemi esterni. Questi sistemi esterni sfuggono al mio controllo diretto e comprendono diverse casse, sistemi di gestione delle cucine e stampanti di comande. Continua a leggere per scoprire come si progetta per l'ignoto e l'inaffidabile.

Testo completo

App per ordinare il cibo

L'app che sto costruendo è Lemmid Store, un'app facile da usare che permette alle persone di ordinare (e pagare) cibo da asporto. Trovi tutti gli articoli su Lemmid Store qui.

Lemmid Store: un'app per ordinare cibo da asporto
Lemmid Store: un'app per ordinare cibo da asporto

Sistemi esterni

La necessità di collegarsi a sistemi esterni nasce dal desiderio di integrare l'app di ordinazione nei processi aziendali legati al servizio di consegna del cibo. Pensa a cose come:

  • raccogliere i dati degli ordini nei registri amministrativi (per esempio la contabilità)
  • inoltrare gli ordini alle cucine, dove i pasti vengono preparati e confezionati
  • fornire un accesso facile alle informazioni sul percorso, che mostrano dove va consegnato il cibo
  • programmare gli ordini destinati a consegne successive
Comanda stampata, tramite una connessione esterna, con i dati dettagliati dell'ordine come i modificatori di prodotto (le scelte del cliente per ogni prodotto)
Comanda stampata, tramite una connessione esterna, con i dati dettagliati dell'ordine come i modificatori di prodotto (le scelte del cliente per ogni prodotto)

Le sfide del collegamento a sistemi esterni

Forse non te ne rendi conto, ma collegarsi a sistemi esterni può essere complicato. Se pensi all'app di ordinazione come a una specie di "motore" (come quello della tua auto), in sostanza vuoi integrare questo motore con parti esterne. Come puoi immaginare, non tutte le parti sono ugualmente adatte a stare sotto il cofano, per così dire. A rendere le cose ancora più difficili: non sai con certezza quanto siano affidabili le parti esterne. Devi progettare l'integrazione in modo che parti esterne diverse si possano collegare facilmente e che le prestazioni non dipendano dall'affidabilità di queste parti esterne.

Integrare sistemi esterni nella tua app è come montare su un motore parti di terzi: devi valutare con attenzione compatibilità e affidabilità (immagine di un motore a combustione, pubblico dominio)
Integrare sistemi esterni nella tua app è come montare su un motore parti di terzi: devi valutare con attenzione compatibilità e affidabilità (immagine di un motore a combustione, pubblico dominio)

Come con un motore a combustione, quando integri il tuo software con sistemi esterni devi considerare compatibilità e affidabilità. Non puoi dare per scontato che il software esterno:

  • si adatti perfettamente
  • sia sempre coerente
  • sia sempre disponibile / presente
  • sia affidabile

Per progettare tenendo conto di questa visione piuttosto cupa delle connessioni esterne, ho pensato fosse una buona idea far scaricare al server backend principale della mia app di ordinazione la responsabilità di collegarsi ai sistemi esterni, affidandola a un 'server connettore' costruito apposta. Il server connettore si collega poi in modo indipendente al sistema esterno. In questo modo il server principale comunica solo con parti e sistemi 'di prima parte', riducendo al minimo i rischi di incompatibilità e di possibili fermi.

Separare il server backend principale dai sistemi esterni introducendo un 'server connettore' costruito apposta
Separare il server backend principale dai sistemi esterni introducendo un 'server connettore' costruito apposta

Nella pratica questo significa che il 'server connettore' è in realtà una macchina diversa, con il suo software. Questa separazione ha alcuni vantaggi importanti:

  • sicurezza: il server connettore non conserva un archivio completo di tutti gli ordini, solo gli ordini che devono essere inoltrati a un sistema esterno restano temporaneamente in memoria. Un eventuale problema di sicurezza in un sistema esterno esporrà una quantità minima di dati.
  • si adatta a tutto: il server connettore può gestire molti protocolli diversi e molti modi di collegarsi ai sistemi esterni. Aggiungere connessioni a sistemi esterni è un po' come far 'imparare una nuova lingua' al server. Dato che 'parla già molte lingue', aggiungere un nuovo dialetto o una nuova lingua spesso è semplice. Collegarsi a API esterne diverse è più facile quando hai già tutti i mattoni per (ri)strutturare i dati.
  • gestisce l'inaffidabilità: un semplice meccanismo di coda nel server connettore gli permette di gestire con eleganza eventuali fermi e problemi delle connessioni esterne. Registrando e mettendo in coda per ogni servizio esterno, si può ridurre al minimo l'impatto sulle altre parti e connessioni quando un servizio va giù.

Conclusione

Per quanto sia allettante aggiungere al volo parti nuove e sofisticate alla tua app, devi valutare con attenzione la tua configurazione per essere sicuro che funzioni in modo affidabile.

Progettare software backend che si collega ad API esterne è una sfida. Devi sperare nel meglio, ma progettare per il peggio!

Formati per macchine di questa pagina