Heroku

29 december 2010  |  
2 min leestijd

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 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.

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.

Maar….. dan is er Heroku, een “Platform as a Service” speciaal voor rails applicaties. Hoe bruikbaar is dat?

Met “Platform as a service” 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.

Zo doe je dat:
Stap 1. Maak een Rails applicatie.

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.
git init
git add .
git commit -m initial

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).

Stap 3. Zet alles op Heroku.
Eerst als nieuwe klant registreren bij Heroku. Dan een gem installeren:

>sudo gem install heroku

De SSH key bij heroku bekend maken:

>heroku keys:add

Create een omgeving in Heroku: >

> heroku create
Creating furious-sword-84.... done
Created http://furious-sword-84.heroku.com/ | git@heroku.com:furious-sword-84.git
Git remote heroku added

Heroku bedenkt prachtige krijgshaftige namen voor de applicatie, zoals hier “furious-sword-84”, 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.

Nu de sources overbrengen naar Heroku:

>git push heroku master

De database tabellen aanmaken:

> heroku rake db:migrate

En nog wat initiele vulling voor de tabellen door middel van fixtures:

> heroku rake db:fixtures:load

Of de locale database overzetten naar de Heroku database:

> heroku db:push

Een database terughalen kan natuurlijk ook:

> heroku db:pull

That’s all!

Bekende key-factoren voor succesvolle “as a Service” producten zijn “eenvoud”, “prijs” met in ieder geval een gratis instapniveau en “Kwaliteit”. Heroku voldoet ruimschoots aan de “eenvoud” factor. Voor de “free” 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).
En over “Kwaliteit”: 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.

29 december 2010  |  
2 min leestijd

Kennismaken?

Luminis onderscheidt zich van andere aanbieders in de ICT door een waarde- en klantgedreven aanpak. Wij willen vooruitgang zien, zowel bij onze klanten als bij onze medewerkers. Graag komen we met je in contact om te ontdekken hoe we die kunnen realiseren.

Contact

©2019 Luminis Arnhem – Leveringsvoorwaarden

Design: Eyefun