Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_Cloud_Infrastructure Component Proposal

Proposed Component Name Zend_Cloud_Infrastructure
Developer Notes http://framework.zend.com/wiki/display/ZFDEV/Zend_Cloud_Infrastructure
Proposers Enrico Zimuel
Zend Liaison TBD
Revision 1.0 - 4 April 2011: Initial Draft. (wiki revision: 14)

Table of Contents

1. Overview

Zend\Cloud_Infrastructure is a component of the cloud services to manage a cloud computing infrastructure.

Cloud Components in Zend Framework

In Zend Framework we have a specific class, Zend\Cloud, to manage different cloud services coming from different vendors. This class is an abstact interface of the most common used cloud services in the market.
These cloud services are:

  • Document databases (Zend\Cloud\DocumentService)
  • Queue (Zend\Cloud\Queue)
  • Storage (Zend\Clou\Storage)

The adapters supported by these services are reported in the table below:

  Document Queue Storage
Amazon Web Service ✓ (SimpleDB) ✓ (SQS) ✓ (S3)
Windows Azure
Nirvanix    

The Zend_Cloud class uses some specific Zend Framework components to implement the vendor adapters. These service classes are:

  • Zend\Service\Amazon
  • Zend\Service\Amazon\SimpleDB
  • Zend\Service_Amazon\Sqs
  • Zend\Service\Amazon\S3
  • Zend\Service\WindowsAzure
  • Zend\Service\WindowsAzure\Storage\Table
  • Zend\Service\WindowsAzure\Storage\Queue
  • Zend\Service\WindowsAzure\Storag\Blob
  • Zend\Servic\Nirvanix

Proposal

We would like to extend the Zend\Cloud class to manage the deploy phase of a PHP application in a cloud environment. In particular we would like to insert some features to manage the computational resources (servers) in a cloud environment. The idea is to provide an abstract interface to manage the computational resources of different vendors.
There are other open source projects that provide these abstraction layer for cloud services for different computer languages. For instance:

  • libcloud, http://incubator.apache.org/libcloud/
    a standard client library for many popular cloud providers, for python and java
  • unifiedcloud, http://code.google.com/p/unifiedcloud/
    Unified Cloud Computing is an attempt to create an open and standardized cloud interface for the unification of various cloud api's. A singular programmatic point of contact that can encompass the entire infrastructure stack as well as emerging cloud centric technologies all through a unified interface. One of the key drivers of the unified cloud interface is to create an api about other api's. A singular programmatic point of contact that can encompass the entire infrastructure stack as well as emerging cloud centric technologies all through a unified interface.

We would like to provide a similar solution for PHP.
In order to to manage the deploy of a web application in different cloud environments we have to support two different types of cloud services:

  • by Application
  • by Infrastructure

Application means cloud services focused on the applications instead of the infrastructure.
Infrastructure means cloud services focused on the infrastructure instead of the application.
For instance, Windows Azure is a Microsoft cloud service focused on applications, instead Amazon Elastic Compute Cloud (EC2) is a cloud service focused on the infrastructure.
Below we reported a more generic classification of the functionalities of some of the most important cloud vendors:

  Application Infrastructure Services
Amazon Web Service  
Windows Azure ?
GoGrid  
Nirvanix    
IBM ?
Rackspace  

The cloud vendors offer specific API to manage the cloud services. These API are based on web services (REST/SOAP) that can be easily managed in different computer languages. Some of these vendors offer specific API for PHP:

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will include a factory method.
  • This component will use the Zend_Service_* class to manage the Adapter of each cloud computing vendors (so far we have only available the class Zend_Service_Amazon_Ec2).
  • This component will not save any data using Zend_Cache or the filesystem.

4. Dependencies on Other Framework Components

  • Zend\Service\Amazon\Ec2
  • Zend\Service* (cloud computing services)

5. Theory of Operation

The component is managed by a factory to initialize specific cloud computing adapters.

6. Milestones / Tasks

  • Milestone 1: Proposal
  • Milestone 2: Working prototype supporting use cases #1, #2 .. #8
  • Milestone 3: Working prototype supporting use cases #9
  • Milestone 4: Working prototype supporting use cases #10 (we will need SSH support)
  • Milestone 5: Unit tests
  • Milestone 6: Initial documentation exists.

7. Class Index

  • Zend\Cloud\Infrasctructure
  • Zend\Cloud\Infrasctructure\Adapter

8. Use Cases

UC-01
UC-02
UC-03
UC-04
UC-05
UC-06
UC-07
UC-08
UC-09
UC-10

9. Class Skeletons

]]></ac:plain-text-body></ac:macro>

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.