Archive for Architecture

Architecture Vs Design

There has been constant debate about these two terms and how to draw a line between these two. There have been several discussions around this and always there is confusion when something is called as architecture and when it is a design. Bredemeyer.com is a good site that contains lots and lots of information on architecture. Today I was reading an article “Architect. What’s in a name?” and it is a great article that describes who an architect is from the term architect and also gives a great analogy to differentiate architecture and design.

Blink this Architecture Vs Design at blinklist.com    Bookmark Architecture Vs Design at blogmarks    Bookmark Architecture Vs Design at del.icio.us    Digg Architecture Vs Design at Digg.com    Fark Architecture Vs Design at Fark.com    Bookmark Architecture Vs Design at Furl.net    Bookmark Architecture Vs Design at NewsVine    Bookmark Architecture Vs Design at reddit.com    Bookmark Architecture Vs Design at Simpy.com    Bookmark Architecture Vs Design at Spurl.net    Bookmark Architecture Vs Design with wists    Bookmark Architecture Vs Design at YahooMyWeb

Comments      Cosmos

RAID

Essentially any system would need some platform to enable the hardware, some programming tool to execute your programs, database management systems to hold content and so on.  Primary all these need to be present in a direct access storage device (DASD) since memory is volatile.  The best DASD that we all are aware of is hard disks. Now any hardware device is vulnerable to failure at some point of time.  Applications requiring fault tolerance in terms of hardware will go in for clustering mode where the hardware’s are replicated and one picks up control when another goes off.  The complexity of clustering is dependant upon the criticality of the application.  Since all the data including your program resides on a DASD typically hard disk, redundancy of it is very important.  Not only it addresses failover but since DASD has a slower access rate compared to the RAM, higher access rate is important to reduce those delays in the production environment.  How will redundant hard disks help? That is where RAID comes to help.

RAID stands for Redundant Array of Independent Disks. A RAID controller is a hardware that can divide packets of information in chunks and put them across multiple hard disks.  While reading back it would pick up the pieces, assemble, decode and send it to the processor as one piece making it look like the information is coming from a single hard disk.  There are various levels of RAID that can help in providing fault tolerance, higher throughput and so on.  The controller design gets complex as higher throughput and fault tolerance are required.  Here is a RAID tutorial that simply puts various levels of RAID, its advantages and disadvantages.

Blink this RAID at blinklist.com    Bookmark RAID at blogmarks    Bookmark RAID at del.icio.us    Digg RAID at Digg.com    Fark RAID at Fark.com    Bookmark RAID at Furl.net    Bookmark RAID at NewsVine    Bookmark RAID at reddit.com    Bookmark RAID at Simpy.com    Bookmark RAID at Spurl.net    Bookmark RAID with wists    Bookmark RAID at YahooMyWeb

Comments      Cosmos

Enterprise Application Integration (EAI)

Large enterprises have multiple applications serving different purposes. And the information is scattered across various applications. Most of the times there is a huge overlap of information between different applications but each application uses its own resource to store information. Not only data but common business processing code might be available redundantly in many applications. When applications working in silos can be interconnected with common business entities acting as service and common data shared between services and applications, it is enterprise application integration (EAI). While it is easy to define here, it is an Herculean task to bring together different applications and deifferent teams to make it happen. Enterprise Service Bus (ESB) is one of the approaches to enable EAI. EAI on wikipedia has more details and also the pitfalls.

Blink this Enterprise Application Integration (EAI) at blinklist.com    Bookmark Enterprise Application Integration (EAI) at blogmarks    Bookmark Enterprise Application Integration (EAI) at del.icio.us    Digg Enterprise Application Integration (EAI) at Digg.com    Fark Enterprise Application Integration (EAI) at Fark.com    Bookmark Enterprise Application Integration (EAI) at Furl.net    Bookmark Enterprise Application Integration (EAI) at NewsVine    Bookmark Enterprise Application Integration (EAI) at reddit.com    Bookmark Enterprise Application Integration (EAI) at Simpy.com    Bookmark Enterprise Application Integration (EAI) at Spurl.net    Bookmark Enterprise Application Integration (EAI) with wists    Bookmark Enterprise Application Integration (EAI) at YahooMyWeb

Comments (1)      Cosmos

Enterprise Service Bus

Have you come across multiple applications working together? Take for example an online shopping site. This would integrate with multiple vendor applications and payment gateways behind the scenes. Making these applications coordinate with each other and making them work coherently would be the critical part that decides its success. Called an enterprise application the architecture/design plays an important role in deciding the interface that will enable integration with other applications. This interface called as middleware is only responsible for making sure the information from one application to another is passed without fail and in a secure fashion. If the applications that we are talking about are services then what we are talking about is Enterprise Service Bus (ESB). The ESB is a key enabler of the buzzword Service Oriented Architecture (SOA). The technology choices around ESB are critical decisions performed by an architect that orchestrates the services working together. For example communicating with an application that acts as a payment gateway would require a secure communication and with either a successful or total failure transaction meaning you don’t want to pay but not get the product. A detailed three part series on “Enterprise Service Bus” is available on Dr. Dobb’s Portal.

