Ruby óf Elixir

Wat is de beste keuze voor je volgende project?

Joost

Geschreven door Joost Saanen op 6-4-2018
5 minuten leestijd

Stel, je bent (technisch) projectleider of webdeveloper. Je staat aan het begin van een traject voor het ontwikkelen van een webapplicatie. Welke framework of programmeertaal kun je nu het best gebruiken? Ruby on Rails of Elixir & Phoenix?

Omdat wij specialisten hebben op beide gebieden, wordt ons deze vraag wel vaker gesteld. Voordat we hier iets over zeggen, eerst even een uitleg over deze programmeertalen en frameworks.

Ruby en Ruby on Rails

Ruby is begin jaren 90 ontwikkeld door de Japanner Yukihiro Matsumoto. Zijn doel was niet om een snelle taal te ontwikkelen, maar een taal die vooral zeer prettig was om mee te werken. Het duurde zo’n 10 jaar voor het Ruby on Rails framework werd ontwikkeld door David Heinemeier Hansson. Een mijlpaal die veel heeft betekend voor de toekomst van het ontwikkelen van webapplicaties. Ruby on Rails was een antwoord op de op dat moment (voornamelijk op Java en PHP gebaseerde) beschikbare frameworks. Deze brachten volgens veel developers te veel complexiteit en ”gedoe” met zich mee.

Lees ook: Waarom wij nog steeds Ruby on Rails gebruiken

Elixir

Het was José Valim, een zeer actief lid van de Ruby community, die bezig was met het verbeteren van de performance van Ruby on Rails. Omdat het Ruby ontbrak aan de juiste tools om zijn probleem op te lossen, ging hij kijken hoe andere technologieën dit hadden opgelost. Tijdens de zoektocht kwam hij de programmeertaal Erlang tegen. Hier raakte hij erg van gecharmeerd. Erlang is onder andere de taal die gebruikt wordt bij de backend-laag van het bekende WhatsApp. Omdat José in Erlang enkele basiselementen miste, besloot hij om een eigen programmeertaal te ontwikkelen: Elixir was geboren.

Lees ook: An Interview with Elixir creator José Valim

Niet lang daarna werd ook Phoenix gereleased. Phoenix is voor Elixir als wat Rails voor Ruby is. Volg je het nog?

Ook al zijn Elixir en Ruby misschien in vele opzichten verschillend, je kunt stellen dat Elixir een beetje is ontstaan uit Ruby.

Maar welke kun je nu het beste gebruiken? Hieronder noem ik enkele voor- en nadelen, die een juiste keuze kan vergemakkelijken.

ruby of elixir social media

Voordelen Ruby on Rails

Snel ontwikkelen
Ruby / Ruby on Rails stelt je in staat in een zeer korte periode een werkende versie van een webapplicatie te ontwikkelen. Dit is een belangrijke USP van Ruby on Rails.

Veel beschikbare plug-ins (gems)
Door de grote community zijn er veel gems beschikbaar. Voor ieder probleem is er wel een gem bedacht. Dit maakt het makkelijker om snel tot een Minimal Viable Product te komen. En kan het veel tijd schelen in het ontwikkelproces. Je hoeft immers niet steeds opnieuw het wiel uit te vinden.

Lees ook: Minimal Viable Product

Bewezen techniek
In Ruby on Rails worden al meer dan 10 jaar applicaties ontwikkeld. Door de enorme community die Ruby on Rails heeft, zal dit niet zomaar verdwijnen. Daarom blijft Ruby on Rails nog steeds een goede keuze voor het ontwikkelen van vele verschillende soorten webapplicaties.

Nadelen Ruby on Rails

Performance
Ruby is geen ‘beest’, wanneer er wordt gekeken naar de performance. Wanneer performance het belangrijkste onderdeel van je webapplicatie is, dan is Ruby (en Ruby on Rails) misschien niet de beste keuze. Overigens is performance wel te optimaliseren door een zwaardere uitrusting van de hostingomgeving. Maar dit brengt weer extra kosten met zich mee.

Multi-threading
Klinkt misschien wat technisch, maar wat hiermee wordt bedoeld is dat Ruby moeite heeft met het uitvoeren van meerdere processen (of threads) tegelijkertijd. Je kunt multi-threading zien als multi-tasken. Ruby is in staat om maar één taak tegelijk uit te voeren. Bij sommige applicaties kan dit een probleem zijn.

