云的服务模式以及部署模式:
基于三种服务模式的迁移过程:
云计算概览
It has been mentioned that one of the key promises of cloud computing is an enormous level of flexibility for scaling up or scaling down software and hardware infrastructures without huge upfront investments. Hence, it is expected that any cloud-based infrastructure should have three characteristics:ability to acquire transactional resource on demand,resource publication through a single provider,and mechanisms to bill users on the basis of resource utilization. In this section, we briefly discuss the commonly known service and deployment models of cloud computing in order to provide a context to report our effort to migrate an OSS framework. A brief description of the service and deployment models of cloud computing will also help to steer our discussion about the challenges that software engineering methods and approaches in general and software architecture approaches in particular need to address.
Taking advantage of the cloud infrastructure, organizations offer different types of services. Software as a Service (SaaS) infrastructure offers software applications to its customers. In this type of services, developers usually do not have any option to customize the applications. However, a user of the systems can modify the respective software according to their needs by using the available customization option. Google email service is an example of SaaS model. In Platform as a Service (PaaS) infrastructure, a developer has access to a development platform through its APIs. These platforms support a specific set of programming languages. Google Application Engine is an example ofsuch platform. Applications that are built for PaaS clouds do have benefits from the underlying cloud computing infrastructure. Infrastructure as a Service (IaaS) model offers infrastructure for computing and storage resources. This infrastructure is used to host applications. IaaS models often provide automatic support for on demand scalability of computing and storage resources.
There are mainlythree deployment models of cloud computing:private clouds, public clouds and hybrid clouds.Private cloud is a collection of computing resources, storage resources and cloud technologies owned by an organization for its private use. The organization has full control of all the resources and technologies. The owner organization is also responsible for the maintenance of the infrastructure.Public cloud infrastructure is a collection of resources maintained by different organizations and the resources are offered to external users.A hybrid cloud is a category of cloud resources in which part of the infrastructure is maintained by the organization itself where as it also acquires the services from public clouds. These different models of the cloud environments have their respective advantages and disadvantages. The advantage for maintaining the private cloud is that an organization can have full control of all the resources related to a cloud infrastructure. The disadvantage of such a deployment model is that an organization not only has to invest in computing and storage resources but also on the related software and maintenance activities. The advantage of using the public cloud is that an organizations itself does not have to take care of the cloud computing infrastructure and operational activities. The disadvantage of utilizing the services from a public cloud provider is that it is completely dependent upon another business entity that is offering resources through public cloud. One of the key concerns of using public cloud is the security of the data that is stored on the public cloud. In such cases the tradeoff between public and private cloud is made and a hybrid approach can be adopted. In such cases, an organization can choose to maintain their critical resources as private cloud and rely on the public clouds for non critical business operations.More recently, some other deployment models have also been reported. Two of them are Virtual Private Cloud (VPC)and community cloud.A VPC runs on top of the public cloud with the additional benefit to have customized network topology and security settings. Applications running on a VPC can take benefit of cost effective infrastructure of public clouds and security mechanism of private clouds. In some cases, multiple collaborative organizations can have some common requirements of a set of software systems and can share their infrastructure to have more reliable and cost effective infrastructure. This kind of arrangement is called community cloud. For a community cloud, all participating organizations share the cost of the infrastructure that means having a community cloud can be more cost effective as compared to maintaining a private cloud. A community cloud can also provide much higher level of security and privacy as it is available to the members of a small community.