allesnurgecloud #56 – Nachhaltige Software Architektur, NPM Package Protest, Kaskadenfehler und mehr.

allesnurgecloud.com ist ein kuratierter Newsletter mit Inhalten aus der OpenSource, Cloud und IT Welt.
Möchtest du den Newsletter wöchentlich per E-Mail erhalten?
Einfach hier abonnieren:

Please enter a valid email address
Diese E-Mail ist bereits registriert.
The security code entered was incorrect
Vielen Dank für Deine Anmeldung - bitte den Opt-In bestätigen.

Nachhaltige Software Architektur in der Cloud Ära

Das große Thema dieser Zeit ist die Nachhaltigkeit. Doch was bedeutet Nachhaltigkeit im Bezug auf moderne Software Architektur in der agilen & digitalen Welt, in der Software in der Cloud läuft?
Der verlinkte Artikel im StackOverflow Blog versucht hier etwas Licht ins Dunkel zu bringen und beschreibt erstmal 6 Prinzipien einer „Continuous Architecture“, denn wie Software auch, ist IT Architektur nie fertig – sondern ein kontinuierlicher Prozess.

Man sollte sich an folgenden 6 Prinzipien orientieren:

  1. “Architect products; evolve from projects to products“: Man sollte seine Arbeit als sich ständig veränderndes Produkt sehen, und nicht als ein statisches Projekt
  2. „Focus on quality attributes, not on functional requirements“: Der Fokus sollte auf Qualitätsmerkmalen liegen, die der Kern einer nachhaltigen Architektur sind (Beispielsweise sind dies: Cost Effectiveness, Configurability, Performance, Robustness)
  3. „Delay design decisions until they are absolutely necessary“: Manche Design Entscheidungen trifft man zu einem Zeitpunkt, wo man gar nicht genau weiß, die das Produkt am Ende aussehen wird. Deshalb ist es vollkommen ok, mit keiner 100% Lösung zu starten, die alle Eventualitäten abdeckt – aber Vorsicht, hier entstehen „Technische Schulden“.
  4. „Architect for change—leverage the “power of small.”: Änderungen sind an kleineren Einheiten einfacher, als an großen Monolithen. Zu klein darf es meiner Meinung nach auch nicht werden, denn hier lauert massiver Overhead.
  5. „Architect for build, test, deploy, and operate“: Man sollte bei der Architektur auch Konsequenzen bezüglich „testing“, „deployment“ und „operations“ im Auge behalten, und nicht nur „build“ im Fokus haben
  6. „Model the organization of your teams after the design of the system you are working on“: Teams so aufstellen, dass sie zur Architektur der Systeme passen.

Die Autoren empfehlen dann 4 wesentliche Aktivitäten, wovon mir eine ins Auge sticht:

Know your technical debt, the understanding and management of which is key for a sustainable architecture. 

Mit vielen Architektur Entscheidungen geht man Kompromisse ein, die teilweise nicht ohne Konsequenzen bleiben. Hier entstehen technische Schulden, die man irgendwann zurückzahlen sollte. Hier ist ein transparenter Umgang mit dem Thema wichtig, denn es kann absolut Sinn machen, zum Zeitpunkt A eine technische Schuld in Kauf zu nehmen, die einem zu Zeitpunkt B auf die Füße fallen könnte. Irgendwann dazwischen sollte man sie daher beheben.

Sustainable architectures in a world of Agile, DevOps, and cloud

NPM Package löscht Files aus Protest zum Ukraine Krieg

Die Maintainer des populären NPM Packages node-ipc haben am 8. März eine modifizierte Version ihres Packages veröffentlicht, welche die kompletten Projektdaten löscht, falls der User eine externe IP aus Russland oder Belarus verwendet.
Die Aktion dient als Protest gegen den Ukraine-Krieg und stellt das Node Ökosystem ein wenig auf den Kopf.
Durch teilweise automatisches Dependency Management wurde die „kompromittierte“ Version in diversen Abhängigkeiten gezogen, und hat beispielsweise um Vue.js Universum für ordentlich Furore gesorgt, beispielsweise beim CLI Tool „Vue.js CLI“.
Das Paket node-ipc hat über eine Million Downloads in der Woche und eine solche Änderung kann ordentlichen Schaden anrichten.
Die betroffenen Versionen sind mittlerweile von npm entfernt worden – zusätzlich gibt es einen eigenen CVE dafür (CVE-2022-23812).
Diese Fall zeigt mal wieder, wie verwundbar das Node Ökosystem gegen solche „Supply Chain“ Attacken sein kann, und warum es Sinn macht, seine Versionen zu pinnen und regelmäßig auf CVEs zu scannen.
Golem hat hier ebenfalls über den Fall berichtet.

BIG sabotage: Famous npm package deletes files to protest Ukraine war

Sponsored

Managed Hosting für Symfony und Laravel

