<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Dasher's Corner &#187; distributed php</title>
	<atom:link href="http://dasher.wordpress.com/tag/distributed-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://dasher.wordpress.com</link>
	<description>Natural Language &#38; Machine Translation</description>
	<lastBuildDate>Sat, 20 Jun 2009 13:08:28 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='dasher.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/333fa50f89d3d9a1b2eb9aeb6cc7b342?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Dasher's Corner &#187; distributed php</title>
		<link>http://dasher.wordpress.com</link>
	</image>
			<item>
		<title>General direction for the Virtual Machine for Frameworks (Symfony &amp; Zend)</title>
		<link>http://dasher.wordpress.com/2009/05/21/general-direction-for-the-virtual-machine-for-frameworks-symfony-zend/</link>
		<comments>http://dasher.wordpress.com/2009/05/21/general-direction-for-the-virtual-machine-for-frameworks-symfony-zend/#comments</comments>
		<pubDate>Thu, 21 May 2009 14:34:18 +0000</pubDate>
		<dc:creator>Dasher</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[observations]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[distributed php]]></category>
		<category><![CDATA[distrubuted]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[virtual machine]]></category>

		<guid isPermaLink="false">http://dasher.wordpress.com/2009/05/21/general-direction-for-the-virtual-machine-for-frameworks-symfony-zend/</guid>
		<description><![CDATA[One of the Pro&#8217;s in the Symfony Users Google group had some comments on the Virtual Machine for Symfony at Sipx.ws and I wanted to share my thinking about my plans.
Generally when developing you should have an environment that represents that to which you&#8217;ll be deploying to &#8211; it&#8217;ll save you time, effort and much [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dasher.wordpress.com&blog=86394&post=127&subd=dasher&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the Pro&#8217;s in the Symfony Users Google group had some comments on the Virtual Machine for Symfony at <a title="Symfony Virtual Machine" href="http://sipx.ws" target="_blank">Sipx.ws</a> and I wanted to share my thinking about my plans.</p>
<p>Generally when developing you should have an environment that represents that to which you&#8217;ll be deploying to &#8211; it&#8217;ll save you time, effort and much pain to have something as close as possible.  There are however, several scenarios for developers:</p>
<p><strong>Targeted  deployment</strong></p>
<p>Ideally your environment matches that to which you&#8217;ll be  deploying to.<span> </span>If you control the server  infrastructure then this is less of a problem &#8211; you&#8217;ll build the server  yourself (ideally via an automated deployment process) and building a VM from  this is trivial.</p>
<p>If you don&#8217;t however control the server infrastructure  then you have a more complex situation to deal with.<span> </span>If the gods are smiling then they&#8217;ve built  their server completely from public distros and repos and used a package  manager for all installs.<span> </span>If this is the  case you can dump the package list and server build &#8211; and rebase an image  yourself.<span> </span>Often however they have a  custom OS build (tweaked for whatever reason), local repositories (hopefully  mirrored) but sometimes not and a few extras thrown in.<span> </span>This makes building an image that represents  the environment you&#8217;re going to use, while not impossible, generally  non-trivial.</p>
<blockquote><p><em>ServerGrove (<a href="http://www.servergrove.com/">http://www.servergrove.com/</a>),  forward-thinking &amp; proactive, are interested in providing an image to their  customers that does just this &#8211; allows people to develop locally in an environment  that represents where the application will be deployed.</em></p></blockquote>
<blockquote><p><em><strong>Trends</strong></em></p>
<p>A growing trend with hosting providers is where they  allow you to upload your own image to the hosting environment allowing you to  build your own OS (subject of course to licensing requirements).<span> </span>One of the aims of the VM was to provide a  way for devs to start locally and then upload a copy of the image to the  hosting environment.<span> </span>With a few caveats  (mostly around networking) you&#8217;re assured of 100% success for the deployed  project as you&#8217;ve been able to put it through its paces in before uploading.</p></blockquote>
<p><strong>Non-Targeted  Deployment</strong></p>
<p>In this scenario the developer is building applications  for non-specified specified servers &#8211; either because they don&#8217;t have or haven&#8217;t  selected the hosting environment yet, they don&#8217;t have complete information from  the project sponsor &#8211; or some other reason (it&#8217;s weird and wacky out  there).<span> </span>Another possible deployment is  Open Source projects where the deployed application may be any OS &#8211; and yet  you&#8217;d like to have a common &#8220;known&#8221; environment for developers and  end-users.</p>
<p>In this situation the VM helps both the developer and the  project sponsor &#8211; as it&#8217;ll allow the dev to share the VM with the sponsor for  testing and signoff.<span> </span>Essentially passing  the monkey wrt the hosting environment.</p>
<p><strong>General Approach  (now and 1.x)</strong></p>
<p>The current approach I&#8217;ve taken is mainly aimed at  providing a lean-learning curve, a clean &amp; repeatable environment to the  community developing against Symfony and the Zend Framework (the Zend side is  mostly a freebie but also aimed at helping people with Lucene search  issues).<span> </span>With each build I test to  ensure that all sf frameworks work by deploying a test application that covers  ORM&#8217;s, plugins, routing and the DB/httpd.<span> </span>With the build I try to ensure that it&#8217;s portable and therefore works  against the major VM Client vendors (VirtualBox, VMWare and Xen  currently).<span> </span>The aim of the 1.0 release  is to have something built and packaged ready to run &#8211; much like the sf sandbox  currently works.<span> </span></p>
<p>While VM&#8217;s have been around for a while &#8211; and while  installing linux has become more user friendly &#8211; there&#8217;s still a lot of areas  you can trip-up building images and installing OS&#8217;s.<span> </span>One of the aims was to remove this as a  blocker to devs wanting to just get down to developing applications.</p>
<p>With the release of 1.0 there should be the following  images and deployments available:</p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="font-family:Symbol;"><span>·<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><strong><em>Images</em></strong></p>
<p style="margin-left:72pt;text-indent:-18pt;"><span style="font-family:&quot;"><span>o<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span>devSFCoreServer</p>
<p style="margin-left:72pt;text-indent:-18pt;"><span style="font-family:&quot;"><span>o<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span>devSFCoreIDE</p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="font-family:Symbol;"><span>·<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><strong><em>Deployments</em></strong></p>
<p style="margin-left:72pt;text-indent:-18pt;"><span style="font-family:&quot;"><span>o<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span>Stand  alone (everything in one box for simple dev projects)</p>
<p style="margin-left:72pt;text-indent:-18pt;"><span style="font-family:&quot;"><span>o<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span>Load  Balanced (built using devSFCore with configuration that puts the server into  modes: lb [load balanced], web [web server, memcached &amp; no db], db [db,  svn, no httpd but a http management interface])</p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="font-family:Symbol;"><span>·<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><strong><em>Project helpers</em></strong></p>
<p style="margin-left:72pt;text-indent:-18pt;"><span style="font-family:&quot;"><span>o<span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span>Helpers  to aid start-up of projects and development.<span> </span>Things like building the root development folder, linking to the version  of the framework you wish to use, creating and configuring the DB, configuring  the application to use the DB and running tests on the initial setup.<span> </span>Think a2ensite for creating a symfony  application and you&#8217;ll get the picture.<span> </span>The intention isn&#8217;t so much to dumb down &#8211; but to streamline and to  facilitate adoption by those not that familiar with symfony.<span> </span>Included will be log creation of the actual  steps involved to help devs understand what to do.</p>
<p>With Deployments the general idea is that you&#8217;ll be able  to run multiple images in modes &#8211; to facilitate testing, architecture  scenarios, etc.<span> </span>With this you run one  image as a DB, several as web servers and drop in a load balancer &#8211; and  hey-presto you have a way to test how your application performs when scaling  out.</p>
<p>With the 1.x branch I&#8217;m intending to go with a much  lighter approach &#8211; still with some base images for various distributions and  deployments (there will be standard and live images along the same approach as  the live-cd used with some distributions) but using some of the approaches  you&#8217;ve outlined for providing the packages and for linking in with  repositories.<span> </span>This approach however  requires some infrastructure to support it &#8211; and infrastructure = time +  resources and resources = money.<span> </span></p>
<p>This approach essentially extends the current sf sandbox  to a deployed image mode. It&#8217;ll work out compatibilities, issues and fixes,  deal with things like pear and pecl dependencies, PDO and handle the  deployments you&#8217;ll see above.</p>
<p>With 1.x comes features for both devs and hosters (and  allows for Targeted deployment).<span> </span>Hosters  can build their base image and include the needed components into the image &#8211;  and share it with their customers(the devs).<span> </span>Devs can download and use the image &#8211; and it&#8217;ll pull all the needed  parts down.<span> </span>When they are ready to  deploy &#8211; then from within the VM they can provision and deploy the  application.<span> </span>With the provisioning on  the hosting provider side building the image locally, deploying it and then  accepting the deployment of the application.</p>
<p>Should the dev decide to move hosting providers to  another supporting this model &#8211; as it&#8217;ll be built using the same components  (but probably a different base OS) &#8211; then it should be a simple process to  download their base image, deploy from the current VM to the new VM, test and  redeploy.</p>
<p style="font-size:10px;"><a href="http://posterous.com">Posted via web</a> from <a href="http://blog.inspiredthinking.co.uk/general-direction-for-the-virtual-machine-for">Dasher&#8217;s Dev Den</a></p>
Posted in Development, Internet, observations, PHP, Symfony, tips Tagged: deployment, Development, distributed php, distrubuted, hosting, PHP, Symfony, virtual machine <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dasher.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dasher.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dasher.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dasher.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dasher.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dasher.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dasher.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dasher.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dasher.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dasher.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dasher.wordpress.com&blog=86394&post=127&subd=dasher&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dasher.wordpress.com/2009/05/21/general-direction-for-the-virtual-machine-for-frameworks-symfony-zend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/be5e0c2700dfad20c5981478273d4853?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dasher</media:title>
		</media:content>
	</item>
	</channel>
</rss>