Mi stavo chiedendo se qualche guru del design là fuori potesse aiutarmi a capire come le grandi aziende web progettino i loro servizi per essere altamente disponibili. Lo scenario a cui sto pensando è:
- Il client A si connette al servizio A
- Il client A invia richieste N
- Nella richiesta N + 1, il servizio A esplode
- Il Cliente A si riconnette al Servizio B
- I servizi di servizio B richiedono N + 1 in poi
L'unico progetto a cui potevo pensare era l'utilizzo di un servizio "metadati" / "discovery" di cui il Cliente potesse essere a conoscenza statica. Questo servizio fornirebbe informazioni sul miglior servizio disponibile, al quale il cliente si collegherebbe e inizierebbe le sue richieste, e ricercherà il servizio "metadati" quando realizzerà che il servizio A è andato giù. Il servizio applicativo ora è altamente disponibile, ma ...
... il problema lampante è che il servizio "metadati" / "discovery" è statico, verrà sottoposto a un carico elevato e non è altamente disponibile, il che significa che sconfigge l'intero scopo. Suppongo che potrei lanciare un sacco di hardware sotto questo servizio, ma questa non è una soluzione molto buona.
Come dovrei andare a progettare un vero servizio web altamente disponibile?