CASE STUDY · AUTOMOTIVE

Automotive Data & API Platform

Een schaalbaar backend-platform voor het verwerken, doorzoekbaar maken en beschikbaar stellen van voertuigdata aan tientallen automotive websites.

±28.000
voertuigmutaties per dag
±500.000
API-verzoeken per dag
±70
aangesloten websites
7 jaar
continu in productie

De uitdaging

Voor een Nederlands digitaal bureau in de automotive sector ontwikkelde ik een backend-platform dat voertuigdata uit een externe bron verwerkt en via een centrale API beschikbaar stelt aan een groot aantal dealerwebsites.

Dagelijks worden tienduizenden wijzigingen in het voertuigaanbod verwerkt. Tegelijkertijd moeten aangesloten websites snel kunnen zoeken in het actuele aanbod en continu over actuele voertuiggegevens en verwerkte afbeeldingen kunnen beschikken.

De uitdaging zit daarbij niet alleen in de hoeveelheid data. Import, opslag, zoeken, API-verkeer en beeldverwerking moeten naast elkaar kunnen functioneren zonder elkaar onnodig te vertragen.

De oplossing

Ik heb het platform opgebouwd uit verschillende onderdelen die ieder hun eigen verantwoordelijkheid hebben.

Data-inname

Voertuiggegevens en wijzigingen komen binnen vanuit Hexon en worden door een Laravel-applicatie verwerkt. De gegevens worden gecontroleerd en vervolgens beschikbaar gemaakt voor verdere verwerking.

Opslag en zoeken

De gestructureerde voertuigdata wordt opgeslagen in MySQL. Voor het snel zoeken en filteren in het voertuigaanbod wordt Solr gebruikt.

Hierdoor hoeft de REST API niet voor iedere zoekopdracht complexe queries rechtstreeks op de relationele database uit te voeren.

Centrale REST API

Een Laravel REST API vormt de centrale toegang tot het platform. De aangesloten websites gebruiken deze API voor het ophalen van voertuiggegevens en zoekresultaten.

Op dit moment verwerkt de API ongeveer 500.000 requests per dag voor circa 70 websites.

Asynchrone beeldverwerking

Afbeeldingen vormen een aparte verwerkingsstroom. Nieuwe voertuigafbeeldingen worden via Redis en BullMQ in wachtrijen geplaatst en vervolgens door Node.js/TypeScript workers verwerkt.

De beeldverwerking draait op twee aparte servers, los van de centrale applicatie. Hierdoor kan deze relatief zware verwerking onafhankelijk plaatsvinden van de voertuigimport en REST API en kan het werk over meerdere workers worden verdeeld.

Op reguliere werkdagen verwerkt deze infrastructuur meer dan 100.000 afbeeldingen per dag.

Techniek

Backend

PHP · Laravel · REST API

Data & search

MySQL · Solr

Asynchrone verwerking

Node.js · TypeScript · Redis · BullMQ

Door data-inname, zoeken, API-verkeer en beeldverwerking van elkaar te scheiden, kunnen de verschillende onderdelen onafhankelijk hun werk doen en waar nodig afzonderlijk worden doorontwikkeld.

Resultaat

Het platform is inmiddels zeven jaar continu in productie en vormt de technische basis voor ongeveer 70 automotive websites.

Dagelijks worden circa 28.000 voertuigmutaties verwerkt en ongeveer 500.000 API-verzoeken afgehandeld. De aparte beeldverwerking verwerkt op reguliere werkdagen daarnaast meer dan 100.000 afbeeldingen.

Door deze processen centraal af te handelen, beschikken de aangesloten websites via één platform over actuele voertuigdata, zoekfunctionaliteit en verwerkte afbeeldingen.

Mijn rol

Ik heb de volledige backendarchitectuur van het platform ontworpen en gebouwd. Van de verwerking en opslag van voertuigdata en de zoekfunctionaliteit tot de REST API en de infrastructuur voor asynchrone beeldverwerking.

In de afgelopen zeven jaar heb ik het platform verder ontwikkeld en aangepast aan nieuwe eisen, grotere datavolumes en veranderende technische behoeften. Het platform wordt nog altijd dagelijks gebruikt en actief onderhouden.

Contact

Een project of technisch vraagstuk bespreken?

Vertel me kort wat je wilt bereiken of waar je tegenaan loopt. Ik kijk of en hoe ik je daarbij kan helpen.

Liever rechtstreeks mailen?info@interomnia.nl
Backend development · API-integraties · WordPress maatwerk · onderhoud & troubleshooting
* verplicht

Door het formulier te versturen worden je gegevens alleen gebruikt om contact met je op te nemen. Zie de privacyverklaring.