Wij werken al jaren als

Elixir ontwikkelaar

.

Naast onze app ontwikkelaars zitten onze back-end ontwikkelaars, iedere iOS, Android of web-applicatie heeft een vorm van datavoorziening en dataverwerking nodig en is grotendeels afhankelijk van deze achterkant. Of dit nu een content management systeem (CMS) is om de inhoud te kunnen beheren of een API om data uit externe bronnen op te halen en in een app te presenteren. Wij ontwikkelen vrijwel al onze back-end applicaties in Elixir.

Wat is Elixir?

Een korte geschiedenis van Erlang en Elixir

Nieuwe programmeertaal gebouwd met betrouwbare techniek

Elixir is een relatief nieuwe programmeertaal waarmee we back-end applicaties mee ontwikkelen en is gemaakt door José Valim. Elixir is gebouwd op Erlang en maakt gebruik van het Erlang Open Telecom Platform (OTP). Erlang OTP is in de jaren 80 ontwikkeld door Ericsson met als doel: vele verbindingen tegelijk af te handelen voor telecom-toepassingen. Denk hierbij aan GSM masten en centrales waarbij het essentieel is dat er heel veel processen tegelijk worden afgehandeld, in tegenstelling tot meer traditionele systemen die zich vooral focussen op het heel snel afhandelen van één enkele taak.

Erlang en OTP wordt vandaag de dag nog steeds in een groot deel van alle telefooncentrales gebruikt om zowel telefoonverbindingen als mobiel internet mogelijk te maken. Maar ook moderne systemen zoals WhatsApp maken gebruik van OTP om vele processen tegelijk te verwerken en om het systeem zo fout-tolerant mogelijk te maken. Vriendelijke taal voor programmeurs

Erlang is echter niet een heel vriendelijke taal voor programmeurs. Het is immers in 1986 ontwikkeld en, ondanks dat de taal nog steeds actief wordt ontwikkeld, komt de basis uit een tijd dat hogere programmeertalen nog een academische oefening waren. In tegenstelling tot modernere programmeertalen zoals Ruby waarbij er veel meer aandacht is voor de ontwikkelaar en zijn tijd. De bedenkers waren zelf eerst onderdeel van het Ruby on Rails ontwikkelteam en hebben daardoor bij Elixir hun ervaring in het opzetten van een prettig taal nogmaals kunnen toepassen. Het resultaat is Elixir, een moderne taal die door vele programmeurs gewaardeerd wordt door de prettige syntax, die de krachtige Erlang Virtual Machine (BEAM) aan kan sturen en daarmee de performance biedt van een "lower-level" programmeertaal. Het beste van beide werelden.

Fout tolerantie en concurrency

Doordat Elixir bouwt op het OTP systeem en daarbij gebruik maakt van dezelfde BEAM VM zijn Elixir applicaties ook in staat om heel veel processen tegelijk te runnen, dit noemt men "concurrency". In een webapplicatie ontwikkeld met Elixir zal elk request zijn eigen BEAM process opstarten. Het voordeel is dat de performance van het enkele request niet sterk afhankelijk is van de de hoeveelheid gelijktijdige request, theoretisch is er zelfs geen limiet op het aantal requests dat tegelijkertijd loopt. Daarnaast zijn de processen ook geïsoleerd van elkaar, een enkel request kan een fout tegenkomen en "crashen", zonder dat dit enig gevolg heeft voor andere processen. Dit resulteert in een hoge mate van stabiliteit van het ontwikkelde systeem.

Functioneel programmeren

In tegenstelling tot vele andere back-end talen die we hebben gebruikt, zoals: Ruby on Rails, Node.js, PHP enzovoorts is Elixir een functionele programmeertaal. De eerder genoemde zijn OOP programmeertalen, dat betekent dat ze object georiënteerd zijn. Dat is even wennen voor programmeurs maar onze ervaring leert dat een programmeur al binnen een paar weken als Elixir ontwikkelaar aan de slag kan. Met name voor webapplicaties merken wij zelf dat het functionele paradigma ineens veel logischer lijkt dan de OOP principes die vooral uitgaan van het bijhouden van "state".

Schaalbare applicaties ontwikkelen

Elixir stelt ontwikkelaars in staat om snel schaalbare applicaties te maken. Doordat Elixir een funcitonele programmeertaal is kunnen op verschillende servers uitgevoerd worden. Dit hoeft niet meer op 1 CPU van 1 server te gebeuren.

