<?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/"
	>

<channel>
	<title>Luminis Software Development &#187; Cloud</title>
	<atom:link href="http://lsd.luminis.eu/category/cloud/feed/" rel="self" type="application/rss+xml" />
	<link>http://lsd.luminis.eu</link>
	<description></description>
	<lastBuildDate>Sun, 03 Mar 2013 08:42:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Heroku</title>
		<link>http://lsd.luminis.eu/heroku/</link>
		<comments>http://lsd.luminis.eu/heroku/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 15:12:20 +0000</pubDate>
		<dc:creator>Albert Oudenampsen</dc:creator>
				<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://lsd.luminis.eu/?p=1332</guid>
		<description><![CDATA[De laatste jaren houd ik me meer met requirements bezig dan met programmeren. Soms bouw ik een prototype of een proof-of-concept en dan gebruik ik meestal Ruby-on-Rails. Dat ontwikkelt zo lekker snel.
Ik zou natuurlijk ook Groovy-on-Grails kunnen gebruiken, dat gaat net zo snel maar daar zitten van die zware java en hibernate libraries onder. Rails [...]]]></description>
			<content:encoded><![CDATA[<p>De laatste jaren houd ik me meer met requirements bezig dan met programmeren. Soms bouw ik een prototype of een proof-of-concept en dan gebruik ik meestal Ruby-on-Rails. Dat ontwikkelt zo lekker snel.<br />
Ik zou natuurlijk ook Groovy-on-Grails kunnen gebruiken, dat gaat net zo snel maar daar zitten van die zware java en hibernate libraries onder. Rails daarintegen is een lekker lichtgewicht taaltje en de ontwikkelomgeving (ik gebruik TextMate) start zelfs op mijn bejaarde mac binnen enkele seconden. Bovendien is de syntax van ruby erg intuitief. Ideaal voor roestige programmeurs zoals ik.</p>
<p>Tot nog toe was het probleem alleen: hoe maak ik mijn prototype beschikbaar voor mijn klanten? Systeembeheerders worden niet echt vrolijk als ze de webserver moeten inrichten voor rails applicaties.</p>
<p>Maar&#8230;.. dan is er Heroku, een &#8220;Platform as a Service&#8221; speciaal voor rails applicaties. Hoe bruikbaar is dat?</p>
<p>Met &#8220;Platform as a service&#8221; heb ik altijd de angst dat je in je code al rekening moet houden met platform. Oftewel, als je voor een bepaalde PaaS kiest, dat zit je eraan vast. Maar Heroku is een verrassend elegante implementatie. Binnen 15 minuten had ik me geregistreerd, SSH keys aangemaakt, mijn applicatie neergezet en de database geconfigureerd. En bovenal, code aanpassingen waren niet nodig.</p>
<p>Zo doe je dat:<br />
Stap 1. Maak een Rails applicatie.</p>
<p>Stap 2. Maak een GIT repository aan. Vanzelfsprekend is het nog handiger om dat te doen tijdens het ontwikkelen van de rails applicatie, maar anders gaat dat met drie kreten in een terminal window.<br />
<code>git init<br />
git add .<br />
git commit -m initial</code></p>
<p>Verder heb je nog een GitHub account en SSH keys nodig. Als je dat nog niet hebt dan staat hier beschreven hoe dat moet: http://help.github.com/mac-key-setup/ (Windows en Linux beschijvingen zijn er natuurlijk ook).</p>
<p>Stap 3. Zet alles op Heroku.<br />
Eerst als nieuwe klant registreren bij Heroku. Dan een gem installeren:<br />
<code><br />
&gt;sudo gem install heroku<br />
</code></p>
<p>De SSH key bij heroku bekend maken:<br />
<code><br />
&gt;heroku keys:add<br />
</code></p>
<p>Create een omgeving in Heroku: &gt;<br />
<code><br />
&gt; heroku create<br />
Creating furious-sword-84.... done<br />
Created http://furious-sword-84.heroku.com/ | git@heroku.com:furious-sword-84.git<br />
Git remote heroku added<br />
</code></p>
<p>Heroku bedenkt prachtige krijgshaftige namen voor de applicatie, zoals hier &#8220;furious-sword-84&#8243;, de naam kan je natuurlijk aanpassen. Ik heb de naam laten staan en op http://furious-sword-84.heroku.com kan je nu mijn InsultMe applicatie vinden. InsultMe heeft overigens geen enkele serieuze bedoeling, het is slechts mijn versie van HelloWorld.</p>
<p>Nu de sources overbrengen naar Heroku:<br />
<code><br />
&gt;git push heroku master<br />
</code></p>
<p>De database tabellen aanmaken:<br />
<code><br />
&gt; heroku rake db:migrate<br />
</code></p>
<p>En nog wat initiele vulling voor de tabellen door middel van fixtures:<br />
<code><br />
&gt; heroku rake db:fixtures:load<br />
</code></p>
<p>Of de locale database overzetten naar de Heroku database:<br />
<code><br />
&gt; heroku db:push<br />
</code></p>
<p>Een database terughalen kan natuurlijk ook:<br />
<code><br />
&gt; heroku db:pull<br />
</code></p>
<p>That&#8217;s all!</p>
<p>Bekende key-factoren voor succesvolle &#8220;as a Service&#8221; producten zijn &#8220;eenvoud&#8221;, &#8220;prijs&#8221; met in ieder geval een gratis instapniveau en &#8220;Kwaliteit&#8221;. Heroku voldoet ruimschoots aan de &#8220;eenvoud&#8221; factor. Voor de &#8220;free&#8221; versie mag de database 5MB groot worden (dat zou wat meer mogen zijn) en krijg je de beschikking over 1 Dyno. De performance van die ene Dyno lijkt overeen te komen met de applicatie draaien onder WEBrick op mijn MacBook (ja, ook als ik het gebruik met een serieuzere applicatie dan InsultMe). Voor grotere applicaties is het eenvoudig om wat op-te-schalen. Ik heb me nooit verdiept in PaaS-pricing, maar de kosten hiervoor lijken me reëel en komen in de buurt van de MS-Azure prijzen (ik hoor het graag als dit niet zo is).<br />
En over &#8220;Kwaliteit&#8221;: het moet werken, gewoon altijd. Ik heb nog niet meegemaakt dat mijn applicaties niet te benaderen waren. Ook hiervoor ben ik benieuwd naar ervaringen van anderen.</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.eu/heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
