<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's an image; with all the benefits and problems that entails; namely either you like the whole thing or not. It's not composable; it'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't like.</div>
<div>2) You can'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's difficult to share across regions. Amazon'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's another configuration that I need to keep up to date and I don'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'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'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 "recipes" 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's still early days and it may prove that it'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>