Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Wenn's mal wieder länger... dauern muss - Medienverarbeitung mit AWS Batch

Wenn's mal wieder länger... dauern muss - Medienverarbeitung mit AWS Batch

Wenn ich Prozesse habe, die aus vielen, kleinen, am besten unabhängigen Arbeitsschritten bestehen und ich mich um nichts kümmern will, ist AWS Lambda für mich das Mittel der Wahl. Aber es gibt die 5-Minuten-Laufzeitbegrenzung. Was mache ich also, wenn ich Prozesse habe, die regelmäßig länger laufen? Vor diesem Problem stehen wir immer wieder, wenn wir Medien wie Filme oder Hörbücher verarbeiten und absichern müssen. Transkodieren, automatisch Previews erstellen, mit Wasserzeichen absichern, das alles sind Arbeitsschritte, die eng an die Abspielzeit des Mediums geknüpft sind und deswegen gerne über die magische 5-Minuten-Marke geraten. In diesem Talk zeigen wir, wie wir dieses Problem mit AWS Batch gelöst haben, so dass es sich von außen betrachtet kaum von einer echten serverless-Lösung unterscheidet. Batch erlaubt uns die Verarbeitung in Einzelschritten abzuhandeln, einfach Abhängigkeiten zwischen diesen Einzelschritten zu definieren und stellt selbstständig sicher, dass einmal angestoßen die ganze Verarbeitungskette durchläuft. Es bleibt allerdings an uns, den Überblick über die angestoßenen Prozesse zu behalten. Dann aber bietet Batch nicht nur die für dieses Szenario nötige Compute-Power, sondern das auch noch zu einem günstigeren Preis als er in Lambda möglich wäre.

@wolkenarchitekt

September 27, 2018
Tweet

More Decks by @wolkenarchitekt

Other Decks in Programming

Transcript

  1. Wenn‘s mal wieder länger... dauern muss Medienverarbeitung mit AWS Batch

    Patrick Wolf | cosee GmbH [email protected] @wolkenarchitekt AWS Community Days Frankfurt, Sep 26+27
  2. PATRICK WOLF CEO • Geschäftsführer und Mitgründer von cosee •

    Seit 2013 in der Cloud unterwegs • Am liebsten zerlege ich Monolithen in schöne Microservices
  3. Wenn es eigentlich serverless sein sollte... Wenn ich: • Schlecht

    vorhersehbare Anfragen/Datenmengen habe – Volumen – Zeitliche Verteilung – ... Will ich: • Serverless sein / Lambda benutzen
  4. ...es aber nicht geht Was spricht gegen Lambda? • Langlaufende

    Verarbeitung (magische 5 min-Grenze) • Compute-intensive Verarbeitung (wenig preisgünstig) • Sprache/Runtime wird nicht unterstützt ( ¯\_(ツ)_/¯ )
  5. AWS Batch • Aufsatz auf ECS • Ermöglicht „Batch-Verarbeitung“ in

    Containern – Definition der Aufgabe als Docker-Container – Beliebige Menge an Aufträgen („Jobs“) – Batch kümmert sich um Scheduling/Sizing/Scaling
  6. ?

  7. Event-driven Containers Wie werden Container serverless? 1) Abgeschlossene Einzelaufgaben in

    Container auslagern 2) Events als Auslöser 3) Queueing und Running (managed)
  8. Aufgaben in Container auslagern Voraussetzungen wie bei Lambda auch: •

    Abgeschlossene Aufgabe: Container fährt hoch, läuft und fährt wieder runter • Einzelner Lauf unabhängig von anderen • Wahl der Technologie deutlich breiter – Dafür wieder minimaler Managementaufwand
  9. Events als Auslöser Irgendwie muss der Lauf eines Containers angestoßen

    werden. Beispiel: S3 File Event triggers Lambda Lambda creates Batch job
  10. Queueing and running Benötigt: Komponente, die einzelne Läufe eines Containers

    verwaltet • Built-in with Batch • Selbst bauen? SQS + Fargate? StepFunctions?