SAP data injectie met Spark en Kafka

Het bouwen van data pijplijnen die connecteren naar traditionele back-end systemen en toegevoegde waarde opleveren.

Een belangrijk component van elk data platform zijn de onderdelen die data inname regelen. In vele van de huidige big data omgevingen, heeft de data een zodanige schaal in termen van doorvoer of volume dat oplossingen en tools nauwkeurig moeten worden overwogen.

Er is een trend in de markt gaande waarbij data steeds vaker in real-time wordt verwerkt om hier zoveel mogelijk waarde voor een organisatie uit te realiseren.

De reden hiervoor is dat inzichten sneller kunnen worden gemaakt, het te nemen besluit of te volgen proces kunnen worden beïnvloed waarmee risico’s kunnen worden beperkt of de klantenservice ervaring kan worden verhoogd of nieuwe ontwikkelingen ten aanzien van IoT kunnen worden ondersteund. Het is een feit dat de waarde van data over tijd vermindert.

Typische componenten van een complete oplossing voor een real-time data pijplijn bestaan uit data inname ongeacht volume en variëteit, verwerking van data op het moment dat deze data arriveert en data presentatie richting gebruikers en applicaties.

In de afgelopen jaren zijn Apache Spark en Apache Kafka belangrijke tools geworden in de toolset van een data architect, sinds deze tools zijn uitgerust met een brede verscheidenheid aan data inname mogelijkheden en ze succesvol zijn ingezet in missie-kritische omgevingen waaraan hoge eisen worden gesteld.

Apache Spark biedt naast de mogelijkheid van data inname tevens de mogelijkheid om transformaties op deze data in het geheugen plaats te laten vinden om zo data latency tot een minimum te beperken.

Proof of Concept

Scalar Data heeft recentelijk een proof of concept succesvol afgerond waarbij data injectie een belangrijk onderdeel was van de overal oplossing. Hiervoor heeft het een architectuur gebaseerd op Apache Spark en Apache Kafka geïntroduceerd waarmee de oplossing schaalbaar en toekomst proef is voor de immer toenemende volumes van data.

In deze specifieke proof of concept diende informatie van SAP clients geinjecteerd te worden en verwerkt te worden in de data opslag laag van de klant.

De te verzenden data van de SAP client konden meerdere tientallen gigabytes per klant bedragen, als een bewijs diende dit ingenomen te worden binnen een afzienbare hoeveelheid tijd.

Er waren meerdere restricties waaraan we moesten voldoen, we zullen deze hier niet in detail behandelen maar deze beïnvloeden de keuze voor de globale architectuur van de oplossing. Natuurlijk was beveiliging er één van die topprioriteit had naast overige.

Oplossing

We besloten om de data van de SAP clients te verzenden via het het beveiligde https naar een data injectie api aan de zijde van onze klant. Het moge duidelijk zijn dat er meerdere zaken waren om rekening mee te houden, zoals het opdelen van de dataset in kleinere delen, compressie van deze delen alvorens deze te verzenden naar de injectie api. Aan de server zijde moesten we deze delen weer samenvoegen in de juiste volgorde na controle of alle onderdelen zijn ontvangen alvorens ze uit te pakken op een NFS en ze te verwerken. De reden waarom we deze grote datasets opsplitsen in kleinere delen is vanwege mogelijke fouten die kunnen optreden tijdens het verzenden van data, je wilt niet nogmaals de complete dataset opsturen in het geval van een fout, maar door middel van detectie waar de fout optreedt kun je het opnieuw proberen vanaf het punt voordat de fout optrad hiermee waardevolle verzendtijd besparend.

Na het samenvoegen van de ontvangen data in de juiste volgorde en het uitpakken van de inhoud wordt de data verzonden naar een Kafka topic via een Spark producer proces dat luistert naar binnenkomende data.

Een Spark consumer proces consumeert de data van dit Kafka topic en transformeert de data naar het correcte formaat om het vervolgens op te slaan in de back-end database van de klant.

Zowel de Spark producer als consumer zijn beiden geschreven in de programmeertaal Scala.

