DEV Community

Cover image for 🤬 De 64 GB Vloek: Waarom de kaarten in uw BMW of Mercedes niet 'zomaar' updaten, en hoe wij dit gevecht aangaan
Sven Dijkstra
Sven Dijkstra

Posted on

🤬 De 64 GB Vloek: Waarom de kaarten in uw BMW of Mercedes niet 'zomaar' updaten, en hoe wij dit gevecht aangaan

Hoi Dev.to! 👋

We zijn allemaal dol op updates die "over-the-air" binnenkomen, of het nu iOS is of een verse Node.js-versie. Snel, onzichtbaar en handig. Maar als het gaat om de kaarten in uw auto (ja, die ingebouwde, OEM-systemen), dan breekt de hel los.

Het navigatiepakket voor een moderne auto is geen paar megabyte aan JPEG’s. Het is een gigantische elektronische wereldatlas die 64 GB en meer kan wegen. En dat moet elke drie tot zes maanden geactualiseerd worden.

Stel je voor: je staat in de garage, pakt een zwak 3G-signaal op, en je auto probeert een bestand van 64 GB te downloaden. Klinkt als een utopie, toch?

Daarom kunnen wij als ontwikkelaars niet 'gewoon' de hele wereld opnieuw uploaden. Onze missie is om kilobytes aan veranderingen te leveren in plaats van gigabytes aan data. En dit is waarom dat zo'n enorme technische hoofdpijn is.

Stap 1: Een kaart is geen foto, maar een LEGO-constructie
Als je een foto bijwerkt, vervang je het oude bestand door het nieuwe. Klaar. Maar een kaart is geen enkel bestand. Het is een complexe, onderling verbonden graafstructuur, waarbij elk weggedeelte (rand) is verbonden met een kruispunt (knooppunt).

Als er in uw stad één nieuwe rotonde wordt gebouwd, verandert dat ene knooppunt de routeringslogica voor honderden omliggende wegen.

Als we simpelweg een binair deel van het bestand vervangen, zal het routeringssysteem in de auto waarschijnlijk crashen of u de rivier insturen, omdat de logische verbindingen verbroken zijn.

We hebben geen 'vervanging' nodig, maar een instructie: Verwijder oude rand A, voeg nieuwe rand B toe en verbind deze met knooppunt C. Dit is onze grootste uitdaging: incrementeel versiebeheer (delta-patching).

Stap 2: Maak kennis met de "Patch Machine" (Versioning Engine)
In plaats van Kaart 2024.1 met Kaart 2024.2 in zijn geheel te vergelijken, werkt onze backend als een supersnelle detective die niet met bestanden, maar met geografische objecten omgaat.

Geospatiale Databases: We gebruiken gespecialiseerde tools (zoals PostGIS op basis van PostgreSQL) die topologie- en ruimtelijke query's perfect ondersteunen. Hiermee kunnen we zeggen: "Laat me alle wegen zien die deze tegelgrens oversteken en die na 1 maart zijn gewijzigd."

Delta Generatie: Dit is het lastigste deel. Onze Versiebeheer Engine vergelijkt twee versies van de data per object en genereert een minuscule patch file. Dit bestand is geen dataset, maar een set commando's voor het autosysteem.

Analogie: Stel je voor dat je niet een heel nieuw kookboek van 500 pagina's verstuurt, maar alleen een sticker met correcties voor de drie recepten die zijn gewijzigd.

Stap 3: Hoe voorkom je hacks bij het tankstation?
Zelfs als de patch slechts 100 MB weegt, zijn het cruciaal belangrijke gegevens. In de auto-industrie is veiligheid heilig.

Niemand wil dat hackers een vals bestand in de auto laden dat de navigatie blokkeert, of erger nog, onjuiste instructies geeft aan de ADAS-systemen (rijhulp).

Digitale Handtekening: Elke patch file moet worden ondertekend met een cryptografische sleutel. Voordat de auto het installeert, controleert het systeem (iDrive of MBUX) deze handtekening. Als deze niet overeenkomt, wordt de update afgewezen. Dit is onze verzekering tegen ongeautoriseerde toegang.

Distributie (CDN): Omdat duizenden auto's over de hele wereld tegelijkertijd willen updaten, hebben we een betrouwbaar en snel CDN (Content Delivery Network) nodig om ervoor te zorgen dat die kleine patches foutloos in uw garage arriveren.

Ter afsluiting
Het actueel houden van ingebouwde autonavigatie is geen simpele IT-taak. Het is een complex engineeringproject dat vereist dat we omgaan met grafen, microservices, databases met hoge belasting en de strengste beveiligingsstandaarden.

Uiteindelijk vechten we voortdurend om ervoor te zorgen dat u een "verse wereld" snel, veilig en zonder dat uw accu leegraakt, ontvangt. 😉

Wat zijn de gekste problemen met gigantische bestanden of versiebeheer die jij in je projecten bent tegengekomen? Deel je ervaringen in de comments!

Top comments (0)