Dit zorgt er voor dat iedere Elixir applicatie die we ontwikkelen zeer snel (horizontaal) schaalbaar is. Door een eenvoudige load-balancer te laten bepalen naar welke instantie een request gaat zorgen we er voor dat processen verspreid worden en uiteindelijk de gebruiker zo min mogelijk ophouden.

Gebruikers van Elixir

Wij zijn niet de enige organisatie die applicaties ontwikkelen in Elixir. Ook deze bedrijven passen Elixir toe om grote applicaties goed te laten draaien:

  • Slack
  • Discord
  • Pinterest
  • Lonely Planet
  • Toyota Connected

De Elixir documentaire

Elixir documentary

Het Phoenix framework

Binnen Elixir is het Phoenix framework heilig

Elixir is nauw verbonden met Phoenix, het bijbehorende web-framework, ontwikkeld door de Elixir ontwikkelaars. Phoenix is ontzettend snel en tevens functioneel.

Gelijktijdige verbindingen, een probleem van nú

De eerder genoemde problematiek met vele gelijktijdige verbindingen (concurrency) heeft veel raakvlakken met het huidige internet. Websites en apps zijn tegenwoordig niet meer stand-alone en maken op zichzelf ook weer vele verbindingen naar andere services. Denk bijvoorbeeld aan microtransacties zoals chatberichten, notificaties, likes, file uploads of het ophalen van bepaalde datasets.

Erlang

Doordat de eerder genoemde problematiek met vele gelijktijdige verbindingen door Erlang is opgelost wordt Elixir nog veel interessanter. Groot bijkomend voordeel is dat het veel minder (server)geheugen nodig heeft dan object-georiënteerde programmeertalen.

Een goede keuze voor web-applicaties

Het feit dat je binnen Elixir ontzettend veel gelijktijdige verbindingen kunt leggen maakt het zeer populair bij verschillende bedrijven. Een sociaal medium als Pinterest is inmiddels volledig over op Elixir en ook populaire diensten als Pinterest, Slack, Discord en Adobe maken gretig gebruik van deze programmeertaal.

Elixir lijkt (zeker in combinatie met Phoenix) enorm op Ruby on Rails, een ander populair platform voor webapplicaties.

Wat je goed in Elixir kunt maken

Iedere back-end applicatie is in Elixir eigenlijk goed te ontwikkelen. Wat de programmeertaal echter zo goed maakt is vooral van toepassing op applicaties die:

  • Veel gelijktijdige verbindingen moeten ondersteunen zoals een live-chat
  • Veel dezelfde handelingen moeten uitvoeren zoals het geven van een like of een comment
  • Makkelijk schaalbaar moeten zijn over tijd, bijvoorbeeld voor startups die plotseling gigantische groei kunnen doormaken.

YipYip is een ervaren Elixir ontwikkelaar

Sinds het begin van Elixir zijn wij betrokken bij de ontwikkeling van het platform. We noemen onszelf ook een echte Elixir ontwikkelaar met inmiddels ruime ervaring.

Onze keuze is vrijwel altijd voor Elixir in combinatie met Amazon Web Services (AWS). Dit doen we altijd in combinatie met een verspreiding middels Docker containers. Omdat back-end applicaties ontzettend klein en snel zijn hoeven er ook geen grote resources van AWS te worden gevraagd, wat resulteert in lage kosten.

Elixir is hét ideale platform als back-end voor een app of website.

Interesse in een Elixir ontwikkelaar?

Bent u op zoek naar een Elixir ontwikkelaar of wilt u een back-end applicatie laten ontwikkelen in Elixir en Phoenix? Of heeft u een bestaande web-based Elixir applicatie waar u ondersteuning voor zoekt?

Waarom YipYip als back-end ontwikkelaar?

  • We gaan voor een langdurige relatie met onze klanten zodat we echt het verschil kunnen maken op de middellange termijn, we zien dit als essentieel om goed ondersteunde back-ends op te leveren.
  • We verdiepen ons écht in de materie van het bedrijf zodat we optimale systemen kunnen ontwikkelen die goed aansluiten bij de doelstellingen van de organisatie.
  • We hebben enkel in-house developers met brede kennis van back-ends, API's en server omgevingen.
  • Onze ontwikkelaars zijn zeer gedreven in alle diensten van AWS en zetten altijd schaalbare systemen op.
  • YipYip innoveert mee door gebruik te maken van de nieuwste techniek, ook op het gebied van native (iOS en Android) apps en te experimenteren met alles wat app ontwikkelaars tot nu beschikking krijgen.

Interesse

Interesse in het laten uitvoeren van elixir ontwikkelaar?