Logistica del team per creare un'API del servizio cloud da un prototipo Matlab

0

Il mio obiettivo è quello di passare da un prototipo software algoritmicamente valido a un prodotto API SaaS.

Per dare un esempio simile e illustrativo, supponiamo di avere un software di riconoscimento facciale scalabile prototipato in un linguaggio di alto livello come Matlab; questo algoritmo acquisisce un'immagine del mondo reale come input e rileva e riconosce, diciamo, volti celebrità. È preciso e ottimamente ottimizzato, con circa 2 secondi per immagine su un processore a 2,4 GHz. In C, dovrebbe eseguire ~ 0,5 secondi per immagine.

L'obiettivo è quello di passare da un prototipo Matlab a un servizio API basato su cloud in grado di scalare enormi quantità di dati di immagine. Un prodotto di prova iniziale dovrebbe essere in grado di gestire ~ 100 chiamate al secondo, ma a lungo termine dovrebbe essere in grado di gestire > 10.000 chiamate al secondo. Questo alla fine sarà combinato con un'applicazione di scansione web per ridimensionare tutti i dati dell'immagine del web.

Dato il codice sorgente del prototipo, come costruire, testare e distribuire questo in modo scalabile?

Il mio background è matematica e algoritmi piuttosto che software e ingegneria dei sistemi.

    
posta user124370 24.03.2014 - 05:44
fonte

1 risposta

0

Devi imparare o lavorare con qualcuno esperto nello sviluppo web completo dello stack . Per condividere la mia esperienza, il mio team e io abbiamo creato SaturnAPI usando Octave (il clone Matlab open-source). Fornisce l'hosting per i tuoi script e un'API RESTful che puoi utilizzare per accedervi. Ecco una panoramica di come funziona:

Iltuoscriptèospitatosulserver SaturnAPI e accetta SaturnParams come input, che viene fornito dalla richiesta HTTP in arrivo dal tuo web app. SaturnParams può essere una stringa, un numero, un array o un array di celle. L'array di celle consente di passare vari tipi di dati nell'API.

Una volta all'interno del server, lo script viene eseguito con SaturnParams e l'output viene inviato come risposta HTTP al server di origine (ad es. la tua app Web). Puoi vedere che con questo metodo puoi usare qualunque script tu voglia.

Compiere tutto ciò non era affatto una cosa da poco, dato che devi configurare il server web per accettare e rispondere alle richieste HTTP. È quindi necessario creare un'interfaccia per consentire agli utenti di caricare e testare i propri script, il che implica la gestione di un database sul server. Il modo in cui rendi tutto scalabile il bilanciamento del carico è di per sé un'impresa completa. Le tecnologie complessive che usiamo per SaturnAPI sono esattamente ciò che stai chiedendo. Se hai ulteriori domande, sono lieto di condividere altro.

    
risposta data 22.07.2015 - 08:54
fonte

Leggi altre domande sui tag