Fog Creek Software
Discussion Board




3-tier development

Maybe kind of an odd question but I haven't stumbled over the answer yet, so I'd like to know what the term "3-tier development" actually means? Thanks in advance :)

Sebastian Wagner
Tuesday, November 12, 2002

3-tier (now usually called n-tier) means that your system is divided into three (or more) logical pieces, ususally (but not always) separate programs or processes.

The first is the database server. The second is one or more application servers. The third is the client.

The benefits of n-tier include (but are not limited to!) lower network traffic between the client and the database and scalability (add more app servers to handle more people).

Tim Sullivan
Tuesday, November 12, 2002

I see. Thanks a lot!

Sebastian Wagner
Tuesday, November 12, 2002

Whena  project is specified as being 3-tier, this is usually analogous to the project being vastly over-engineered, incredibly under-resourced, and constrained in its timeline.

See also: J2EE, EJB.

I Want to Remain Anonymous
Tuesday, November 12, 2002

3-tier generally means:
1.  Late
2.  Overbudget
3.  Buzzword compliant

crusty admin
Tuesday, November 12, 2002

Hey, your going to need those tiers if you work for an agile business with 1 degree of separation...

Guy Incognito
Tuesday, November 12, 2002

I don't.  I work for a conservative company that went down the Windows road and expect a computer to last as long as the mini we had.  Newer is NOT always better or even as good.

crusty admin
Tuesday, November 12, 2002

3 Tiers simply is a result of the trend towards client-server type software.

If we write a payroll system, were do you put all the code that writes the payroll/tax calculations?

You could attempt to write all the payroll and tax calculations on the sql-server, but what language you going to use? T-sql is a not a very good language. Who wants to write and code a payroll system in t-sql. It is crap language for development.

However, if the if front end to the payroll system is a web browser, then you now have to write all the payroll calculation stuff in the browser. What then..java? vbscript?. Gee that is even worse of a pain!

If you go down the browser road, then a change in browsers likely means that your browser code must now bee thrown out. (not to mention that all code now must be sent to the client pc to run).

Hence, what you do is setup a server, but then write  a bunch of payroll code that connects to the database. You can use vb, or some other decent development language here. At least you now get some programmer productivity and a good languange to write code in. You then connect your “front” end to these "code" objects. Hence, these code libary/objects have the business rules/code in them. Hence, 3 tiers:  back (database), middle ware (code/ojebcts), and front end (interface).

In addition, since many companies want to use a palm pilot, web interface etc, then a three tiered approach means you don’t re-write the whole application over each time you add some new technology.

It also means that less business logic is on the surver (hence, you can change server venders easer also). It also means that the front end such as a web browser or whatever (palm pilot) does not have tons of code it also.

A 3 tried design makes a lot of sense when you do not have a good server based development environment.

I would suggest that a very good high quality development language on the server side would really stop this 3 tired stuff.

Albert D. Kallal
Edmonton, Alberta Canada
Kallal@msn.com

Albert D. Kallal
Thursday, November 14, 2002

*  Recent Topics

*  Fog Creek Home