Wir helfen Dir beim 24×7 Betrieb, bei Performance Problemen, bei Kostenoptimierung oder einfach beim Betrieb deiner Laravel & Symfony Web-Applikationen beim Cloud-Anbieter deiner Wahl.
Betreibst du Services wie GitLab, Zammad und Matomo selbst – hierbei unterstützten wir ebenfalls gerne – schau Dir einfach mal unsere Leistungen an.
Unsere Kunden kommen in unseren Case Studies zu Wort – wie beispielsweise diginights.com – ein Online Ticketing System auf Basis von Symfony.

Interessiert? Lerne uns einfach in einem 15 Minuten Video-Call kennen.

Jetzt We-Manage kennenlernen

Kaskadenfehler in verteilten Systemen

In der letzten Woche hatte ich es mal wieder mit einem größeren, kaskadierenden Fehler zu tun.
Kaskadierende Fehler (Cascading failures) kann man sich als eine Art Lawine vorstellen – häufig bringt ein kleiner Stein Vorgänge ins Rollen, die dann später komplett verteilte Systeme in Mitleidenschaft ziehen können.
Solche Fehler sind schwer zu debuggen oder in Testsystemen nachzustellen, da häufig das User-verhalten, oder die Reaktion von Dritten die Vergrößerung der Lawine maßgeblich beeinflusst.
Wie es der Zufall so will widmet Harri Fassbender im Blog der HDM (Hochschule der Medien, Stuttgart) dem Thema „Cascading Failures“ einen ausführlichen Artikel und nennt diverse, populäre Beispiele für solche Ausfälle:

  1. Gmail Ausfall in 2012
  2. AWS DynamoDB Downtime 2015
  3. Facebook/Instragram/WhatsApp in 2021

Harri beschreibt auch Antipattern, die man vermeiden sollte, unter anderem sind dies:

  1. Acceptance of an unrestricted number of requests: Eure Umgebung sollte von einem rate-limiting fähigen Reverse Proxy/Load-Balancer geschützt werden können
  2. Dangerous (client) retry behavior: Der so genannte „F5 Effekt“, wenn User denken, „das liegt an mit“ und kontinuierlich F5 drücken und somit für die 10/100-fache Request Anzahl sorgen.
  3. Work prompted by failure: Fehler in einem System können die Load/Fehler in anderen Systemen deutlich erhöhen.

Schaut gerne mal rein, der Artikel beschreibt das viel besser als das ich das hier ansatzweise zusammenfassen könnte.

Cascading failures in large-scale distributed systems

macOS: Docker Desktop mit massivem Performance Gewinn

Docker Desktop auf dem Mac hat in der Vergangenheit für teilweise lange Laufzeiten bei lokalen Entwicklungsumgebungen geführt. Dies ist war allem der Fall, wenn man mit einer Vielzahl an kleinen Files gearbeitet hat, beispielsweise mit NPM, oder auch beim Import von MySQL Datenbanken.
In Docker Desktop for Mac ist nun das neue „VirtioFS“ als Filesystem Layer verfügbar, welches die Performance drastisch erhöhen soll:

  • MySQL Import Performance um 90% verbessert (im Beispiel von 3m 16 Sekunden auf 18 Sekunden)
  • Composer install Peformance um 87% verbessert (von 1m 27 Sekunden auf 11 Sekunden)
  • Bootvorgang einer Typescript Applikation um 80% verbessert (1m 30 Sekunden auf 18 Sekunden)

Installiert einfach die neuste Version von Docker Desktop (Download Version 4.6) und aktiviert „VirtioFS accelerated directory sharing“ in den Preferences unter „Experimental Features“.

Speed boost achievement unlocked on Docker Desktop 4.6 for Mac

Essentielle Optimierung des Entwickler Workflows

Zach Wolfe, ein Software Engineer bei Amazon, erzählt von den Herausforderungen und Möglichkeiten, den Entwickler „Cold Start“ zu verbessern. Er beschreibt den „Cold Start“ als die Dauer für eine Entwickler Contribution nach einer längeren Abstinenz vom eigentlich Projekt. „Cold Start“ ist für ihn eine Komponente des Onboardings, aber nicht nur das, für ihn gehören dazu: Berechtigungen und Encryption Keys, Datenbankzugriffe, Dependencies, Deployment tools und mehr.

In this context, Cold Start is what it takes for a typical new-to-the-team engineer to make the simplest possible change to an application (think: Hello World).

Laut Zach haben diese Themen großen Einfluss auf die Entwickler Produktivität, Verfügbarkeiten, Umsätze, Qualität und Sicherheit von Applikationen. Als Beispiel nennt er die Log4J Lücke, die teilweise in älterer, nicht mehr aktiv weiter entwickelter Software gefixed werden musste.
Er nennt außerdem diverse Möglichkeiten, das Thema ganzheitlich zu optimieren:

  1. Entwickler Feedback einholen und das Feedback verarbeiten und optimieren
  2. Gibt es Skripte/Automatisierungen um die Entwicklungsumgebung einfach zu reproduzieren?
  3. Prüfung der Abhängigkeiten: Sind die wirklich alle nötig? Was ist überflüssig?
  4. Dokumentation der zum Kaltstart nötigen Aktivitäten – welche können automatisiert werden? Hier von eine pro Monat beheben (Hallo technische Schuld)

