This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
According to some stuffs, the 2-tier architecture has some faults, but following two confuse me: 1) Potential network bottleneck; 2) poor scalability. As the business is tightly coupled with data store.
To 1), I can't understand at all. Why do there exist this problem? In comparison with the 3-tier architecture, here is no any special case when clients connect server, whatever you use 2-tier or 3-tier, the network traffic from client to server is equivalent.
as to 2), it make more confusion to me, in terms of the the book Sun Certified Enterprise Architect Study Guide, here are two ways to improve the scalability of system, first is Vertical, such as increasing CPU and momery, second is horizontal, such as cluster technique. But, in 2-tier, it can be added CPU or hot backup server to improve performance, so as to achieve the goal of scalability.
Who can give me a sound explanation? I will thanks a lot
[ April 01, 2005: Message edited by: Along huang ] [ April 01, 2005: Message edited by: Along huang ]
I'm not sure where you ran across those, but here are my thoughts on what the source may be thinking:
> 1) Potential network bottleneck;
I agree with you that there isn't really a difference in the network communication between client and the x-tier application, but they may be referring to potential network limitations between the tiers of the 2-tier application vs. the tiers of an n-tier application; there are inherently less network 'hops' or 'paths' between tiers in a 2-tier application vs. an n-tier application and if you assume the same horizontal scalability in each tier, there would be more network traffic on each of the between-tier hops/paths in a 2-tier app
> 2) poor scalability. As the business is tightly coupled with data store.
I agree with you that the typical Sun definition of hardware 'scalability' is not what they are referring to - I think they're referring to scalability of the components or modules of the application itself, as the application is not quite as modular or loosely-coupled as is preferred (with only 2 tiers, the business logic is inherently more tightly-coupled with the data store than in an application with > 2 tiers)
N-Tier would have additional network overhead due to the multiple tiers. And when 2-tier is compared with n-tier the network overhead is less in 2 tier.
But Application scales in n-tier architecture. For example, Let us say your database server can accept at the max 1000 connections at any time. But system users are 500 now and can grow @50% per year. In 2 tier architecture- by the end of the second year you should scale your database server vertically to serve increased users.
But in n-tier architectures, you can serve more users with less resources effectively,efficiently and transperently by pooling the resources at a single point and sharing them across.
When scalability is in the subject of discussion, there are obvious hardware limitations to vertical sclaing. And of course when you see the cost and ROI(return on invest), n-tier wins.
Thanks,<br />Bhanu<br />SCEA Step-I<br />SCBCD for J2EE 1.3<br />SCJP1.4