Come posso centralizzare l'accesso ai dati tra un servizio web php e un servizio API JSON nodejs?

1

Ho un'applicazione web php scritta con architettura tradizionale con modelli, controller e modelli ORM.

Ho anche un servizio web JSON API nodejs che accetta le connessioni in entrata e risponde con le risposte JSON

Entrambi i servizi operano sullo stesso database e offrono funzionalità simili ma differiscono nel tipo di risposta e nei percorsi diversi.

Questo introduce problemi nel mantenere aggiornati entrambi i servizi ai più recenti requisiti aziendali e alle discrepanze che si verificano tra i servizi.

La mia domanda è quali sono le mie migliori opzioni per mantenere sincronizzati entrambi i servizi?

    
posta Backend Developer 92 22.05.2017 - 13:15
fonte

2 risposte

1

My question is what are my best options to keep both services in sync?

»Aiuta il dottore, mi colpisco con questo skrewdriver nei miei occhi e fa molto male! Come posso continuare in questo modo, che fa meno male? «

Vorrei raccomandare, smettere di fare, cosa stai facendo! Immediatamente!

Chiaramente: questa installazione puzza di guai e dolore.

Both Services operate on the same database and provide similar functionality but they differ in the response type and different routes.

1- the API was written in NodeJs becuase there were plans to migrate from PHP. 2- the code base is medium-large 3- re-writing in PHP is possible but it is alot of work.

Questo è sbagliato per molte ragioni.

Ma quello che mi meraviglia è che non stai facendo l'ovvio:

  • Definisci un servizio con una sola API come verità e ritira l'altro

Anche se la tua riscrittura ti costa un po 'di sudore e lacrime, pensa al sudore e alle lacrime che non spenderesti più tardi, affrontando un casino. Non esiste un modo semplice, ma tutto sarà più semplice rispetto a una configurazione non funzionante.

Purtroppo, non ci stai dicendo ulteriori dettagli, quindi il consiglio è generale.

    
risposta data 21.07.2017 - 17:02
fonte
0

Creare un singolo servizio di accesso ai dati che esponga gli oggetti necessari e che entrambi i progetti chiamino questo servizio per l'accesso al database. Il trucco per farlo è non solo copiare tutti i metodi di accesso ai dati da ciascun progetto e aggiungerli a un servizio dati, perché in questo modo è stato aggiunto altro overhead e complessità senza alcun guadagno. dove esiste già il tuo accesso ai dati esistenti diventerebbe un livello di trasformazione dei dati che ottiene i dati da servizi più generali e lo modella nel modo in cui l'app ha bisogno.

L'idea è di creare un singolo punto di accesso che risponda a ciò di cui hai bisogno in modo che possa essere utilizzato direttamente o con modifiche minime dal consumo delle app. L'unico modo per assicurarsi sinceramente che le tue app siano sincronizzate è quello di assicurarsi che chiamino lo stesso codice, e anche in questo caso hai ancora bisogno della disciplina per non aggiungere la logica a ciascuna app separatamente che non dovrebbe appartenere a questa. Questa è un'importante modifica da implementare, ma è molto più semplice se le tue app esistenti stanno già isolando correttamente il proprio accesso ai dati.

    
risposta data 22.05.2017 - 14:07
fonte

Leggi altre domande sui tag