Sunday, February 3, 2008

System Architecture

One day when I was sitting at home in my room, my cousin keshav studying in class xth came running to me and tole me that they had a special lecture on system engineering in school delivered by a guest lecturer working in one of the top three IT firms in India. He said that he felt as bit confused a most of the things the guest lecturer said sounded like Latin to him and assuming that I had the wherewithal to make it easy for him to understand system engineering, asked me to explain it to him. So to keep my image intact I tried explaining it to him and the conversation goes like this:

Keshav: you know today we had a guest lecture on system engineering but the sad part is I could understand only half of it. Can you please tell me what it means and why do we need it?

Me: Systems engineering is concerned with the design, production, and maintenance of reliable systems within cost and time constraints.

Systems engineering activities vary from requirements definition or specification to the conceptual and functional development of systems

In context of information system engineering you can say that it is designing of information system which would perform different tasks ranging from simple word processing to preparing your examination result.

It will basically have two components without which it is meaningless.

1) Database

2) Application

A database will have the data to be processed. In the example I gave you it would be your marks you scored in all the terms.

The data to be processed will require an application which will specify how that data is to be processed and typically this application will have a name to make it distinct from others ex- Marks processing application.

Keshav: Does that mean I can engineer my own system and use it to do whatever I want?

Me: Sure, you can build your own information system provided you have the necessary skills which you will acquire with education and follow the basic principles like- data and application should not be merged, they should be distinct. This principle need to be followed because if you merge the database like you term marks with the application then you have to again get that database if you want to use it for any other application. You don’t hard code it.

Keshav: He was also talking about different type of architecture. Can you tell me how many type of architecture there are?

Me: There are mainly single tire, two tire, three tire and multi tire architecture. In a single tire the data and the business logic resides on the same nodes.

A two tier architecture employs two types of nodes: client and server. It will have data on one server and the application on the client system and these two will be connected through a lan or wan. In the example I am using your term marks will be stored in one machine and the application to process it will be stored it on the user’s system which will also have a GUI.

This sort of a system does not place processing burden on server machine when you have a number of users but it require high bandwidth.

In three tier architecture the business logic is kept centrally so that whenever any changes are to be made they can be made at one location. The presentation logic is kept locally with the users in form of GUI. It minimises data transfer over the network.

A multi tier architecture will have different modules at different nodes. It will have a centrally located web server which eliminates the need to have specialist software at each client location. The users will be connected through a corporate network or internet which is a public network. But the disadvantage is that the business application has to be web enabled. Here you can have all three servers on same or different physical machines.

In case you have multiple applications then you cane use one single corporate database which eradicates the problem of inconsistency and duplication. Also one single database is easier to manage. One example of this database could be RDMS.

Different applications on different machines also increase the complexity of a system. For example your school might have one result processing application, one fee processing application etc. This can be dealt by introducing one integrated application like an ERP system which integrates different modules or applications. It is easier to implement and manage.

Keshav: But what if I have an application which is different from other applications. Let us for a moment take the example of an organisation which apart from usual HR, FIN applications has a application which is used by the analysis department.

Me: In that case you can have a different data warehouse server and a different business intelligence application on a separate machine.

Keshav: But when we use a web server to web enable our users through internet, don’t we face the risk of security breach as in external users can access our system and interfere in its functioning.

Me: yes, that possibility is always there and that’s why system engineers use firewall which is a combination of hardware and software to prevent unwanted users from committing security breach.

Keshav: Thanks a lot, now I believe I have adequate knowledge not to feel inadequately equipped with knowledge of system engineering.