Generalnie przy robieniu aplikacji WEB ( i nie tylko) gdzie dostępności, responsywność i odporność na awarie jest ważniejsza niż globalna spójność.
Na przykład w banku pewnie się przyzwyczaiłeś, że jak zapłacisz kartą debetową, albo z bankomatu to na koncie możesz je jeszcze przez dzień widzieć. Dopiero następnego dnia wchodzisz na konto i przychodzi rozczarowanie - jednak kasa zeszła. Trochę upierdliwe ale da się z tym żyć.
Ale bardzo się wkurzasz jeśli zamierzasz kupić właśnie 4 browary, i chcesz zapłacić kartą, a tu nie ma połączenia z bankiem, albo trwa to 10 minut i blokujesz kasę w TESCO.
W ogólności jest takie twierdzenie CAP, które mówi, że nie możesz mieć zawsze dostępnego, odpornego na hardwarowe błędy transmisji) i spójnego (dane) systemu (dokładnie jak twierdzenie brzmi możesz sprawdzić).
Dalsze powody to czystość i weryfikowalność kodu (i tak osobiście to te 2 dla mnie są najważniejsze )
oraz efektywne wykorzystanie hardware ( minimalizacja cache miss na L1 i L2).