Automagisch, maar soms ook ondoorzichtig
Veel Ruby libraries of Ruby on Rails gems, kunnen een beetje magisch aanvoelen. Hiermee wordt bedoeld dat het werkt, maar soms niet helemaal duidelijk is wat er zich onder de motorkap precies afspeelt. Dit is vaak geen probleem wanneer je de gems en libraries gebruikt waar ze voor zijn bedoeld, maar wanneer je hier als developer wijzigingen gaat aanbrengen, kan dit soms wat lastig zijn.

Voordelen Elixir

Gebaseerd op bewezen techniek
Elixir is gebaseerd op de Erlang. Deze draait op de Erlang Virtual Machine (BEAM). Dit is een van de oudste VM’s ter wereld (zelfs ouder dan de Java VM). Erlang is dé programmeertaal als het gaat over systemen die veel berichten uit moet kunnen wisselen. De betrouwbaarheid van Erlang kun je terug zien in de cijfers. Zo draait de Ericsson AXD301, een telefoonswitch, al 21 jaar zonder downtime. Ongeveer 40% van telefoon switches in de wereld draait op Erlang en maar liefst 60% van al het mobiele (internet) verkeer.

Snelle taal
In tegenstelling tot Ruby is Elixir een gecompileerde programmeertaal. Dit maakt Elixir een veel snellere taal. De virtual machine is geïmplementeerd in C. Dit is voor het verkrijgen van betere performance en vanwege de architecturale keuzes (o.a. actor model, geen shared memory) uitermate geschikt voor concurrency.

Robuust
Elixir is een erg robuuste programmeertaal. Neem de eerder genoemde AXD301 die bestaat uit miljoenen regels Erlang code (waar Elixir van is afgeleid). De switch heeft een uptime bereikt van 99.9999999% (ja je leest het goed). Dit staat gelijk aan een downtime van 0,63 seconden… in de 21 jaar dat deze draait.

Nadelen Elixir

Relatief nieuw
Ook al is Elixir gebaseerd op Erlang. Het blijft nog steeds een relatief nieuwe taal.

Minder geschikt voor prototyping
Zoals eerder vermeld zijn er voor Ruby on Rails veel verschillende gems geschreven. Voor Elixir zijn er veel minder hex-packages (zo worden plug-ins bij Elixir genoemd) te gebruiken. Dit maakt Elixir minder geschikt wanneer je snel een eerste versie van een applicatie nodig hebt.

Conclusie

Zoals wel vaker bij dit soort vragen is er geen eenduidig antwoord. Het is afhankelijk van wat het doel is van de applicatie. Wanneer onderstaande requirements van een applicatie de boventoon voeren, is Elixir wellicht de beste keuze bij:

applicaties die te maken gaan krijgen met veel traffic of netwerkverkeer, applicaties waar communicatie met externe systemen plaats gaat vinden, real-time Applicaties waarin het draait om chat of live data, applicaties met veel connecties met IoT(Internet of Things ) apparaten.

Hierbij moet wel opgemerkt worden dat je minder verwend bent met beschikbare libraries. De Ruby on Rails community bestaat natuurlijk langer en heeft in al die jaren al heel veel verschillende soorten gems geleverd. Omdat Elixir & Phoenix nieuwer is, zijn hier minder bouwstenen voorradig. In veel gevallen zal hier dus zelf iets voor ontwikkeld moeten worden.

Ruby on Rails is een goede keuze wanneer je:

Vragen

Heb je na het lezen van deze blog nog vragen? Heb je hulp nodig bij de keuze van de juiste technologie voor jouw project of webapplicatie? Neem dan gerust contact met ons op.

Joost

Joost Saanen

Gepassioneerde all-rounder met brede interesses; van serverbeheer en cloudhosting tot (UI)design en (web)development. Hardloopt en schrijft het liefst tegelijk.

Bij Kabisa staat privacy hoog in het vaandel. Wij vinden het belangrijk dat er zorgvuldig wordt omgegaan met de data die onze bezoekers achterlaten. Zo zult u op onze website geen tracking-cookies vinden van third-parties zoals Facebook, Hotjar of Hubspot. Er worden alleen cookies geplaatst van Google en Vimeo. Deze worden gebruikt voor analyses, om zo de gebruikerservaring van onze websitebezoekers te kunnen verbeteren. Tevens zorgen deze cookies ervoor dat er relevante advertenties worden getoond. Lees meer over het gebruik van cookies in ons privacy statement.