Contao-News

Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.

Composer und Contao für den Rest der Welt

von Martin Auswöger – Aktuelles

Seit Version 4.0 und nunmehr 7 Jahren nutzen wir Composer zur Installation von Contao und allen Erweiterungen. Composer wird dabei in erster Linie kostenlos von Jordi Boggiano und Nils Adermann entwickelt. Beide waren auf der Contao Konferenz 2017 in Potsdam und derjenigen 2018 in Salzburg unsere Gäste.

Composer ist seit vielen Jahren der Standard für Paketmanagement in PHP, bietet mehr als 300.000 Pakete zur Installation an und wurde bereits für ca. 50 Milliarden Paket-Installationen genutzt. Wir sind unglaublich dankbar für dieses Werkzeug, das uns die Arbeit jeden einzelnen Tag deutlich erleichtert.

Wir möchten die Gelegenheit nutzen und darauf aufmerksam machen, dass Jordi und Nils mit „Private Packagist“ auch viele nützliche Zusatzfunktionen anbieten, die es ihnen wiederum erlauben, an Composer selbst zu arbeiten. Schaut euch das gerne an!

Performance-Probleme und -Lösungen

Als Entwickler-Tool wurde Composer nie dafür entworfen, direkt auf einem Webserver genutzt zu werden. Vermutlich einer der Hauptgründe weshalb Contao 4 einen etwas holprigen Start erlebte. Die lange Ausführungsdauer und insbesondere der hohe RAM-Verbrauch bei Updates bereiteten uns von Beginn weg Probleme. Für deren Abhilfe haben wir 2018 die Composer Resolver Cloud geschaffen, die euch sicherlich mittlerweile bestens bekannt sein dürfte.

Für Yanick aus dem Contao Core-Team war dies aber nicht genug. Seit August 2019 arbeitet er gemeinsam mit Jordi und Nils regelmäßig an Optimierungen für Composer, um den Update-Vorgang zu beschleunigen und den RAM-Verbrauch zu verringern. Ein erster Schritt gelang bereits mit Version 2.0, seit ein paar Tagen ist nun der letzte Teil dieser Verbesserungen integriert worden.

Geplant ist die Veröffentlichung der Arbeiten mit der kommenden Version 2.2 von Composer. Auf der Kommandozeile kann die Verbesserung ab sofort getestet werden, eine ausführliche Erklärung dazu gibt es unter https://github.com/composer/composer/discussions/10276.

Für Contao, PHP und unseren Planeten

Die bisherigen Resultate sind extrem vielversprechend und viele Tests konnten bereits die 10-fache Geschwindigkeit als auch die Reduktion des Arbeitsspeicher-Verbrauchs von über 90 % vermelden. Es ist also damit zu rechnen, dass Updates in Zukunft deutlich schneller werden und viele Nutzer nicht mehr zwingend die Cloud nutzen müssen. In meinen persönlichen Tests hat sich ein Update einer Contao 4.9 Installation von einem Speicher-Verbrauch von 1.475 MB auf 123 MB verringert und die Zeit wurde dabei von 30 Sekunden auf 5 Sekunden gesenkt!

Diese Optimierung geht aber weit über das Contao-Universum hinaus. Um dies zu verdeutlichen, hab ich mir erlaubt, das Ganze mal etwas hochzurechnen:

  • Pro Tag wird ca. 3 Millionen Mal ein composer update durchgeführt. Angenommen ein durchschnittliches Update ist nun 20 Sekunden schneller, so werden täglich etwa 58 Millionen CPU-Sekunden eingespart. Mit zusätzlich angenommener Ersparnis von 500 MB Arbeitsspeicher kann dies auf Serverkosten im Wert von 500.000 USD jährlich umgerechnet werden. (Im Beispiel AWS Lambda 0,0000166667 USD je GB-Sekunde)

  • Nehmen wir an, dass die Ersparnis nicht zu höherer oder anderweitiger Nutzung führt, so könnten durchaus mehr als 235 Tonnen CO₂ pro Jahr eingespart werden (100W CPU, 400g/kWh CO₂). Das entspricht in etwa der Pflanzung eines Waldes mit 200.000 m² und somit fast 30 Fußballfeldern Waldfläche.

Danke Yanick, danke Nils und danke Jordi!
Ihr habt nicht nur uns, sondern auch dem ganzen Planeten etwas mehr Luft verschafft!

Alle News anzeigen

Kommentare

Kommentar von Martin Schwenzer |

MEGA!

Kommentar von Thorsten Neuhaus |

Das klingt großartig! Composer 2.0 war schon eine deutliche spürbare Performance-Steigerung, aber das ist ja noch mal eine ganz andere Dimension. Danke an das Team für euren unermüdlichen Einsatz!

Einen Kommentar schreiben

Bitte addieren Sie 2 und 2.