When our project start growing, eventually we end up where to put my code delima. It is quite hard organize the code if we are not careful. This is when we can use well known three-tier architecture. It helps us to divide the codebase into three separate layers with clear distinctive responsibilities. But why? Before taking any architectural decision we better ask the question ourself. Why do we need to do this. It is all about simplification. End of the day we need not only a working system, but we need a highly maintainable system. Layer isolation gives us possibility to separate the concerns with clear responsibilities. But why, we can do our changes without inpacting other layers. Any new business requirement will have very small change. There will be zero breaking changes. For an example we should never do any SQL operation in presentation layer. We can build, deploy our layers separately. Introducing our layers Presentation layer - represents user interface.