Web Services, SOA, BPM, and Cloud Computing – IX

CRAY-1 (no longer used, of course) displayed i...

Image via Wikipedia

A discussion on web services, SOA, BPM and Cloud Computing would be incomplete without a post on grid computing.

Wikipedia starts their article on grid computing by saying that “Grid computing is the combination of computer resources from multiple administrative domains for a common goal.

So what does this mean?

In the first place, computing is about achieving a piece of work, what the work consists of is irrelevant for the definition.

Grid computing is about achieving or completing a humongous piece of work which if given to a single computer would take an inordinately large amount of time and would also in all probability lock up the CPU cycles of the machine, leading to that notorious reaction ‘My computer froze”.

For people who are maybe not technically minded but are aware of SETI@home (The Search For Extra Terrestrial Intelligence – this is a volunteer computing project that utilizes the unused CPU cycles of volunteer home and work PCs to analyze radio signals emanating from space for signs of some sort of intelligent life out there. This seeks to answer that philosophical question “Are we the only ones out here on Planet Earth? It cannot be – there must be someone out there in the vast reaches of the universe”.

What this implies that each volunteer machine downloads a set of radio signal data, analyses it and sends the results back to the SETI project server. The SETI@home application is a screen-saver to be loaded onto the client machine.

This is what in technical terms is known as CPU scavenging and volunteer computing.

Continue reading

Advertisements

Architecture – Understanding The Criteria – V

Distributed and parallel systems

Image via Wikipedia

HANOVER, GERMANY - MARCH 01:  Illuminated plas...

Image by Getty Images via Daylife

The final post in this series on Architecture – Understanding The Criteria.

This post consists of the  few remaining terms that I overlooked in my previous posts.

Distributed:

Distributed computing is a field of computer science that studies distributed systems. A distributed system consists of multiple autonomous computers that communicate through a computer network. The computers interact with each other in order to achieve a common goal. A computer program that runs in a distributed system is called a distributed program, and distributed programming is the process of writing such programs.[1]

Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one computer.

Distributed computing was earlier known as parallel computing. Of late, it has come into vogue and is referred to as grid computing.

Distributed systems are systems that communicate to each other via the network; this implies different systems residing on different physical hardware. A web architecture is by nature distributed; the client is the browser that resides on the user’s machine; the presentation tier may or may not be co-located  with the business objects on a single machine and finally the database resides on a database server.

Also, SOA (Service Oriented Architecture) which implies web services are also by their very nature distributed systems. Message Oriented Middleware add another layer of abstraction and decoupling to distributed systems.

Grid computing involves the asynchronous distribution of tasks of a job or several jobs to slave systems that perform the tasks and the results are sent back to the master where the results are aggregated to be presented to the job submitter. A very relevant example of grid computing would be Google Search Indexing which is a grid computing exercise with several software agents called robots that index the web and update the Google Cache and Index Database.

 

 Variability:

Variability is how well the architecture can be expanded or modified to produce new architectures that differ in specific , preplanned ways. Variability mechanisms may be run-time,compile-time,build-time or code-time. Variability is important in a product setting when the architecture is the underlying architecture behind a whole set of related products or product line.

Conceptual integrity:

Conceptual integrity is the unifying theme underlying an architecture. Simply put, the architecture allows does similar things in a similar fashion. The architecture should exemplify consistency, have few data and control mechanisms and use a small number of patterns. This makes it easy for developers to work on the system and nasty surprises are avoided.

 Elasticity:

Though this seems specific to cloud computing, I will include it here. Elasticity is the ability of the supply of computing resources to react dynamically, in a preplanned manner, to changes in demand – either increased or decreased demand. This is a feature of cloud computing offerings as per the Service Level Agreements (SLAs) the enterprise may have with its cloud computing suppliers. The outsourcing can have various combinations, such as in-sourcing for normal, anticipated computing demand and outsourcing for spikes in demand; or complete outsourcing to a single provider , single sourcing ; outsourcing to a single provider with surges in demand outsourced to another cloud computing provider; outsourcing to multiple providers to reduce downtime – multi-sourcing.

Reference: Evaluating Software Architectures – Methods and Case Studies – Clements, Kazman & Klein.

Evaluating Software Architectures: Methods and Case Studies

That’s all!

Have a great week!

An intellectual is a person who has discovered something more interesting than sex.

Aldous Huxley

Source: http://quotes4all.net/quote_1650.html

[Powered by QuotesPlugin v1.0 for Windows Live Writer]

Share this post :