Pokud nad Vaší otázkou budu přemýšlet z hlediska mého projektu, který je použit na microservices, tak mi tolik vrstev abstrakce dávají smysl. Každá "servisa" má tuto architekturu. Každá může použít vhodnější typ databáze a přitom si zachovat velmi podobný tvar jako jiná "servisa". Programátor se zorientuje dobře v každé z nich a dokumentaci knihovny bude řešit až pokud se bude potázet s konkrétní technologií.
Pokud vytvoříme klubko špaget s použitím různých technologií a kód nebude mít řád podpořený přehlednou abstrakcí(architekturou), tak i když jsou technologie dobře zdokumentovány, tak si myslím, že se časově dobereme k horšímu výsledku.
Nehledě na to, že pokud se pokusíme na takový kód napsat unit test, tak spíše selžeme.