Sunday, July 20, 2014

Three Things to know before You start building your "Cloud"

In the previous post, "Why Moving Legacy Applications to cloud is important" I tried to explain the necessity of moving your old applications to cloud as soon as possible.
When I decided to move to "cloud", I had a blurred view of cloud computing meaning. On the one side, I heard about the Amazon Cloud (AWS) which  provides a large computing capacity much faster and cheaper than building a physical server farm. On the other side, many people cited gmail, google docs (google drive now) or drop box as major samples of cloud computing. As you see, there is large difference between those examples. The first one is showing a powerful technical platform that only high skilled people can manipulate it, while the second is dealing with scalable public online services.

After long research, I can summarize three major things that helped me to understand cloud computing:
  • Cloud Architecture
  • Cloud Patterns
  • Mechanisms


Cloud Architecture

The “cloud” in cloud computing can be defined as the set of hardware, networks, storage, services, and interfaces that combine to deliver aspects of computing as a service. Cloud services include the delivery of software, infrastructure, and storage over the Internet (either as separate components or a complete platform) based on user demand.

It is often described as a stack, as a response to the broad range of services built on top of one another. Three major layers compose this stack





  1. Infrastructure-as-a-Service (IaaS) is the hardware and software that powers it all – servers, storage, networks, operating systems ...
  2. Platform-as-a-Service (PaaS) is the set of tools and services designed to make coding and deploying those applications quick and efficient.
  3. Software-as-a-Service (SaaS) applications are designed for end-users, delivered over the web


Cloud Patterns

Cloud Computing is composed by multiple patterns modeling the architecture from different sides, dynamic or static.
Cloud patterns summarize the different cloud components which verify the requirements of automated administration, rapid provisioning, shared resources … These patterns are using different technology mechanisms (newer and older) to build the cloud. Indeed, cloud patterns suggest flexible and scalable solution to the project requirements.
Software-as-a-Service is one of the compound patterns. It is composed by a set of  complementary and interlinked cloud patterns. Following UML Components diagram that shows SaaS composition.


saas pattern


Mechanisms

Technology mechanisms represent computing models or ways to implement  platforms. Cloud computing, specially cloud patterns, requires the establishment of a formal level of mechanisms to be able to explore how a given pattern can be applied differently via alternative combinations of mechanism implementations. 
Following some cloud mechanisms:
  • Audit Monitor
  • Automated Scaling Listener
  • Billing Management System
  • Resource Management System
  • Resource Replication
  • SLA Management System

Finally, you can check cloudpatterns.org for more information.