Prestazioni di una API o di più API

0

Stavo avendo una conversazione con un collega e sebbene la mia opinione avesse un senso per me, non ero in grado di sostenerlo. Sono in procinto di creare un'API che verrà colpita centinaia di migliaia di volte al giorno. È abbastanza semplice e farà solo alcuni inserimenti in un database relazionale. Ci sono essenzialmente 3 funzioni che avrei bisogno di creare. La domanda è: cosa avrebbe prestazioni migliori, creando un'unica API con diversi controller (utilizzando .NET Web API o NodeJS qualcosa del genere) o 3 API diverse.

Il mio pensiero è quello, ad esempio con .NET Web API, non importa se ci sono 1 o 3 sono tutti ospitati e utilizzano le stesse risorse. Il suo pensiero era che avere 3 API sarebbe 3 volte più veloce perché avrebbe avuto 3 volte le risorse. Semplicemente non avevo la prova per confutare ciò.

    
posta user1767270 17.04.2014 - 07:20
fonte

1 risposta

1

Penso che il costo delle prestazioni di 1 copia rispetto a 3 per un'API colpita "centinaia di migliaia di volte al giorno" sia abbastanza trascurabile; In entrambi i casi, entrambi devono condividere alcune delle stesse risorse ed essere soggetti agli stessi potenziali colli di bottiglia.

Quello che mi interessa maggiormente è il sovraccarico cognitivo aggiuntivo di avere 3 API, in termini di manutenzione del server, manutenzione della base di codice e sviluppo per i consumatori delle API. Indipendentemente dal fatto che avere 3 API distinte dia qualche tipo di incremento delle prestazioni, mi chiederei se abbia davvero senso.

Ad esempio, avere create , read e update azioni per una risorsa su API separate (e per separato I significa domini diversi (sotto), ad esempio readApi.example.com contro writeApi.example.com ) non ha senso. L'unica cosa che fa è costringere gli sviluppatori a ricordare che leggere e scrivere una risorsa vivono in luoghi diversi e costringerti a documentare questo fatto.

Se si scopre che un'azione è molto più costosa di altre, o è una risorsa per le risorse, potresti prendere in considerazione l'API dietro un sistema di bilanciamento del carico che indirizza tutte le richieste per quell'azione a un server diverso, ma in modo cruciale mantiene intatti gli URI API. Sospetto che questo potrebbe effettivamente essere ciò che il tuo collega ha significato avendo più di 1 API.

Tuttavia, nel caso di una coppia di API per sottosistemi diversi, che capita di condividere un database, le API separate potrebbero avere senso.

    
risposta data 17.04.2014 - 09:47
fonte

Leggi altre domande sui tag