<div class="gmail_quote"><div>Hi Romain, Laurent,</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
Having Amazon ec2 image is also a very good idea, and some<br>
Smalltalkers have already made first important steps like:<br>
<br>
<a href="http://www.nickager.com/blog/Create-a-free-Gemstone-server-in-the-cloud-in-10-minutes/" target="_blank">http://www.nickager.com/blog/Create-a-free-Gemstone-server-in-the-cloud-in-10-minutes/</a></div></div></blockquote>
</blockquote></div></div></div></blockquote><div><br></div><div>After having shared the above Amazon AMI (Amazon machine image), and experimented with EC2 hosting, I realised there are some undesirable properties of AMIs:</div>
<div><br></div><div>1) It&#39;s an image; with all the benefits and problems that entails; namely either you like the whole thing or not. It&#39;s not composable; it&#39;s difficult to know precisely what has been configured and how, and difficult to choose the bits you like and replace the bits you don&#39;t like.</div>
<div>2) You can&#39;t (currently for Linux), create an AMI locally and upload it, meaning everything has to be performed remotely and operating remotely in the IDE over X11 forwarding can be slow.</div><div>3) I<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">t&#39;s difficult to share across regions. Amazon&#39;s data centres operate autonomously. I created the image in EU-WEST and copying it to US-WEST or US-EAST is non-trivial.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">4) </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">It&#39;s another configuration that I need to keep up to date and I don&#39;t.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">5) </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Not everyone wants to use EC2; other cloud services are available eg slicehost, linode, cloud-foudry etc</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">6) </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">I configured the AMI using Amazon Linux, people might prefer Ubuntu, RHEL, Suse, Windows!#*? etc</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">7) I configured the AMI using Nginx as a front-end server with added modules (<a href="http://nickager.com/blog/compiling-nginx-to-add-extra-modules/">http://nickager.com/blog/compiling-nginx-to-add-extra-modules/</a>), others might require other modules or other different server eg Apache, Cherokee etc. Even with the same server the configuration required can vary (url redirection, static file serving etc).</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">8) </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Everyone has a different way of performing backups, monitoring the health of the server. </span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">9) I configured the AMI using Gemstone, others might prefer image based persistence or MySQL, Postgres etc.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">10) Ideally the configuration would allow you to specify the number of images (or Gems for Gemstone) you&#39;d like to respond to request, behind a load balancer.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">11) We currently require infrastructure support for https eg stunnel or reverse proxy through a webserver eg <a href="http://www.monkeysnatchbanana.com/posts/2010/06/23/reverse-proxying-to-seaside-with-nginx.html">http://www.monkeysnatchbanana.com/posts/2010/06/23/reverse-proxying-to-seaside-with-nginx.html</a></span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></span></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">Quite a list... The main issue is that I&#39;d like to be able to build server infrastructure from composable pieces and share configuration knowledge with others. This led me to Chef (<a href="http://opscode.com/chef/">http://opscode.com/chef/</a>) where people create configuration &quot;recipes&quot; and a specific configuration is composed from these recipes. T</span></font><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">he benefit of using something like Chef is that there are already recipes for the standard parts of the server configuration </span><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">eg installing and configuring Apache, Nginx, MySql, Postgres etc have already been taken care of. Chef abstracts the OS, and the cloud (eg EC2, slicehost etc).</span></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br></span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">The task is then to create recipes for Seaside specific parts. There are a couple of Gemstone recipes already (<a href="https://github.com/timfel/gemstone-cookbooks">https://github.com/timfel/gemstone-cookbooks</a>, </span></font><a href="https://github.com/johnnyt/gemstone-cookbooks">https://github.com/johnnyt/gemstone-cookbooks</a>). A few of us (myself Norbert Hartl, Stephen Eggermont) plan to investigate coding our configurations is Chef - though it&#39;s still early days and it may prove that it&#39;s more complex than we need. </div>
<div><br></div><div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Our basic requirements are to be able to rapidly deploy production, staging, backup, Jenkins continuous integration and development VMs.</div>
<div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></div></div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Do others have experience with Chef or something similar? </div>
<div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Ideally ESUG or someone else would provide <a href="http://www.heroku.com/">http://www.heroku.com/</a> for Seaside - but it would require formalising more of our stack and providing a flexible solution to https.</div>
<div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Hope this helps,</div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">
<br></div><div style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Nick</div></div>