What are the examples where we really need 3 Tier Architecture ? Can Most of the Application which are using 3 Tier Architecture be done using 2 Tier Architecture ?
Some cases that may drive you move from 2-tier to 3-tier:
1- Your system has different type of clients (Desktop, Web, Mobile, etc.)
2- Your system has heterogeneous type of data sources (eg. non-DB resources)
3- Your system needs specific client/server communication protocol
4- You want to hide and secure data tier from client
5- You need scalability by cluster of servers and load balancing
6- You need server to server integration that is transparent for client
7- You want to use shared resources for number of clients (such as DB Connection)
8- You want to simplify system maintenance by decoupling the client from db server or group of servers
9- You want to put the business logic into a separate tier on specific platform
10- You want to reduce traffic between client and DB