Blog

Github vs Beanstalk, the battle.

Geschreven door: Tom Claus 5 reacties

Tot enkele weken geleden hadden we binnen Inventis een eigen Git-server die moest instaan voor al het versiebeheer van onze projecten. Echter hebben we ervoor gekozen om over te schakelen naar een Software as a Service (SaaS) oplossing. In deze blogpost geven we even onze bevindingen mee van Github en Beanstalk die we enkele weken getest hebben.

Github vs Beanstalk

Een eigen interne gitserver heeft het grootste voordeel dat je zelf de controle hebt over je volledige server. Er is niemand die je limieten of beperkingen kan opleggen. Echter ben je dan ook verantwoordelijk voor de back-ups, het onderhoud en de beveiliging van je server. En wat doe je wanneer je server ineens enkele dagen offline is? Om deze redenen heeft Inventis gekozen voor een online SaaS oplossing. Je hebt tal van spelers op de markt, maar de grootsten leken ons vooral Github en Beanstalk.

Om de keuze te kunnen maken tussen beide systemen hebben we hen aan een grondige test onderworpen. Enkele developers hebben een paar weken op Github gewerkt, andere op Beanstalk. Na enkele weken hebben we gewisseld van dienst zodat iedereen beide systemen kon vergelijken.

Beanstalk

Beanstalk biedt zowel Git als SVN versiebeheer aan. Je kan enkel private repositories aanmaken met het oog op ontwikkeling en deployment. Ze hebben dan ook een volledig deployment systeem over (S)FTP geïntegreerd in hun diensten. Echter hebben we gemerkt dat het deployen niet altijd vlekkeloos en snel verloopt. Helaas als het mis gaat, gaat het ook grondig mis. Je heb geen roll-back systeem om snel terug te schakelen naar de vorige versie van je website. Wie creatief is, kan hier wel om heen werken, maar onze keuze gaat toch uit naar een andere, meer stabiele en betrouwbare deployment oplossing.

Het grote pluspunt van Beanstalk is dan wel hun rechtensysteem. Je kan verschillende gebruikers aanmaken en deze meteen de verschillende rechten toekennen over verschillende repositories.

Beanstalk maakt bij een gratis account dagelijks backups, een betaalde gebruiker krijgt elke 5 minuten een back-up van zijn data. Wie zelf zijn back-ups nog eens wil bijhouden, kan dat ook via de ingebouwde Amazon S3 oplossing.

Github

Github biedt naast versiebeheer nog een reeks van andere diensten aan die voor je project een meerwaarde kunnen betekenen. Zo kan je voor elke repository een wiki en issue tracker opzetten. Deze extra diensten zijn niet superuitgebreid, maar kunnen al snel een meerwaarde betekenen voor kleinere projecten. Je hebt hiernaast ook de keuze of je repository private of public kan zijn, het grote voordeel van public repositories is dat ze gratis zijn en je er ongelimiteerd mag aanmaken.

Het rechtensysteem is vrij complex opgebouwd. Je hebt een organisation waarin al je repositories zitten. Hierbinnen heb je teams met daaronder je gebruikers. Iedereen die je toegang wil geven tot je repository moet een eigen Github account aanmaken. Je kan geen uitnodiging sturen over e-mail, dus moet je de persoon er even op wijzen een account aan te maken om vervolgens de gebruikersnaam door te geven aan de beheerder van je organisation. Wanneer je beschikt over de gebruiker zijn username, kan je deze vrij gemakkelijk toevoegen aan een team binnen je organisation. Echter een team rechten geven tot je repositorie is iets omslachtiger. Je kan namelijk een team geen toegang geven tot al je repositories in één keer. Je moet dan telkens de repository openen, naar rechten gaan, team toevoegen en dit zo voor elke repository. Als je meer dan 50 repositories hebt, is dit een werkje van lange adem.

Pull requests, iets dat je enkel bij Github tegen komt, kunnen de controle over je project een stuk aangenamer maken. Zo kan je bijvoorbeeld een stagiair of freelancer aanpassingen laten doen aan je project, maar alvorens hun code geïntegreerd wordt in jouw project, kan je alle commits even nakijken en kiezen welke hiervan je wil laat doorvoeren in je project.

Wat hebben ze gemeen

Beide diensten bieden een zeer goede API aan, waar je zelf wat mee aan de slag kan gaan om je versiebeheer volledig te integreren in je eigen project-management software. Standaard bieden beide diensten al integraties met Basecamp, Harvest, Twitter,... aan.

Onze keuze gaat naar...

Dat onze keuze ging tussen Beanstalk en Github, was vooral omdat Beanstalk interessant leek met hun deployment verhaal. Echter deed beanstalk niet altijd wat het moest doen en was Beanstalk voor ons enkel een hosting voor ons versiebeheer geworden. We hebben dan ook gekozen voor Github omwille van hun huidige extra features, hun maandelijkse toevoegingen en het community gevoel.

Uiteraard vergeleken we enkel de features die voor ons van belang zijn, mocht je een andere ervaring hebben met één van beide services mag je dit zeker laten weten in de reacties hieronder.

5 Reacties op deze blogpost:

Filipvds
Door Filipvds op 26 december 2011

Ik vraag me toch af welke problemen jullie ondervinden met de Deployments van Beanstalk. Wij gebruiken dit nu reeds een jaar zonder problemen.

Welke oplossing hebben jullie gebruikt voor deployments ism GitHub?

Timmy
Door Timmy op 26 december 2011

Waarom is BitBucket niet geëvalueerd?
Lijkt me een waardig alternatief voor Github: Ook gratis, goede documentatie , wiki, mini issue-tracker, en zowel ondersteuning voor Mercurial als Git.

Tom
Door Tom op 02 januari 2012

@ Filipvds
Bij de deployments bij Beanstalk leken voor ons gewoonweg iets te traag te gaan, maar onze grootste zorg is dat je geen roll-back kan doen. Wanneer je deployment dan mis loopt zal je website offline zijn en kan je manueel terug online gaan zetten.
Momenteel zijn we nog druk bezig met onze nieuwe deployment-strategie uit te tekenen. Binnenkort zal hier zeker en vast nog wel een nieuwe blogpost over verschijnen.

@Timmy
Er bestaan naast Beanstalk en Github nog tal van andere diensten die Git-hosting aanbieden. Echter hebben we bij deze vergelijking de keuze gemaakt tussen de zowat meest populaire diensten die voor ons ook de features hadden die we het meest gingen gebruiken.

Kristof Claes
Door Kristof Claes op 03 januari 2012

Hoe gaan jullie om met de limiet op het aantal private repositories? Gebruiken jullie Github enkel voor de X meest recente projecten? Of enkel voor de projecten waar continue met meerdere developers tegelijk aan gewerkt wordt? Of nog een andere strategie?

Tom Claus
Door Tom Claus op 12 januari 2012

@Kristof
Het is dus zo dat we zowat enkel onze 50 meeste recente projecten op GitHub plaatsen en de overige projecten staan veilig gearchiveerd op een externe opslag. Indien er dan een update moet gebeuren aan een ouder project kan je deze snel pushen naar GitHub en ben je weer vertrokken.

Reageer ook op dit artikel

U kan optioneel inloggen met Twitter of Facebook. U krijgt dan de mogelijk om uw reactie ook te delen via Twitter of Facebook
Login with twitter
Aanmelden