Blink this Enterprise Service Bus at blinklist.com    Bookmark Enterprise Service Bus at blogmarks    Bookmark Enterprise Service Bus at del.icio.us    Digg Enterprise Service Bus at Digg.com    Fark Enterprise Service Bus at Fark.com    Bookmark Enterprise Service Bus at Furl.net    Bookmark Enterprise Service Bus at NewsVine    Bookmark Enterprise Service Bus at reddit.com    Bookmark Enterprise Service Bus at Simpy.com    Bookmark Enterprise Service Bus at Spurl.net    Bookmark Enterprise Service Bus with wists    Bookmark Enterprise Service Bus at YahooMyWeb

Comments      Cosmos

Code Obfuscation

Have you ever wondered if your packaged code could be reverse engineered? Back to source code? Take an example, say you are working for a customer and creating a system that is to be deployed on the customer’s environment. You package and deploy it at the customer’s site. But is it possible that the packaged code could be reverse engineered so that your source is viewable? If yes, are you consciously aware that it is ok? If you run into such a situation and you want your package not to be reengineered easily then what you are looking for is code obfuscation.

Code obfuscation is an intermediary step before compilation. Basically the code obfuscator software kind of transforms certain code that doesn’t alter the program’s output but makes it difficult to understand when reengineered. For example what if the variable names are translated to some random text? That’s one simple example; there are lots of other ways obfuscation can be applied. With J2EE and/or .Net one level of protection is already there since the code would be a .class or binary file respectively. Albeit it is not tough to decompile at least a java class as far as I know. Mocha decompiler is one that comes to my mind immediately. But with script based languages like, PHP, Ruby etc. code obfuscation might be needed if the system is going to be deployed at client/customer site as its interpreted and there is no intermediary file getting generated. Depending on the language, you might be lucky to have a tool to obfuscate or you might have to create a tool of your own.

Blink this Code Obfuscation at blinklist.com    Bookmark Code Obfuscation at blogmarks    Bookmark Code Obfuscation at del.icio.us    Digg Code Obfuscation at Digg.com    Fark Code Obfuscation at Fark.com    Bookmark Code Obfuscation at Furl.net    Bookmark Code Obfuscation at NewsVine    Bookmark Code Obfuscation at reddit.com    Bookmark Code Obfuscation at Simpy.com    Bookmark Code Obfuscation at Spurl.net    Bookmark Code Obfuscation with wists    Bookmark Code Obfuscation at YahooMyWeb

Comments      Cosmos

ATAM - Architectural Tradeoff Analysis Method

ATAM is a proven method for evaluating an architecture similar to quality assurance process on software development. Founded by SEI (Software Engineering Institute) of Carnegie Mellon university, this evaluation process involves architects and ATAM trained/certified representatives sitting together and validating the proposed architecture. One of the main advantage of such an evaluation is to validate that the architecture would indeed help in meeting the non functional requirements (NFRs). More information on ATAM is available here. ATAM is a disciplined process that can be followed in any organization which has an architecture team and would need a quality check on the architecture being produced.

Blink this ATAM - Architectural Tradeoff Analysis Method at blinklist.com    Bookmark ATAM - Architectural Tradeoff Analysis Method at blogmarks    Bookmark ATAM - Architectural Tradeoff Analysis Method at del.icio.us    Digg ATAM - Architectural Tradeoff Analysis Method at Digg.com    Fark ATAM - Architectural Tradeoff Analysis Method at Fark.com    Bookmark ATAM - Architectural Tradeoff Analysis Method at Furl.net    Bookmark ATAM - Architectural Tradeoff Analysis Method at NewsVine    Bookmark ATAM - Architectural Tradeoff Analysis Method at reddit.com    Bookmark ATAM - Architectural Tradeoff Analysis Method at Simpy.com    Bookmark ATAM - Architectural Tradeoff Analysis Method at Spurl.net    Bookmark ATAM - Architectural Tradeoff Analysis Method with wists    Bookmark ATAM - Architectural Tradeoff Analysis Method at YahooMyWeb

Comments      Cosmos

Non Functional Requirements (NFRs)

