Building Cloud Computing environment:
Development of cloud computing application happens by using platforms and frameworks that provide different types of services. It not only means creating Applications by considering various characteristics of cloud infrastructure but also provide infrastructure to be able to develop applications.
Application development:
Various classes of applications benefits from different aspects of cloud computing model. for example
- web applications- performance of web applications is governed by the request load from the end users. Being on cloud with capability to expand on demand, help web applications remain better with you put to handle search in user requests. For example, website presenting cricket scores sees drastic rise in Web requests at the time of tournaments like cricket world cup. On other days, there are less requests. To handle such a drastic increase in requests, increase processing power and storage on the fly helps for scalability.
- Resource incentive applications- These can be data incentives or compute incentive applications. In both cases, enormous amount of resources are needed to complete task in given time frames. These large amount of resources are not needed on consistent basis. Scientific applications those are characterized by batch processing typically without any user interactions. These process can be performed on resources taken on- demand from service providers. Cloud Computing provides facility to dynamically cell applications and on demand increases in computing power and resources. It do so by
- providing methods for renting computer power, storage and networking.
- Offering runtime environments designed for scalability and dynamic sizing.
- Providing application services that mimic the behaviour of Desktop applications but that are completely hosted and managed on the provider side.
Infrastructure and system development:
- Distributed computing, virtualizations, service orientation, and web 2.0 form the core technology backbone for cloud computing in order to develop cloud based systems, knowledge across all these concept is needed. These are all considerations that influence the way we program applications and Systems based on cloud computing Technologies.
- Distributed computing- Cloud Computing is achieved through distributed systems distributed computing is foundation for cloud computing.
- Web 2.0 Technologies - constitute the interface through which cloud computing services are delivered, managed and provisionized .
- Service orientation- This clearly is a must to have through process for cloud computing service. Orientation is the underlying paradigm that defines the architecture of a cloud computing system. Cloud Computing is moving towards Xaas-Everything as a service that clearly highlights the role of service orientation.
- Virtualization- This technology is Core feature of the infrastructure used by cloud providers. Developers of cloud applications need to be aware of the limitations of the selected virtualization Technology.
Computing platforms and technologies
- Amazon Web Services(AWS) :
- AWS offers comprehensive cloud Iaas services ranging from virtual compute, storage and networking to complete computing stacks.
- Primarily, AWS provides infrastructure as a service(Iaas).
- AWS provides a service like simple storage service(S3) which is used as an external storage on cloud. S3 is organised into buckets; these are containers of objects that are stored in binary form and can be enriched with attributes.
- Elastic compute cloud(EC2), is virtual hardware infrastructure provided by AWS that can be used for application deployments.
- Google App Engine:
- Google App Engine is a scalable Runtime environment for executing web applications.
- Large infrastructure provided by Google is used.
- App engine provides secure execution environment and a collection of services that simplifies the development web applications.
- Services such as in-memory caching, scalable data store, job queues, messaging are available.
- Developers can develop and test applications using app engine frameworks on their local environments. Once testing is completed, applications are deployed on App Engine cloud by organising services as needed.
- Languages such as Python command Java and Go are supported.
- Microsoft Azure:
- Microsoft Azure is a cloud operating system and platform for developing applications in the cloud.
- It provides environment for web applications and distributed applications.
- Azure works on concept of roles. Currently, there are three types of role: Web role, worker role and Virtual Machine roll.
- Web role - Design to host a web application.
- Worker role- More generic container of applications and can be used to perform workload processing.
- Virtual Machine role- provides a virtual environment in which the computing stack can be fully customized, including the operating systems.
- Hadoop:
- Apache Hadoop is an open source Framework that is suited for processing large data sets on commodity hardware.
- Implements the concept of map-reduce Defined by Google. These are two fundamental operations of data processing map and reduce.
- Map operation- transforms and synthesize the input data provided by the user.
- Reduce- aggregates the output obtained by the map operations.
- Hadoop provides the runtime environment, and Developers need only provide the input data and specify the map and reduce functions that need to be executed.
- Yahoo! is sponsored for Apache Hadoop. It is integral part of Yahoo infrastructure.
- Yahoo! manages largest Hadoop infrastructure.
- Force.com and salesforce.com:
- Force.com is a cloud computing platform for developing social enterprise applications the platform is the basis for salesforce.com, a software as a service solution for customer relationship management.
- The force.com platform is completely hosted on the cloud and provides complete access to its functionalities and those implemented in the hosted application through web service Technologies.
- Force.com allows developers to create Applications by composing ready to use blocks a complete set of component supporting all the activities of an Enterprises are available. It is also possible to develop your own components or integrate those available in Appexchange into your applications.
- Manjrasoft Aneka:
- Aneka is a platform and a Framework for developing distributed applications on cloud.
- It harness the spare CPU cycles of the heterogeneous network of Desktop PCS and servers are data centres on demand.
- The Aneka based computing cloud is a collection of physical and virtual resources connected through a network, which are either the internet or a private intranet.
- It supports a collection of programming abstractions for developing applications and distributed Runtime environment that can be deployed on heterogeneous hardware.