Cloud Computing

is a buzz word we are hearing these days. Its basically a deployment model to reduce infrastructure costs. It offers virtually unlimited, on-demanding computing resources. Our application only pay for what they use. In simple terms, it is like paying an electricity bill. We use as much of electricity we need and pay for what we have consumed. In the same we pay for the resources based on how much our application had used. With cloud computing, our applications take the advantage of limitless processor cycles, memory storage, network bandwidth along with extensive software capabilities.

Cloud computing relieves the application creator from some of the funationalities like purchase management, services such as databases and security and can concentrate completely on development part when developing Rich Internet Applications (RIAs). Apart from functional requirements, cloud also takes care of the non functional requirements such as scalability and performance.

Talking about scalability, there are two types of scalability, Horizontal and Vertical. Horizontal scalability means the application can serve many concurrent users and Vertical scalability means that the application continues to perform consistently as load increases. Horizontal scalability is what cloud provides through load balancing and application delivery solutions but vertical scalability is just something that cloud does not provide. Say for example, a poorly constructed SQL query can destroy vertical scalability and can actually increase the cost of deploying in the cloud because we are paying for the resources based on how much we consumed and if the application is not scaling up well it will require more resources to maintain performance levels and thus cost a lot more. Cloud computing can be used as a deployment model only and its not going to magically optimize code or database queries or design tables with performance in mind. Thats still squarley in the hands of the developers.

Security is another important aspect that needs to be considered. Cloud provides shared resources which mean shared security risks. A single piece of hardware infected with malware can potentially affect every application that shares its resources. Secure coding is an absolute requirement for cloud computing to prevent exploits of application logic and unauthorized access.

Elasticity is the cloud's true virtue. When there is more demand for the cloud deployed application, it acquires more resources and when there is less demand it frees up resources. It is different from the traditional approach. In the traditional approach when demand is less, the resources sit idle and when the demand is more all the resources get used up and if the demand is peak, it may become worse and the application may fail showing "Time out" to the users. The benefit of going for cloud is the low-cost way to scale up or down the application while paying for only what the application uses.

Currently, we can create cloud applications through two major implementations - Amazong Web Services (AWS) and Google Application Engine (GAE).

Apache Tuscany enables service oriented architecture solutions to more easily respond to new business requirements.

Quote
Nothing has such power to broaden the mind as the ability to investigate systematically and truly all that comes under thy observation in life.
Marcus Aurelius