Dividing software into separate layers or tiers is one of the most fundamental principles within software engineering. We all know the beautiful schemas vendors create in order to show the modularity of their software. And anybody will agree that a layer can abstract away a lot of underlying complexity to the rest of a system.... Continue Reading →