Le integrazioni interne dovrebbero utilizzare le nostre API e i webhook aperti?

1

Sfondo

Attualmente sto lavorando per un'azienda di emissione di biglietti relativamente piccola con molti clienti e clienti.

Abbiamo sviluppato un 'open' (come in esso può essere usato da chiunque) API Graphless Serverless in Node.JS. L'API è costituita da servizi a grana fine che implementano la propria sicurezza, esposti utilizzando GraphQL tramite AWS API Gateway. Utilizziamo questa API noi stessi per fornire funzionalità alle nostre applicazioni web React.

Per completare l'API offriamo anche webhook che consentono agli sviluppatori di iscriversi agli eventi chiave nel nostro sistema (ad esempio, qualcuno che acquista un biglietto, crea un evento, ecc.) facilitando l'integrazione in tempo reale con altri sistemi.

Complication

Ora stiamo cercando di integrarci con un popolare prodotto di email marketing dove i dati dei nostri clienti scorreranno automaticamente in mailing list per più account cliente e dovremo decidere se sarebbe meglio sviluppare la logica di integrazione dell'email marketing come soluzione indipendente che si integra con il nostro sistema solo tramite la nostra API e webhooks, OR, come servizi e code all'interno della nostra API ma esponendo solo 'endpoint HTTP' dove necessario per facilitare il flusso di dati dal prodotto di email marketing al nostro sistema.

Immagino che la best practice potrebbe essere che tutto dovrebbe passare attraverso l'API / webhooks ma ci sembra strano / goffo configurare e consumare i nostri webhooks, specialmente quando abbiamo SNS Topics e SQS Queue sul backend per gestire problemi come questo . D'altra parte, se sviluppiamo questo nel nostro back-end rischiamo di nascondere funzionalità preziose che altri sviluppatori potrebbero voler utilizzare in futuro.

Domanda

L'integrazione dovrebbe essere sviluppata nel nostro back-end insieme ai nostri servizi e code esistenti o come prodotto stand-alone che comunica con le nostre API e webhook?

Naturalmente mi piacerebbe anche sapere perché, e mi piacerebbe davvero sapere se qualcuno sviluppa integrazioni che usano i propri webhook, o se i webhook sono solitamente riservati ai clienti.

Grazie in anticipo per qualsiasi consiglio che hai da offrire:)

    
posta Dan 11.09.2018 - 11:55
fonte

1 risposta

4

Generalmente preferisco l'approccio di sviluppare integrazioni sulle mie API pubbliche quando possibile.

Ci sono un paio di motivi per questo:

  • Ti consente di sfruttare le promesse esistenti, quindi non devi preoccuparti di quando devi rielaborare le parti interne del sistema principale.
  • È un buon modo per verificare la qualità della tua API e forse ripulire alcuni flussi di lavoro.
  • Impedisce al sistema centrale di diventare troppo monolitico e non mantenibile. Non sono enorme su "microservices" ma l'imballaggio granulare di base del codice è il n. 1 per la manutenibilità a mio parere.
  • Riduce la quantità di codice mission-critical, dal momento che gli errori nel prodotto integrato sono i peggiori sotto-componenti nel peggiore dei casi e non fanno crollare l'intero sistema.

Buona domanda, mi interessa ascoltare gli altri approcci!

    
risposta data 12.09.2018 - 02:38
fonte

Leggi altre domande sui tag