Functional requirements capture the behavior of a system whereas non functional requirements capture the quality of a system that determines the level of satisfaction that the stakeholders expect from the system. Non functional requirements (NFRs) aka Quality of Service (QOS) requirements (sometimes also called technical requirements) are requirements that have no visible impact on end users but these are requirements that satisfy the stakeholders typically the business or the organization that is implementing the system. NFRs is very important from an architect’s/designer’s perspective to decide upon the environment and the design of the system to meet those requirements. NFRs are typically quantified by the stakeholders when they are defined. The following are some of the typical NFRs.

  • Availability/Reliability/Fault Tolerance - System availability to the end user at any given time. Example: 99.99% availability (that translates to a system downtime of 52 minutes per year)
  • Usability - System ease of use and navigability to a layman user. Example: Should not take more than 3 mouse clicks to reach any feature/screen in the system.
  • Performance - Throughput, response time requirements. Example: A sub-second response time from the moment after the user triggers an action in the system and until the system responds back to the user.
  • Security - How secure the system is from hackers (in case of a web application) and unauthorized users. Example: The system should be secure and the communication between the clients and the server should be encrypted and signed.
  • Portability - System’s ability to adopt to different environments. Example: The system should be able to work with the following RDBMS as the data source - MySQL, Oracle, DB2, MS SQL Server.
  • Scalability - The system’s ability to scale and support number of active users at a given point of time. Example: The system should support 10000 concurrent users.

Non Functional requirements are SMART requirements where SMART refers to Specific, Measurable, Attainable, Realizable and Traceable. Sometimes two NFRs might be mutually exclusive meaning if one requirement is met, it affects meeting another requirement. For example the scalability requirement will affect the performance requirement given the infrastructure supporting the system. In order to attain both of these requirements, the architect might suggest the business to invest in additional infrastructure that can help scale the system to meet the number of concurrent users and also meet the performance requirement. If the business does not want to invest more in the infrastructure then a tradeoff has to be made between scalability and the performance requirement. Tradeoff’s are typically done with the business and architects/designers meeting and working together. The stakeholders jointly decide and prioritize on the non functional requirements under the following categories.

  • Must haves - These requirements are absolutely necessary and cannot be compromised.
  • Should haves - These requirements are necessary but could be compromised on the margins if it conflicts with the must haves.
  • Like to haves - These requirements would be good to have but would be the lowest priority compared to the must haves and should haves.

Once the NFRs are categorized as above, the architect/designer could point out conflicts and work with the business to do tradeoffs. NFRs are equally important as functional requirements because it determines the stability and quality of the system. These requirements should be attacked early on and have an huge impact on architectural decisions.

Blink this Non Functional Requirements (NFRs) at blinklist.com    Bookmark Non Functional Requirements (NFRs) at blogmarks    Bookmark Non Functional Requirements (NFRs) at del.icio.us    Digg Non Functional Requirements (NFRs) at Digg.com    Fark Non Functional Requirements (NFRs) at Fark.com    Bookmark Non Functional Requirements (NFRs) at Furl.net    Bookmark Non Functional Requirements (NFRs) at NewsVine    Bookmark Non Functional Requirements (NFRs) at reddit.com    Bookmark Non Functional Requirements (NFRs) at Simpy.com    Bookmark Non Functional Requirements (NFRs) at Spurl.net    Bookmark Non Functional Requirements (NFRs) with wists    Bookmark Non Functional Requirements (NFRs) at YahooMyWeb

Comments      Cosmos

Grid Computing

When there is complex processing requirement and at the same time with a requirement of high response throughput, Grid computing could be a solution on your plate. Grid computing offers powerful computers interconnected and share processing of a request. The request is parsed into chunks and distributed to the processors. The result from the processors are aggregated and form the response. Grid computing requires a facility to host these computers in a restricted environment to manage and configure. It is a costly affair and is generally used where information processing is critical and involves complex computations.

But internet has made grid computing easy in certain ways. For example Seti@home is a project that collects information from satellites and analyzes them to search for extraterrestrial intelligence. It uses the idle processor time of the personal PC’s spread across the world connected to the internet. Once the user agress to the terms and conditions, an agent is downloaded and installed on the personal computer. This agent typically runs as a screen saver and it uses the computer’s processor when it is idle time (rememer the coffee breaks and lunch time?). Once a unit of work is complete it sends it back to the server for aggregation with other completed units and receives another unit of work for processing. This type of computing is called scavenging grid. The advantage is that it is the cheapest form of grid computing but the scope where it can be applied is limited and is also dependent on the internet user’s acceptance to run it. And another disadvantage is the time it takes to process a complete request. World Community Grid is yet another example of scavenging grid. It aims at processing complex scientific research to determine cure for diseases like aids.

Yet another common grid computing type is the data grid computing. Data grid computing is used when volumnious data needs to be processed. The data grid computing is supported by high end database systems that can store volumnous data and distribute the data to different processors for processing. For much detailed explanations on grid computing refer the wikipedia.

Blink this Grid Computing at blinklist.com    Bookmark Grid Computing at blogmarks    Bookmark Grid Computing at del.icio.us    Digg Grid Computing at Digg.com    Fark Grid Computing at Fark.com    Bookmark Grid Computing at Furl.net    Bookmark Grid Computing at NewsVine    Bookmark Grid Computing at reddit.com    Bookmark Grid Computing at Simpy.com    Bookmark Grid Computing at Spurl.net    Bookmark Grid Computing with wists    Bookmark Grid Computing at YahooMyWeb

Comments      Cosmos

Next entries » · « Previous entries

Creative Commons License  This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.