Slimme koppelingen tussen data en product

Om onze data te verbinden met onze apps en websites gebruiken wij vele verschillende API's in de backend van de systemen. Daarnaast zorgen we in de backend ook voor complexe berekening of schattingen op basis van kunstmatige intelligentie.

In dit artikel laten we zien wat voor technologieën we gebruiken om slimme backend oplossingen mogelijk te maken.

Elixir

Elixir

Elixir

Een nieuw opkomende high-level functionele programmeertaal die ideaal is voor web- en database systemen vanwege toepasbare fault-tolerance en de mogelijkheid om duizenden dan wel miljoenen processen tegelijk te laten verlopen. Elixir is gebouwd op de low-level programmeertaal Erlang en werd in de jaren '80 ontwikkelt voor telecommunicatie. Elixir is redelijk onbekend in vergelijking met bijvoorbeeld Ruby, Python en Python, maar mooie voorbeelden van het gebruik om complexe applicaties te bouwen zijn: WhatsApp, Discord, Pinterest, en League of Legends.

Elixir lijkt wat betreft haar syntax veel op Ruby en is bedoelt om op dezelfde manier leesbaar te blijven. Het grote positieve verschil is dat Elixir heel snel is omdat het compileert waardoor we duizenden tests binnen seconden kunnen draaien!

Het website framework Phoenix wordt gebruikt voor een overzichtelijk een snel development process. Dit framework maakt het mogelijk om gemakkelijk endpoints

Ruby

Ruby

Ruby

Een aantal van onze systemen maakt gebruik van Ruby met het bekende website framework Ruby on Rails. Ruby is een dynamische taal die vooral in het teken staat van leesbare code en is al bijna 20 jaar op de markt.

Voorbeelden van websites die dit framework hebben gebruikt zijn: Github, Airbnb, Kickstarter, Twitch, en vele anderen.

GraphQl

GraphQl

GraphQL

Traditioneel maken velen API's gebruik van het REST (representational state transfer) protocol waarbij de backend een zogenaamde endpoint beschikbaar maakt (/api/test). Apps en websites kunnen dan een HTTP request uitvoeren op dat adres met optionele parameters. Deze manier van data transfer is een go-to voor velen en een veilige en eenvoudige werkwijze. Echter brengt deze API stijl ook nadelen met zich mee. Het is bijvoorbeeld vaak lastig om uit te zoeken wat de juiste parameters zijn die meegestuurd moeten worden of wat je als client kan verwachten van de backend.

Daarom maken wij veelal gebruik van GraphQL, een query taal waarbij de client kan opvragen van de backend wat nodig is met daarbij duidelijk documentatie over wat er verwacht wordt mee te geven en wat je als response terug kan krijgen.

Hosting

Hosting

Heroku

Voor relatief kleine applicaties laten wij onze backend meestal hosten bij Heroku. Dit betrouwbare platform zorgt voor een robuuste en efficiente manier van hosting waarbij we zelf niet veel meer aan hoeven te optimalizeren. Op die manier kunnen we nog meer tijd besteden aan het code development process.

Google Cloud Platform

Voor grotere projecten hebben we vaak meer kracht nodig in de vorm van CPU's, RAM geheugen, database capaciteit en verkeer. Hier leent de Google Cloud Platform (GCP) zich perfect voor uit. We kunnen gemakkelijk optimaliseren in het gebruik van de hardware en dit ook nauwkeurig monitoren. In het GCP maken we gebruik van vele verschillende technieken zoals Gemini voor multi-modal processing, BigQuery voor het efficient bijhouden van miljoenen statistiek gegevens, PubSub om push notificaties te versturen naar een enorm aantal gebruikers tegelijk, en nog vele andere onmisbare oplossingen.

Afbeeldingen en andere bestanden

Bij statische content zoals afbeeldingen en overige bestanden is het belangrijk om de data zo snel en zo veilig bij de gebruiker te krijgen. Door de bestanden op te slaan bij Amazon of Google staan deze op een veilige en betrouwbare locatie met backups op meerdere locaties. In combinatie met Cloudfront kunnen de bestanden snel worden afgeleverd. Cloudfront slaat een cache van deze bestanden op in de buurt van de gebruikers. Omdat de bestanden een kortere afstand afleggen komen ze sneller bij de gebruiker aan. Een groot voordeel van Cloudfront is dat er gratis gebruik gemaakt kan worden van SSL verbindingen waardoor alle communicatie is beveiligd via HTTPS.

Databases

Databases

PostgreSQL

Onze keuze voor de primaire database is PostgreSQL. Dit is een zeer betrouwbare database en kunnen we in combinatie met Heroku en GCP hosting consistent backuppen. Voor complexe systemen die hoge database capaciteit vereisen kunnen wij altijd bijschalen en optimaliseren. Veel apps van ons maken gebruik van locatiegegevens en met de PostgreSQL uitbreiding PostGIS kunnen er snel en efficiënt queries op deze data uitgevoerd worden.

Redis

Voor supersnelle fire-and-forget job queues of tijdelijke caches gebruiken we Redis. Deze is een in-memory data structure store wat betekent dat we verschillende data-structuren kunnen opslaan en weer snel kunnen opvragen. In tegenstelling tot een typische database zijn er geen queries mogelijk maar daarentegen zijn bewerkingen op de data heel snel. Redis gebruiken we ondermeer om push notificaties te verturen en om te communiceren tussen meerdere nodes in multi-node systemen.

BigQuery

In GCP gebruiken wij de column-based serverless database BigQuery voor het opslaan van extreme hoeveelheden data. Door de kolom oriëntatie van deze database is het efficient om data snel op te halen en leent zich daarom heel goed uit om bijvoorbeeld statistieken op te slaan en te weergeven in grafieken van alle vormen en maten.

Continuous Integration en Continuous Deployment

Continuous Integration en Continuous Deployment

Het belangrijkste onderdeel in onze workflow is na het committen van de code om deze te pushen naar onze GIT repositories. Automatisch wordt de code dan door onze CI/CD service CircleCI opgepakt en gebuild en getest. Als de tests slagen wordt er direct een nieuwe versie gemaakt en online gezet. Hiermee zorgen we dat onze release-cycle kort is en dat het uitbrengen van een nieuwe versie niet spannend is, maar gewoon onderdeel van het dagelijks werk. Als we aan een project werken is het niet ongebruikelijk om meerdere releases op een dag uit te brengen.

Verrijk uw leven.

Ervaar het verschil met onze intelligente oplossingen. Neem vandaag nog contact op en ontdek hoe wij uw digitale wereld kunnen verrijken.