Integrazione dei dati da fonti eterogenee

1

Un cliente ha richiesto di creare una piattaforma per l'integrazione dei dati dal partner al proprio archivio dati centrale. Questa non sarà una scala "Big Data". I dati di ciascun partner saranno accessibili tramite API RESTful. Poiché le API RESTful non sono basate su standard (almeno non attualmente), divido il problema in tre parti:

  1. Autenticazione / Autorizzazione
  2. Modello di accesso
  3. Struttura dati

Vedo ogni parte come dotata di complessità interne. Abbiamo proposto un modello "driver", in cui ogni tipo di API avrà un driver, che sarà responsabile della cura di questi tre problemi per ciascuna API individualmente.

Se arriva una nuova API, possiamo sviluppare un nuovo driver per questo.

Il problema è che il cliente non desidera richiedere risorse di sviluppo per ogni nuova API.

Ho esaminato strumenti ETL / Data Integration da aziende come Informatica, IBM, ecc. e anche alcune opzioni open source. Nessuno sembra coprire anche una piccola parte delle complessità di ciascuno.

Sto cercando un approccio che possa fornire il tipo di soluzione che il cliente sta cercando, ma ho difficoltà a trovarne uno.

    
posta Elad Lachmi 09.11.2016 - 16:22
fonte

2 risposte

4

Il problema fondamentale qui è che REST non è uno standard. È uno stile architettonico per le API web. Sebbene esistano meccanismi per rendere queste API autodescrittive e esistono formati di descrizione dei servizi Web, la maggior parte delle API non utilizza queste tecniche e perché dovrebbero? È un sacco di cerimonie aziendali con un valore molto basso.

Anche se puoi rappresentare la struttura dell'API, devi ancora assegnare un significato ai dati che stai ricevendo. Non è davvero qualcosa che un computer può capire da solo. Ti consigliamo di guardare l'API che stai adattando e di scrivere la mappatura da solo.

La buona notizia è che questa mappatura dai dati ricevuti al datamodel del cliente può essere spesso abbastanza semplice, al punto che potresti essere in grado di specificarlo in un file di configurazione. Questo è ancora un tipo di programmazione, però. Soprattutto, queste configurazioni devono essere testate molto accuratamente per evitare la perdita di dati e il danneggiamento dei dati.

Se le API e la tua datamodel sono tutte basate su XML, puoi usare XSLT per specificare la maggior parte di queste trasformazioni. Sono sicuro che esiste una tecnologia di trasformazione simile per JSON, ma sarebbe molto più semplice effettuare la trasformazione in JavaScript.

Poiché non esiste una soluzione valida per tutti questi problemi, non sorprende che non abbia trovato alcun prodotto esistente adatto. Questo è un caso classico in cui lo sviluppo di software personalizzato è inevitabile. La cosa divertente è che è probabilmente più economico e più veloce scrivere solo un adattatore per API (e riutilizzare le parti comuni mentre il team di sviluppo rileva le somiglianze tra le API), piuttosto che sviluppare un adattatore generico che può occuparsi di qualsiasi cosa Tali progetti vaghi e complicati comportano un rischio significativamente maggiore e potrebbero non fornire mai alcun valore.

Quali opzioni ti offre? Idealmente, sarai in grado di convincere il cliente a scartare questo sogno di un adattatore universale API. Puoi provare a vestire gli adattatori separati come una "piattaforma integrata" che può essere estesa a nuove API con codice di configurazione "minimo". È possibile scrivere un adattatore generico in grado di gestire i tipi di API attualmente necessari, ma sarebbe necessario ulteriore sviluppo se sono necessari altri tipi. Questo è probabilmente un buon compromesso. Ma qualunque cosa tu faccia, non entrare in un contratto a prezzo fisso per sviluppare quel driver utopico universale - che esisterà sempre e solo nella fantasia del tuo cliente.

    
risposta data 09.11.2016 - 20:23
fonte
0

È difficile dare una risposta solida senza sapere per quale motivo verranno utilizzati i punti finali. Tuttavia, presumo che il cliente voglia semplicemente scaricare i dati in una cosa e quindi essere in grado di guardarli, senza dover scrivere un sacco di codice. Se i dati non sono binari, tutto ciò che devi fare è alzare la testa come Elastic Search, che prenderà praticamente tutto ciò che puoi convertire in JSON e dispone di strumenti decenti basati sul web gratuiti per cercare e visualizzare i dati. Mi rendo conto che riduce drasticamente la quantità di ingegneria del software in questione, ma potrebbe risolvere i problemi del tuo cliente.

    
risposta data 10.11.2016 - 12:50
fonte

Leggi altre domande sui tag