Beeldverwerking met AWS Spot fleet

Beeldverwerking en OCR kost veel CPU tijd. Dat is geen probleem maar wat als er elke dag tot duizenden beelden verwerkt moeten worden in verschillende beeldformaten? En er dan ook nog OCR/tekstherkenning op toegepast moet worden?

We ontworpen een cloud architectuur die virtueel onbeperkte parallelle verwerkingscapaciteit levert.


“Omdat we voor CPU per seconde betalen, maakt het niet uit of we 10 cpu's inzetten, of 100 cpu'svoor een sneller resultaat - de kosten blijven hetzelfde.”

De basisapplicatie

We hebben eerst een applicatie opgezet als microservice, die alleen de CPU intensieve taken uitvoert:

  • omzetten van beelden naar verschillende formaten en afmetingen, zoals progressive jpeg en webp
  • het omzetten van pdf's naar afbeeldingen van de afzonderlijke pagina's
  • toepassen van OCR/tekstherkenning op deze beelden met een op neurale netwerken gebaseerde herkenningscomponent

Er kunnen duizenden opdrachten verstuurd worden die in een verwerkingswachtrij geplaatst worden. Als de opdracht verwerkt is, komt het resultaat in een resultaten lijst terecht en kan deze opgehaald worden.


De architectuur

Binnen Amazon Web Services hebben we een architectuur opgezet die servers inschakelt naar behoefte. Als er veel opdrachten in de wachtrij staan, worden automatisch servers toegevoegd. Als er na een tijd zo weinig opdrachten over zijn dat servers niets te doen hebben, worden er servers uitgeschakeld.


“We kunnen aan erg goedkope capaciteit in de cloud komen door gebruik te maken van ongebruikte capaciteit”

Bij grote cloud providers zoals Amazon en Google is er veel overcapaciteit - CPU en geheugen dat voor korte tijd ongebruikt is. Deze capaciteit kan zeer voordelig ingekocht worden voor korte periodes. Dit levert kostenbesparingen op van 70-80%.

Omdat het systeem is opgezet als microservice met 'wachtrijen' en queues kan deze hier zeer goed gebruik van maken.


“Door fault tolerance maakt het niet uit welke servers de beelden verwerken. We kunnen overal goedkope servers inschakelen als we willen.”

Het systeem als geheel is fault tolerant. Als een verwerking faalt, wordt deze automatisch door een andere machine opgepakt. Deze aanpak is nodig om efficiënt op- en neer te kunnen schalen.

Een bijkomend voordeel hiervan is dat er zelfs zeer goedkope servers ingezet kunnen worden buiten Amazon. Als deze uitvallen is er niets aan de hand en nemen servers bij Amazon het over.



Datum: Oktober, 2018

Vaardigheden

  • PHP
  • Symfony
  • AWS SQS/SNS
  • AWS EC2
  • EC2 AMI creation
  • EC2 Launch Templates
  • AWS EC2 AutoScaling groups
  • AWS EFS
AWS Certified Devops Engineer

Ik volg momenteel de AWS Certified DevOps Engineer-cursus om mijn kennis te vergroten op het gebied van het automatiseren van infrastructuur en CI/DI.

AWS migratie

Update voor het lopende AWS migratie project.

Load en Stress tests

Cloud infrastructuur testen met K6

Gobot RPI simulator

GPIO pin simulator voor RPI geschreven in Golang

Reactions Craft CMS plugin

Nieuwe Craft CMS plugin voor Facebook stijl reacties

Liveblog Beurs

Gedaan met stoffige beursartikelen. Hier een Facebook-stijl blog feed om het beursnieuws wat kleurrijker en actueler te maken.