Im Artikel sind auch weiterführende Inhalte verlinkt, schaut gerne mal rein.

Optimize Development Cold Start

Linux Performance debuggen

Das hier gezeigte Schaubild ist auf eurem Mail Client vermutlich viel zu klein.
Es zeigt auf einen Blick eine Vielzahl an Möglichkeiten, um die Performance von Linux über verschiedene Debugging Möglichkeiten zu untersuchen und zeigt außerdem, an welcher Stelle im OS diese Tools ansetzen.
Manche davon kennt ihr sicherlich alle (toppsfreenetstat) – einige davon sind eher nicht so well-known (lsofvmstatstraceperf).
Das Bild in Originalgröße findet ihr im unten verlinkten Artikel oder direkt hier.

Linux Performance

Warum man einen Raspberry Cluster braucht

Der bekannte OpenSource Entwickler beschreibt im verlinkten Blog Beitrag, warum man einen Raspberry Pi Cluster braucht – oder auch nicht.
Er verteilt dort dir für sich und sein zu Hause nötigen Systeme in einem verteilten System. Für ihn sind dies: Sein Internet Monitoring System, sein Pi-hole, sein Home Backup, eine Kubernetes Test Umgebung und die Website pidramble.com.
Für ihn bringt es natürlich auch Spaß, aber viel Lerneffekte und die Möglichkeit, Dinge in einer eigenen und abgeschlossenen Umgebung auszuprobieren.

Why build a Raspberry Pi Cluster?

Anstehende Konferenzen im Frühjahr/Sommer 2022

Falls ihr im Frühjahr/Sommer eine Konferenz besuchen möchtet, habe ich hier folgenden Konferenz-Tipps für euch:

Habt ihr noch weitere Tipps? Welche Konferenzen besucht ihr in 2022?

Schmunzelecke

„Every kubernetes tutorial ever“ – @memenetes

💡 Link Tipps aus der Open Source Welt

PiVPN – OpenVPN und Wireguard

PiVPN ist sicherlich eine der einfachsten Möglichkeiten, um ein VPN auf einen Raspberry Pi zu bekommen.
PiVPN unterstützt die beiden populären VPN Protokolle WireGuard und OpenVPN. Das Tool kommt mit dem eigenen binary pivpn, mit dessen Hilfe ihr VPNs erstellen, ändern, debuggen und backupen könnt. In der Dokumentation zu PiVPN findet ihr dann Hinweise für diverse Clients, beispielsweise Windows, Mac/Linux, Android und iOS.

https://github.com/pivpn/pivpn

Estafette – OpenSource Container Scanner

Estafette ist ein vulnerability scanner für Container innerhalb eines Kubernetes Clusters. Estafette scanned hier regelmäßig aktive Container mit Hilfe der Trivy Scan Engine und reported diese dann.
Installiert wird Estafette via helm chart, das Reporting erfolgt innerhalb von Grafana und die Alarmierung über Prometheus.
Container Scanning sollte man zweistufig machen: während/nach dem Build und eben laufende Container (die ggf. schon länger nicht mehr neu gebaut wird) – bei Zweiterem hilft eben Estafette.

https://github.com/estafette/estafette-vulnerability-scanner

HOUDINI – Docker Images für Network Intrusion

HOUDINI ist eine Kollektion der Penetration Tester von SecSI.
Die Kollektion selbst könnt ihr hier online browsen und für eure Umgebung passende Docker-Images heraussuchen. Die Images sind Kategorisiert, beispielsweise für networkingmalwarephp oder javascript.
Möchtet ihr selbst weitere Tools beisteuern? Dann schaut doch mal im unten verlinkten GitHub Repository vorbei.

https://github.com/cybersecsi/HOUDINI

❓ Feedback & Newsletter Abo

Vielen Dank, dass du es bis hierhin geschafft hast!
Kommentiere gerne oder schicke mir Inhalte, die du passend findest.

Falls dir die Inhalte gefallen haben, kannst du mir gerne auf Twitter folgen.
Gerne kannst du mir ein Bier ausgeben oder mal auf meiner Wunschliste vorbeischauen – Danke!


Möchtest du den Newsletter wöchentlich per E-Mail erhalten?
Einfach hier abonnieren:

Please enter a valid email address
Diese E-Mail ist bereits registriert.
The security code entered was incorrect
Vielen Dank für Deine Anmeldung - bitte den Opt-In bestätigen.


0

Share

By About
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments

allesnurgecloud.com

© 2022 allesnurgecloud.com
0
Would love your thoughts, please comment.x