Het verwerken van ruwe data naar een bruikbare asset, kan een complexe operatie zijn. De manier waarop data gevalideerd en geschoond moet worden, is bovendien sterk afhankelijk van veranderlijke business requirements. Het is daarom ontzettend belangrijk dat dit proces transparant en modificieerbaar wordt opgezet. Bij het opzetten van dit proces kunnen AWS Stepfunctions en AWS Lambda een prima uitkomst bieden. Door gebruik te maken van de natuurlijke samenwerking tussen deze twee services, is het mogelijk om een transparante en onderhoudbare workflow inrichten. Deze workflow is bovendien ook nog eens serverless.
In dit artikel worden de twee services geintroduceerd vanuit een data proccessing perspectief. Daarnaast worden praktische tips en tricks voor beide services toegelicht.
AWS Stepfunctions
Met AWS Stepfunctions is het mogelijk om verschillende AWS-resources aan elkaar knopen als stappen in een workflow. Hier kun je gebruik maken van if / else logica en iteratie om je business logic te implementeren. Daarnaast kun je gebruik maken van automatic retries en on fail policies om te komen tot een robuuste oplossing zonder verassingen. Ook maakt AWS stepfunctions het delen van data tussen resources eenvoudig door standaard een JSON (data) object door te geven tussen de stappen. Dit object kan bij aanroep van de stepfunction geinitialiseerd worden met externe data en kan vervolgens naar wens gemuteerd worden in de individuele stappen. Hierdoor kun je input data stapsgewijs verrijken tot je het gewenste resultaat hebt bereikt aan het eind van de workflow. AWS Stepfunctions biedt verder uitstekende inzichtelijkheid via de automatisch gegenereerde visuele weergave van de workflow.
Zo is niet alleen de business logic helder weergegeven, maar kun je ook problemen in de uitvoering goed traceren. Het geheel is bovendien serverless. Dit betekent dat de stepfunction niet meer is dan een definitie, welke bij aanroep andere resources de juiste triggers geeft om hun taken uit te voeren. Je betaalt uiteindelijk alleen bij het daadwerkelijke uitvoeren van de stepfunction, en dus niet voor het bestaan van de definitie.
Stepfunctions tips:
AWS Lambda
AWS Lambda is een service waar je serverless functies kunt definiëren. Deze functies staan klaar om aangeroepen te worden, zonder dat je je zorgen hoeft te maken over (of hoeft te betalen voor) een server. Je betaalt alleen voor de daadwerkelijk gebruikte resources, per 0.1 seconde.
Lamdas zijn dus eigenlijk niets meer dan een functie, welke een input en een output kan hebben. AWS Lambda ondersteunt een brede selectie aan talen: Javascript, Java, Python, C#, Powershell en Ruby. In de keuze voor welke taal je de oplossing wilt schrijven, wordt je dus niet snel gelimiteerd door AWS Lamda.
Als je complexe oplossingen wilt schrijven in Lamdas -zonder belangrijke programmeer principes zoals singular responsibility te schenden-, dan kom je er al snel op uit dat je logica moet splitsen over verschillende lambda functies. Gelukkig heb je met AWS stepfunctions het perfecte framework om de verschillende functies logisch aan elkaar te klikken.
Amazon is vrij ruimhartig met de resource limieten voor AWS Lambdas. Zo kan de Lambda maximaal 15minuten uitgevoerd worden, met maximaal 4GB RAM, een codebase van 250MB en heeft het 500MB aan tijdelijk geheugen. In principe, als je daar niet genoeg aan hebt: overweeg dan een andere resource (bijvoorbeeld AWS Fargate).
Lambda tips:
Conclusie
AWS Stepfunctions in samenspel met AWS Lambda kan een uitstekend framework voor dataprocessing bieden. Dit framework heeft sterke oplossingen voor transparantie, top level business logic, code ondersteuning en resource management. De geschiktheid zal echter per use case verschillen, dus het is belangrijk om ook de limieten van de besproken services in acht te nemen. We leven immers in tijden van overvloed aan prachtige oplossingen, waarvan AWS Lambda en AWS Stepfunctions er slechts twee zijn.
Geschreven door:
Victor Baker
Developer bij Qquest
Meer weten over Data & Analytics?
Lees alles over waar wij goed in zijn met Data & Analytics.
Meer weten over Data & Analytics?
Lees alles over waar wij goed in zijn met Data & Analytics.