IT industry is always been hyped with ever-growing buzzwords and its excessive usage. New entrant, Cloud Computing has been buzzing in Enterprise world and every IT company is try to get on to this bandwagon by positioning themselves with feature differentiators.
But I have tried to find the mean of cloud computing for myself. I went to find out from an Architect view-point for 5-W questions – What/Why/How/When/Where.
Lets find out what is the problem with current model?
A business owners can’t anticipate the growth of their business and to choose an infrastructure scheme/architecture, they just have to rely on historical data or gut feeling. Later point, they meet with reality to realize that initial calculations were well below/above the reality mark and forced to choose another scheme/architecture. And it goes on.
But with advent of Cloud, above problem has been address to certain extend for time being. Now their focus is just application not infrastructure or application/middleware server capabilities. Cloud will take care of these. Enterprise can focus on application and can choose to go either conservatively or aggressively. This allows them the flexibility of change depending upon response and requirements.
Cloud Computing is an IT Infrastructure utility model of “Pay As You Go”. Till today, cloud has comes in many shapes. E.g
- Service Oriented Architecture
- Software As A Service
- Software + Service
- Rich Internet Applications
All these are certainly applications to use cloud as a base. Lets go to fundamental components of Cloud architecture.
Roles: In two-tier system architecture, Web Layer and Business Layer are mapped to corresponding roles in Cloud architecture.
- Web Roles – Web Interface to system
- Worker Role – Business Logic implemented using Cloud APIs
Storage: All the data system generates and uses needs to be stored and keep it available all the time.
- Table/Blob/Relational – System data in many forms
Messaging: Asynchronous communication is the glue between Web and Worker roles to keep system connected as well as decoupled.
- Queue – Queue is preferred choice of communication between Web and Worker.
Technology: There are many competing technologies trying to provide “Right” solution, but my choice goes to RESTful Architecture.
Patterns: Recurring problems brings patterns of solutions. According to architect of cloud, there are five problem space in cloud.
Now, lets discuss about application designing in cloud.
A system which require heavy data crunching on continuous basis. E.g. search engine indexing. MapReduce has been the solution to do this in grids but throws a challenge of managing grid’s growth.
Cloud Solution: Cloud provider will take the responsibility to managing Grids.
A system where data keeps growing, storage longevity becomes critical factor and data type can range from Blobs, Tables to Relational. It also throws another issue of tight affinity between logical data and actual hardware storage. To add to more complication, architect assess distance of Data Access Layer(DAL) between client and server.
- Code Near – Data is controlled by Client’s DAL and generally has large data upload. E.g. offline data
- Code Far – Data is controlled by server DAL and generally smaller chunk of contiguous data. E.g. Browser, Chat.
Cloud Solution: Data in cloud is logical entity defined in URL style. Cloud uses REST data modeling to address any type of data. This releives Cloud Infrastructure Provider to manage affinity of storage and hardware independently. REST lets designer define the a logical business data expressed in terms of URL. Client Applications can perform CRUD operations directly through these URL.
A system which requires to talk to multiple external systems to perform their operations in coördination. But this poses the of negotiation on infrastructure and security and protocol. Preferred choice is HTTP but custom solution needs to be implemented.
Cloud Solution: Cloud wraps REST service over messaging solution to provide uniform communication between multiple parties without any overhead or responsibility on either parties.
A system where user base is very large and traffic load is not uniform. To bear the burden of heavy loads, Network Load Balancers are called in service but still either does not fit the required bill and keep both architect and Sys Admin on toe all across.
Cloud Solution: Cloud provides will manage it with elastic computing and storage capacity depending on load dynamically.
A system which provides services to multiple business partners. E.g B2B model. In this each partner demands its own data schema and UI customization on their choice. Providing this service from one setup is not advisable but it can be done with proper design consideration.
Cloud Solution: Cloud provider can provide multiple entry point to this system, but design and identity consideration needs to be looked carefully by system architect.