Datentransformation mit Python, Docker und Kubernetes

von Andrew Backes und Allen Fung

Wir haben kürzlich eine Anwendung entwickelt, um Datendateien für einen bestimmten Tag zu transformieren, zu verketten und auf einen FTP-Server hochzuladen. Konkret geht es darum, was die Anwendung macht.

  1. Lädt die einzelnen GZ-Dateien von S3 für einen bestimmten Tag herunter.
  2. Öffnet sie mit einem Reißverschluss
  3. Wandelt das JSON in ein pipe-begrenztes Format um.
  4. Verkürzt alle Daten eines ganzen Tages in einer Datei.
  5. Komprimiert diese Datei
  6. Lädt es per FTP hoch.

Es gibt ein paar interessante Dinge über diese Anwendung. Erstens, obwohl wir traditionell Shell-Skripte für diese Art von Anwendungen verwendet haben, haben wir uns diesmal für Python entschieden. Diese Sprache macht die Anwendung wartungsfreundlicher, da sie Unit-Tests problemlos unterstützt. Python unterstützt auch einen funktionelleren Programmierstil, den wir immer häufiger in der gesamten Organisation einsetzen.

Eine weitere interessante Sache an der Anwendung ist, dass sie in einem Docker-Container läuft. Ein wichtiger Vorteil von Docker ist, dass unsere Entwicklungsumgebung genau die gleiche ist wie unsere Produktionsumgebung. Infolgedessen sind wir nicht auf Probleme wie falsche Python-Versionen oder fehlende Python-Module während der Bereitstellung gestoßen. Dies half uns, die anfängliche Bereitstellung in der Produktion in wenigen Minuten abzuschließen, verglichen mit den Tagen, die sie in unserer bestehenden Umgebung benötigt hätte.

Um die Anwendung auf einem Cluster von Servern bereitzustellen, haben wir Kubernetes verwendet. Konkret haben wir den Befehl "kubectl create" verwendet. Die Eingabe für diesen Befehl ist eine YAML-Datei, die das Docker-Image, CPU-Ressourcen und zu verwendende Speicherressourcen enthält. Während diese Anwendung für den Betrieb in einem einzigen Container ausgelegt ist, ist es mit Kubernetes sehr einfach, in Sekundenschnelle auf mehrere Container zu skalieren. Hier ist ein Beispiel, wie man das macht.

$ kubectl scale rc my-application -replicas=5

Da die Replikas-Optionen auf fünf gesetzt sind, bedeutet das, dass wir auf fünf Container skalieren. Beachten Sie, dass wir auch Werkzeuge auf Kubernetes entwickelt haben, um die Verwaltung mehrerer Cluster zu erleichtern. Mit diesem Tooling geben wir den Standort an, an den bereitgestellt werden soll, und das System findet automatisch die richtigen Umgebungsvariablen für den angegebenen Standort.

Wie Sie gesehen haben, helfen uns Python, Docker und Kubernetes, sauberen Code zu schreiben und schneller zu iterieren, was zu besseren Produkten führt. In Zukunft hoffen wir, weitere Legacy-Anwendungen auf diese Umgebung umzustellen. Bleiben Sie dran für Blog-Posts zu diesem Thema.

Wenn du daran interessiert bist, Probleme wie diese zu lösen, würden wir uns freuen, wenn du dich für uns entscheidest. werden Sie Teil unseres Teams!

Über ShareThis

ShareThis erschließt seit 2007 die Macht des globalen digitalen Verhaltens durch die Synthese von Social Share-, Interessen- und Absichtsdaten. Auf der Grundlage des Verbraucherverhaltens auf mehr als drei Millionen globalen Domains beobachtet ShareThis Echtzeit-Aktionen von echten Menschen auf echten digitalen Zielen.

Abonnieren Sie unseren Newsletter

Erhalten Sie die neuesten Nachrichten, Tipps und Updates

Abonnieren

Verwandte Inhalte