API: molti minimi o pochi più grandi

-1

Attualmente sto lavorando a un progetto / prodotto che consiste di ~ 60 API REST e un client (app Web)

Trovo molti aspetti negativi di questo progetto, e non così tanti vantaggi, e mi piacerebbe sapere se questa è chiaramente una cattiva pratica dal punto di vista architettonico o solo cattiva esecuzione. (E se può essere migliorato senza cambiare il design)

Pro :

  • Deploy
    • La distribuzione è molto semplice.
    • Se qualcosa non funziona, potrebbe non essere critico.
  • Relazione con i dati
    • Ogni API è strettamente correlata al suo "modello dati"

Contro :

  • Memoria.
    • Ogni API serve il proprio server http, in media a ~ 75mb inattivo.
    • La maggior parte delle API ha almeno 2 "worker" (emitter / handler RabbitMQ) per interagire con altri sistemi.
  • Sviluppo costoso
    • La maggior parte delle API interagiscono tra loro e persino caricano il codice lato client.
    • Gli errori sono difficili da trovare e facili da introdurre.
    • Alcuni moduli sono usati in ogni API, cambiando questi potrebbe significare cambiare anche i 60 repository.
    • Lotti di "boilerplate" ripetuti nella maggior parte dei progetti.
posta 10.08.2018 - 21:08
fonte

1 risposta

1

Sembra una cattiva esecuzione. La memoria / hardware non è un grosso problema, quindi mi concentrerò sulla parte "Expensive Development".

La maggior parte delle API interagiscono tra loro e persino caricano il codice lato client. Sembra una bandiera rossa. Perché le API interagiscono tra loro? Idealmente dovrebbero essere logicamente discreti. Se c'è molta interdipendenza, sembra che le cose non siano state raggruppate in modo logico correttamente. Il caricamento del codice lato client è un'altra bandiera rossa.

Gli errori sono difficili da trovare e facili da introdurre. I tuoi servizi non dispongono di una propria registrazione?

Alcuni moduli sono utilizzati in ogni API, cambiando questi potrebbe significare cambiare anche i 60 repository. È possibile introdurre il controllo delle versioni dei moduli per risolvere questo problema.

Un sacco di "boilerplate" ripetuto nella maggior parte dei progetti. Verifica se puoi suddividerli nelle librerie

    
risposta data 11.08.2018 - 03:11
fonte

Leggi altre domande sui tag