Monday, February 8, 2010

What I think is Architecture?

For me architecting is defining the solution for the problems. Architecting involves providing the solution at 100 feet level. Abstraction is the single most important concept of architecting. Abstraction allows the architect to abstract out the low level details and understand and define solution to the most challenging and risky part of the problem. An architect has to abstract out the finer low-level details to view the entire solution at the 1000-fee level. He has to break down the entire solution in component and define and understand their interaction to solve the problem.

How does the architect differ from designer or developer?

When a problem is given to designer; he start looking into its functional implementation by thinking of screens on which the data is entered and about the program which save that data and then retrieve hat data.
Programmer starts thinking about the way those things will be implemented like how a java program be written to read and update the database.

Architect starts his job by abstracting these low level details and component. He identifies the various components (as black-box) and defines the interaction between them. His work stops where the work of designer and programmer starts. Once he identifies the component which designer and programmer can easily take over, architect work stops there.

Architect thus identifies various components of the solution and presents them to his stakeholders in term of views. Use-Case view for functional/business analyst, logical views for Designers, Development or Conceptual View for his developers/designer and deployment view for the administrators; combined view of these views like the blueprint of the system.

Architect presents the system to his stakeholders and convinces them how his solution will meet all the functional (only at conceptual level) and non-functional requirements. Architect convinces his stakeholders about the solution’s feasibility by using the views like deployment view by planned capacity for meeting the performance and the availability, logical view for showing the interaction between components and various layers, conceptual view for designer to identify the classes and data model.

May be an example will help:
Bank wants to design its web site.
Requirements: A website for allowing the customer access to loan processing application. The website may have load for 100 customers a day for access to the application. The website will have to be secured using digital certificates and allows access through username/password.

Architect thinks of components like user management, loan processing application and other bank systems which may need integration. He designs the logical view for logical layers like presentation, business layer and data layer. He defines how these layers or component in these layers talk and how the data flows in these layers. He gives a high level view of how to implement each component like how the component will integrate with other back-end system for other services. He may identify some challenging use-cases and show how they will be implemented showing the data flow between the identified components of the use-case. This gives a confidence to the developer/designer for other use-cases and also shows them the way.

Architect also presents the physical view in terms of the various servers, web server, application server and database server. He does the capacity planning to indicate how these servers are configured, deployed in what number for meeting the user traffic of 100 customers a day. He may suggest the cluster of Web servers, cluster of Application servers, with replicate session management or sticky sessions. He shows how the cluster meets this traffic based on the transaction capacity of the servers with 60% CPU utilization, 60% RAM and 30% of bandwidth.

He also defines the security architecture in terms of the user management, certificates handling, strength of the encryption keys, public-private key management. He may also do the threat modeling of how user may hack the site and how to fill those gaps by defining the secure zones, DMZ zones etc.

Architect may use the most common Rational “4+1” view modeling for architecture.

No comments:

Post a Comment