Nella sua grande tesi, Benjamin Erb parla di scalabilità, affidabilità e disponibilità :
The essential technique for ensuring availability and reliability is redundancy and the overprovisioning of resources. From a methodical viewpoint, this is very similar to horizontal scaling. However, it is important not to conflate scalability and availability. Spare resources allocated for availability and failover can not be used for achieving scalability at the same time. Otherwise, only one requirement can be guaranteed at once.
Ciò significa che se voglio raggiungere la disponibilità di una risorsa A, devo implementare, ad esempio, un cluster con 2 nodi che servono questa risorsa, ma il carico andrà sempre al primo nodo (senza bilanciamento del carico!) e se il nodo si blocca, il carico verrà indirizzato al secondo nodo?
Se il carico aumenta, non riesco a distribuire il carico tra i due nodi?
Se distribuisco il carico tra i due nodi e uno si blocca, tutto il carico andrà al nodo rimanente (magari applicando qualche strategia per la contropressione) e userò il secondo nodo sia per la disponibilità che per la scalabilità?