Bij Kabisa geloven we in kwaliteit, elegantie, creativiteit en flexibiliteit. Daarom gebruiken we al jaren Ruby on Rails voor het ontwikkelen van webapplicaties. In de IT wereld volgen veranderingen elkaar snel op. Soms zijn dit zaken die er niet veel toedoen, maar nu is er ontwikkeling gaande die we erg belangrijk vinden: de programmeertaal Elixir en het framework Phoenix. Deze technieken hebben volgens ons een mooie toekomst in het verschiet. Tevens sluit de taal en het framework erg goed aan bij onze overtuiging dat web applicatie ontwikkeling eenvoudig en elegant moet zijn.

Elixir en Phoenix

Wat is het?

Volgens wikipedia zijn er rond de ~700 programmeertalen waarvan Elixir een relatief nieuwe is. Versie 1.0 is uitgekomen in september 2014. De huidige versie is 1.2 en deze is begin 2016 uitgebracht. Elixir is nieuw, maar de onderliggende laag, BEAM Virtual Machine, dezelfde VM waar Erlang ook op draait is al 20 jaar open source. Phoenix is een webframework gebouwd door mensen die jarenlange ervaring met Ruby on Rails hebben. Het framework is dan ook vergelijkbaar met Ruby on Rails.

Wat maakt het zo goed?

Elixir combineert het gedachtegoed van Erlang (betrouwbare & schaalbare systemen) en Ruby (elegantie, developer happiness, productiviteit).

Erlang is een taal die ontwikkeld is voor telecom bedrijven. Bij telecombedrijven is het belangrijk dat ze kunnen vertrouwen op software die jarenlang onafgebroken blijft draaien. Een bekende grap binnen de Erlang community is de vraag wanneer een telecom provider gebeld heeft met de mededeling dat hun service tijdelijk uit de lucht ging voor onderhoud. Dit platform heeft zich al de afgelopen 20 jaar goed bewezen. Het wordt inmiddels bij 60% van al het 4G-verkeer wereldwijd gebruikt en wordt ook goed ingezet bij grote bedrijven zoals: Google, Facebook, Amazon, GitHub en Heroku.

WhatsApp is een recent voorbeeld van het succesvol inzetten van Erlang. Recentelijk hebben ze de mijlpaal van 1 miljard gebruikers behaalt met een engineering team van 57 personen. Dat komt ongeveer neer op 17 miljoen gebruikers per engineer. Pinterest (176 miljoen gebruikers) heeft recentelijk in blogpost aangekondigd meer met Elixir te doen nadat ze een onderdeel van hun service hebben omgezet van Java naar Elixir. De 10.000 regels code werd verkort tot ongeveer 1.000 en de responstijd ging omlaag naar 800 microseconden (1 microseconde == 1 miljoenste seconde).

Deze mooie cijfers & feiten zijn grotendeels toe te schrijven aan de BEAM Virtual Machine. Deze VM kenmerkt zich door het gebruik van geïsoleerde processen die onafhankelijk van elkaar opereren door elkaar berichten te sturen. Het is vergelijkbaar met emails die uitgewisseld worden door medewerkers. Doordat de processen niet elkaars geheugen/werk kunnen wijzigen is het mogelijk om een robuust systeem te bouwen wat ook nog eens uiterst schaalbaar is. Processen kunnen elkaar berichten sturen zonder dat ze door hoeven te hebben waar dat proces gedraaid wordt – wederom lijkt dit erg op het mail-metafoor. Als één van de processen onverhoopt zijn werk niet kan voortzetten, dan hoeft dat geen invloed te hebben op een ander proces. Processen die ertoe doen worden door zogenaamde supervisors in de gaten gehouden en indien nodig opnieuw gestart (vergelijkbaar met het ontslaan/aannemen van werknemers).

Wanneer zet men Elixir/Phoenix in?

Hoewel Elixir & Phoenix te gebruiken zijn voor een verschillende doeleinden, zijn er voorbeelden waarbij deze tools meer voordelen bieden dan de meeste hedendaagse tools. Situaties waarbij Elixir & Phoenix zeker is aan te raden:

Wat levert het op?

De voordelen van of keuze voor een bepaalde techniek zijn natuurlijk altijd sterk afhankelijk van de situatie, maar over het algemeen levert Elixir de volgende voordelen op:

Waarom zou ik hiervoor kiezen en niet voor een andere programmeertaal of framework?

Wanneer zet men Elixir/Phoenix (liever) niet in?

Elke technologie heeft nadelen of use cases waarom het beter niet ingezet kan worden. Enkele voorbeelden waar Elixir minder geschikt voor is:

Workshops en trainingen

Bij Kabisa worden er regelmatig workshops, meetups of trainingen over Elixir georganiseerd. Deze worden altijd aangekondigd in de nieuws-sectie van deze site. Houd onze website dus in de gaten!

PicMonkey Collage

Elixir in de praktijk

Bij Kabisa wordt Elixir reeds succesvol toegepast bij een aantal projecten. Een voorbeeld hiervan is de Wuunder app waarvan de backend is ontwikkeld in Elixir.

Heeft u nog vragen?

Denkt u er over om Elixir of Phoenix te gebruiken voor uw project of wilt u meer informatie? Neem dan contact met ons op of kom eens naar één van de door Kabisa georganiseerde workshop of meetups.

¹ voor veel projecten zijn concurrency & distribution geen uitgangspunt en leveren in een later stadium extra kosten om die te bereiken ² immutability, functional programming, static code analysis tools t.o.v. dynamische talen als JS & Ruby