Saturday, 4 August 2012

A Technical Chat



Mitra: Hii Monika .. did u understand anything of systems architecture in yesterday’s class. I had an assignment to do night before.. simply couldn’t keep my eyes open..

Me: Oh ..thats sad.. but don’t worry.. I’ll help u out.. I got a clear enough understanding of the same..

Mitra: That would be great.. shall we start now?? Can u tell me the need for an architecture for computers???

Me: Computer science is basically consisted of data and application…data which consists of data structure is the thing which has to be processed. .and application which tells us how to operate on that data. As computer science progressed , data volume became huge and applications got more and more complex… it became impossible to store data and application on the same computer since the processing became extremely slow. So this created a need to have an architecture which could separate data from application..resulting in less processing time.

Mitra: ok..got it… Now ..the architecture as we have today is quite complex …do you have any idea how it evolved to be like this???

Me: Actually, the architecture we use today is multi tier architecture. First it was a single tier ..then came two tier..three tier..and finally the one we use.
Single tier architecture is the one in which data and application separately reside in one physical system.
                                                                                 *PL—Presentation Layer
                                                                                 *BL—Business Layer
It is rare nowadays to find a substantial single-tier application, especially on a Windows 2000 platform. However, many smaller, single-user applications are single tier. Examples of this are Microsoft Money, Quicken, and TurboTax. These applications typically reside on the same system on which they are running. 
The two tier architecture was a modification over this. The design allocates the user system interface exclusively to the client. It places database management on the server and splits the processing management between client and server, creating two layers.


Let's suppose I'm going to write a piece of software that students at a school can use to find out what their current grade is in all their classes. I structure the program so that a database of grades resides on the server, and the application resides on the client (the computer the student is physically interacting with).When the student wants to know his grades, he manipulates my program (by clicking buttons, menu options, etc). The program fires off a query to the database, and the database responds with all the student's grades. Now my application uses all this data to calculate the student's grade, and displays it for him.
Two-tier applications are common. You might have worked with many of these applications already.  The two tier architecture requires minimal operator intervention, and is frequently used in non-complex, non-time critical information processing systems. These applications are typically created in languages that support the Windows programming APIs, such as Microsoft Visual C++ or Visual Basic. With a two-tier application, each user must have one or more connections into the SQL Server database. Maintenance and version control has to installed in every machine that uses the application.

Mitra: Now, this architecture is fine, if you've got a school with 50 students. But suppose the school has 10,000 students. Now we've got a problem. Right?

Me: Yes..because every time a student queries the client application, the data server has to serve up large queries for the client application to manipulate. This is an enormous drain on network sources.
So what do we do? We create a 3-tier architecture by inserting another program at the server level. We call this the server application. Now the client application no longer directly queries the database; it queries the server application, which in turn queries the data server.
Mitra:  What is the advantage to this? Well, now when the student wants to know his final grade,the following happens:
1. The student asks the client application.
2. The client application asks the server application.
3. The server application queries the data server.
4. The data server serves up a record set with all the student's grades.
5. The server application does all the calculations to determine the grade.
6. The server application serves up the final grade to the client application.
7. The client application displays the final grade for the student.

Me: It's a much longer process on paper, but in reality it's much faster. Why? Notice step 6. Instead of serving up an entire record set of grades, which has to be passed over a network, the server application is serving up a single number, which is a tiny amount of network traffic in comparison.
The third tier (middle tier server) is between the user interface (client) and the data management (server) components. This middle tier provides process management where business logic and rules are executed and can accommodate hundreds of users (as compared to only 100 users with the two tier architecture) by providing functions such as queuing, application execution, and database staging. The three tier architecture is used when an effective distributed client/server design is needed that provides (when compared to the two tier) increased performance, flexibility, maintainability, reusability, and scalability, while hiding the complexity of distributed processing from the user. These characteristics have made three layer architectures a popular choice for Internet applications and net-centric information systems.

Mitra : This sounds pretty good. Why do we need  the multi layer architecture then???

Me : It has been found that three-tier methodology lacks some critical features such as reusability of application logic code and scalability. That is, there may arise a situation whereby a collection of application logic code results and they can not be reused  and also they do not communicate with one another. Thus there came a need for a viable architecture that mainly facilitates reusability of business logic as reusability phenomena has been found to reduce the cost of software development and the time to market and its quality is assured.
Thus came the notion of n-tier architecture. To turn a three-tier architecture into an n-tier system, the middle tier can be allowed to have multiple application objects rather than a single application. Each  of these application objects must have a well-defined interface which allows them to contact and communication with one another. An interface is actually brings an idea of contract. That is, each object states through its interface that it will accept certain parameters and return a specific set of results. Application objects uses their interfaces to do business processing.
With an n-tier architecture, one can have multiple applications using a common set of business objects across an organization. This promotes the standardization of business practices by creating a single set of business functions for the entire organization to access. If a particular business rule changes, then changes have to be made to only the business object and if need, to its interface also.


Mitra: Okk.. Got it .. but how are we supposed to manage the huge amount of data we deal with these days.. does not that cme under the domain of system architecture???

Me: Yeah..sure it does.. We manage data traditionally by using RDBMS..relational database management systems. But nowadays , we use Enterprise Resource Program is being used. But , I better  tell you about that sometime else…I got to run now.. have a lecture to attend in 15 mins..

Mitra: Oh ..sure..thanks a lot..