Two birds with one stone: Understanding 3-tier client/server architectures
Here we will use conceptual models to illustrate a couple major principles of software architecture. By now you should be getting a feel for what a sentence like this means. If you don't please make a comment here. No question is a silly one and we all benefit from the open airing of questions and concerns.
To review, a conceptual model is nothing more than a prototypical drawing representing an actual implementation of something (in our case a software system). Just as related-but-distinct plans are drawn up by architects and engineers for each element in the building of a new facility (the plumbing & heating specs, the architectural drawing, health & safety guidelines, the regulation and compliance measures, the electrical system, and so on), a different conceptual model can be drawn for all the different ways in which a system might be viewed (a process view, data view, network view, a user-interface view, etc...). In the process of designing, troubleshooting, or just discussing an application, each specific model may be used and "drawn" in the abstract to hide irrelevant details which would make it impossible to focus on a specific part of the design. The implementation of a software system is both designed and built upon an architecture. And hopefully that architecture is based on sound principles which give our creation distinct advantages such as quality and strength, cost-effectiveness, performance, ease-of-use, flexibility, scalability, and interoperability.
Here, using conceptual models, we take a closer look at two important and interrelated principles of software design: client/server and 3-tier architectures.
Both the client/server and 3-tier model have become central concepts of computer networking. Here are some pointers on the 3-tier client/server architecture which identify the key characteristics of both.
Remember a client/server architecture refers to a resource sharing strategy whereby one component, a server, provides specialized services on an as needed basis to other components, clients.
A three-tier architecture is one that groups the components within a system by function in three standard groupings: the presentation layer as it's called which consists of components which manage user interactions, the application layer which consists of components which manage the overal flow and control of the system and its components, and the data layer which is dedicated to managing the data which is needed by and supports the system.
Here are some examples of the two architectures co-existing.
By now you may be noticing....the principles of modularity, in large part, are the same that make the 3-tier client/server architecture so effective. Separating components of an application by their "class" enhances the application's scalability and flexibility. It makes it easier to manage as it allows the components to worry only about specialized tasks. So the people that look after the pieces also can worry only about their specialized task. Overall this makes for more stable, reliable, and reusable software. And given that we're talking about distributed software - that which is engaged and deployed using components which may be spread all over the network this separation is especially efficient - it makes for good use of network resources.
The Web itself is designed on a client/server architecture and most web-based applications use a 3-tier approach.
This post shows a three-tier architecture in the form of a web-based commerce application.
so basically a three-tier architecture is made of a group of components thats found inside of a computer /technological system. There is the presentation layer and it manages how the user of this technology interact with other components of then there is the application this help with the production or as Mark put it the flow and control of data within its component and finally the data layer managing data needed to support the system.
So if you think about this its just like building a house. You need to go to the architect to get the blue prints of the layout of how the house will look then you will need to apply the necessary strategies to build the house then you need the foundation to secure the structure.... does this make sense???
Posted by: Laura | Oct 30, 2007 11:50:20 AM
Well that kinda works....in a house there is a facade and interior design (presentation), in a layout there is a control and flow (application), but I'm not sure a foundation is the best analogy for the data layer. Data would be the information that is stored and moves around within the system.
But it looks like you've got a handle on the basics of a three-tier approach to looking at software systems.
You are getting a big ahead of us though!
Posted by: Mark | Oct 30, 2007 12:47:35 PM
I guess using the data for the foundation would be like building your house close to the bank in Newfoundland...once it moves you are over the edge and into the water.
It is funny how you can relate IT to so many other things; blueprints, the human body, legos, and nursery rhymes. Thinking in the abstract is something I have never been overly good at but I am sure I can get my head around it.
Posted by: Frieda MacLaren | Oct 31, 2007 1:10:13 PM
Continuing with the house analogy, would the data layer be things like the water flow (through the plumbing), electricity flow (through the wiring) and air flow (through the heating/ventilation system)?
Posted by: Chad Hayward | Nov 1, 2007 9:22:16 AM
Yeah the house analogy doesn't quite fit.....
But if it did I think that would be it Chad. And don't forget people!
Posted by: Mark | Nov 1, 2007 9:28:18 AM
There really is a lot of different things that software can relate to, like Freida, I have never been all that great at thinking in the abstract, but these examples are deffinately helping! I like to see things right infront of my eyes, so visualizing software components as the architecture of a house, or lego blocks is deffinately a lot easier. If you think about the software in layers, such as all the blueprints to a house, you can start to understand all the components of software, how they all have to interconnect and build off eachother in order to work in themselves. Its amazing how intellegent they really are!
Posted by: Ashley Gallant | Nov 1, 2007 11:22:26 AM
Three-tier architecture increases modularity within a system. It looks like a three-tier architecture basically consists of software that each has there own specified task and come together to make up a software architecture that works together to carry out specified tasks by working together through the presentation layer, application later, and data layer?
Posted by: Krista Mackenzie | Nov 1, 2007 11:39:33 AM
A house may not work as an analogy, but I think a friendly neighborhood McDonald's might be just the thing to represent a 3-tier architecture. The presentation layer represents the drive-thru window. This is the meeting place McDonald's has created for you- and the services McDonald's has to offer. It is clean and well laid out, and the server is a part of the presentation too, he/she helps you to interact with McDonald's by placing your order. This is just like the presentation layer, which is the well laid out GUI that is created to allow users to interact with the services the program can provide. The application layer is the assembly line for the food product. This part of MacDonald’s does all the logic work, they figure out what components are needed to put your meal together. They have lists of processes and tasks to put different products requested by the customer together. The application layer takes the information (requests etc) that are made in the presentation layer, and figures out what processes or data is needed to make it happen. But the application needs to use the data layer. This is like the assembly counter needing product for making meals, they will send requests (through another employee) to the freezers where all the product is stored (the data). The data layer is the freezers with all the product and the employee who spends his days organizing and managing the amount of product inside and delivering it to the assembly line is like a relational database management system.
Posted by: Ben Howard | Nov 7, 2007 10:04:55 AM
Thanks Ben that really helped me to get my head around three teir architecture.
Posted by: Joseph Bondt | Nov 7, 2007 12:56:13 PM
Wow thanks a lot Ben. Cleared it up a bit for me too.
Posted by: Colin Butler | Nov 7, 2007 8:32:13 PM
i was wondering if the upei library could be an example of the 3 tier architechture?...i would guess that the librarian and the front desk and the computers could be the presentation layer and then they would access a computer system with all of the books on hand, help you find the books, go through the steps to help you sign the book out with your upei card and and that would be the application layer and then the information that they are accessing, would be stored in a library database which would be the data layer. I dont know if that is exactly right or not but thats kind of how i pictured it...
Posted by: Devon Gillis | Nov 8, 2007 7:34:50 PM
@Ben: Pretty good analogy! That works. Data might also include the people, pricing, etc....as well as the food.
@Devon: That's a pretty good analogy too. The operations, layout, and flow of the library, even its policies might constitute an application layer. And because they serve people both in person as you enter the library and remotely through technology there would be a few different strategies that could be considered part of a presentation layer.
Good job guys!
Posted by: Mark | Nov 12, 2007 3:37:30 PM
Thanks guys, that really helped clear things up. It helps to connect IT to something that I can relate to and the library example was great. I never thought about connecting an application layer to something so simple as the layout of a the library but it really did help!
Posted by: Kate MacDonald | Nov 14, 2007 11:01:37 AM
the way 3-tier architecture related to everyday systems, as mentioned above really helps it make more sense to me. the lab was also very helpful in making the point more clear.
Posted by: Amy Corrigan | Nov 17, 2007 1:10:18 PM
I'm reviewing my notes and trying to get these concepts straight.
So when referring to the Client/Server architecture, am I right in saying it is talking about a relationship, not between something that is physical, but between two programs? One program requesting info or content (client) and the other responding (server) to satisfy the request from the client.
When referring to Client/Server architecture can we to say that two or more programs communicating to each other with within a system to carry out a task be an example of the C/S architecture or does the Internet have to be the medium of exchange?
Posted by: Billy MacDonald | Nov 19, 2007 3:11:13 PM
I realize that this is probably a really stupid question but here goes....Data Layer..is that where I would find the data base management system...is that the same thing as the operating system? I have been battling between yes and no and can't seem to come up with a definite? The operating system does just that...but the data base management system has to store the data. Maybe I am confusing the bejesus out of something that isn't even related.
Posted by: Frieda MacLaren | Nov 21, 2007 11:46:49 AM
All of these great analogys have really helped me get a better understanding of the 3 layers. Frieda, Im on the same level as you with the operating system? Some clarification on that would be great!
Posted by: Stephanie Doucette | Nov 21, 2007 5:56:46 PM
I would think that the operating system would be more so in the application layer rather than the data layer. As the operating system is more of an app run on your computer.
Posted by: kyle macdonald | Nov 23, 2007 8:43:18 AM
Hmmmmmmm Frieda I think I'm on the same side as you..unfortunately haha! Other than that, I felt that Ben and Devon made excellent examples :) Thanks!
Posted by: Katelyn Murnaghan | Nov 25, 2007 8:30:26 PM
Thanks for the examples they really helped me out!
Posted by: Ally Power | Dec 3, 2007 1:27:53 PM
I just rend Ben's post and it really cleared things up for me.... I would have never thought of MacDonalds as being a good example... I will be sure to remember this and use it for an example of 3 tier architecture if it is a written question. Thanks!
Posted by: Ryan Keefe | Dec 3, 2007 2:51:25 PM
Im definitely grateful for these examples. they cleared things up...even though im finding it hard to think in the abstract and not think of the physical. but this is helping so much. thank you guys!!
Posted by: Susanne | Dec 3, 2007 3:58:48 PM
good examples devon and ben, really helped, thx
Posted by: Sean Hughes | Dec 4, 2007 9:01:57 PM
That's a good point Billy, does the internet need to be the medium? I can see the internet as being a huge help, but not necessarily required, it just more so bridges the gap and helps enhance the relationship between the two, seeing as the internet is a massive way of social networking and that's sort of what this model is dealing with or needs anyways.
Posted by: Lauren Tweel | Dec 5, 2007 6:13:52 AM