Skip to end of metadata
Go to start of metadata

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

<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
Proposers Enrico Zimuel
Zend Liaison TBD
Revision 1.0 - 4 April 2011: Initial Draft.
1.1 - 17 June 2011: Alpha version of Zend\Cloud\Infrastructure for ZF2 (available on github) (wiki revision: 18)

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

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


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 (instances) in a cloud environment. The idea is to provide an abstract interface to manage instances of different vendors.
There are other open source projects that provide these abstraction layer for cloud services for different computer languages. For instance:

  • libcloud,
    a standard client library for many popular cloud providers, for python and java
  • 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.
  • deltacloud,
    an API that abstracts the differences between clouds.

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 ?

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 [DONE]
  • Milestone 2: Working prototype supporting use cases #1, #2 .. #8 [DONE]
  • Milestone 3: Working prototype supporting use cases #9 [DONE]
  • Milestone 4: Working prototype supporting use cases #10 (you need the SSH extension enabled "ext/ssh2") [DONE]
  • Milestone 5: Unit tests [DONE]
  • Milestone 6: Initial documentation exists.

7. Class Index

  • Zend\Cloud\Infrasctructure
  • Zend\Cloud\Infrasctructure\Adapter
  • Zend\Cloud\Infrastructure\Exception
  • Zend\Cloud\Infrastructure\Instance
  • Zend\Cloud\Infrastructure\InstanceList
  • Zend\Cloud\Infrastructure\Image
  • Zend\Cloud\Infrastructure\ImageList

8. Use Cases


9. Class Skeletons



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