Alhoewel het hierboven geschetste scenario slechts een vereenvoudigde weergave is van de realiteit geeft het je in grote lijnen inzicht in de oplossing.

De charme van deze oplossing is dat alle data in real-time wordt verwerkt op het moment dat het wordt ontvangen in het back-end van de klant, er zijn geen manuele interventies benodigd zoals we nog steeds veel tegenkomen in de praktijk. Dit maakt het mogelijk om sneller beslissingen te nemen op basis van deze data en hiermee meer waarde te realiseren voor de organisatie, daarnaast worden hiermee onnodige risico’s voorkomen.

Onderstaande afbeelding toont een vereenvoudigde weergave van de globale architectuur.

Omdat development slechts één onderdeel is van de uiteindelijke oplossing hebben we besloten om bewaking middels monitoring op enkele onderdelen van het back-end toe te passen als onderdeel van de oplevering van deze proof of concept. Via de door ons gemaakte dashboards is de klant in staat zijn oplossing te beheren middels het detecteren van mogelijke bottlenecks en defecten alvorens deze problematisch worden.

Het is duidelijk dat er nog veel meer werk te verzetten is na het opleveren van deze proof of concept om deze oplossing ook daadwerkelijk productiegereed te maken, iets waar we momenteel aan werken.

Succes

Sprekende met de woorden van de klant, de meeste proof of concepts falen wij zijn blij verrast met het resultaat van deze proof of concept in zo'n kort tijdsbestek, dankzij de inzet en professionaliteit van het Scalar Data project team.

Toekomstige verbeteringen

Iemand zal zeggen dat de huidige opslag laag van de klant in deze oplossing niet zo schaalbaar is en een toekomstige bottleneck zal vormen als de volumes zullen toenemen en hij/zij heeft hierin gelijk, het is echter zeer eenvoudig om deze opslag laag te vervangen met een meer schaalbare in de nabije toekomst. In deze proof of concept moesten we werken met de bestaande opslag laag en bewijzen dat we in staat waren hieraan te connecteren en de resultaten af te leveren in de bestaande database schema's, wat we hebben gedaan.

De globale oplossing is toekomst bestendig vanwege de onderliggende open source technology die we hebben ingezet voor deze proof of concept, we kunnen starten met het bouwen van modellen op basis van de binnenkomende streaming data en gebruik maken van een snelle opslag laag om inzichten te creëren of voorspellingen te doen, iets wat de klant tot voor kort niet voor mogelijk hield gezien de bestaande architectuur.

Overige zaken waar we aan kunnen denken is het verhogen van het nivo van self-service, door onze klant en hun klanten te voorzien van de juiste rapportage tooling om te kunnen connecteren aan de data opslag laag.

Toegevoegd waarde

Het is niet moeilijk om in te schatten waar de toegevoegde waarde van deze oplossing voor de klant uit bestaat:

  1. Semi-automatisch naar volledig automatisch verwerken van klant data, bespaard waardevolle tijd van schaarse IT-medewerkers
  2. Reductie van fouten, omdat er geen manuele handelingen meer benodigd zijn
  3. De data is eerder beschikbaar waardoor inzichten eerder beschikbaar zijn
  4. Betere mogelijkheden tot bewaking, bottlenecks kunnen eenvoudig gedetecteerd worden alvorens ze een issue worden
  5. Schaalbaarheid van de oplossing, waardoor meer klanten kunnen worden aangesloten
  6. Mogelijkheid tot het bouwen van modellen en het toepassen ervan op data om zo voorspellingen te kunnen doen

 

Indien je meer wilt weten wat Scalar Data kan betekenen voor jouw organisatie of je hebt een vergelijkbare use case waarvoor je een proof of concept wilt laten uitvoeren, aarzel dan niet om contact met ons op te nemen via [email protected] of via het telefoonnummer op onze website.

Ronald Span

Founder of Scalar Data, over 20 years of experience in a variety of national and international IT projects in different roles, development, consultancy, pre-sales, management and business development. Scalar Data is helping organizations to implement their big data strategy.