Gastblog: Welche Neuheiten bringt Drupal 8 wirklich?

Previon+ und Wunder präsentieren die wichtigsten Neuheiten von Drupal 8. Diese werden Ihnen von Florian Loretan, Software Architect bei unserem Partner Wunder, aufgezeigt. Im Rahmen dieses Posts werden nur die wichtigsten Features zusammengefasst, den detaillierten Überblick Artikel zu allen Neuheiten gibts bald als Whitepaper bei Wunder.

Während viele Artikel die neuen Funktionen von Drupal 8 beschreiben, konzentrieren sich die meisten auf neue Out-of-the-box-Funktionen für den End-Benutzer. Wer den Fokus nur darauf legt, vergisst jedoch die grössten Vorteile von Drupal 8. In diesem Artikel präsentieren wir eine Liste der Änderungen, welche wirklich einen Unterschied machen und besonders beim Umsetzen von komplexen Enterprise-Applikationen wichtig sind.

Die Vorteile von Drupal 8

Artikelnavigation

 

Serviceorientierte Architektur

Serviceorientierte Architektur

Wie Sie vermutlich aus anderen Quellen gehört haben, verwendet Drupal 8 Symfony-Komponenten. Das wichtigste daran ist, dass Drupal 8 nun denselben serviceorientierten Ansatz verfolgt und den Code ähnlich strukturiert wie Symfony. Dies beeinflusst nicht nur den Drupal-Kern, sondern auch die Entwicklung von Anwendungen basierend auf Drupal.

Gekapselte Komponenten

Der Einsatz von formal definierten Services unterstützt und fördert eine saubere Trennung zwischen Komponenten. Diese Kapselung führt zu klaren Abhängigkeiten und definierten Interfaces zwischen den verschiedenen Bausteinen des Systems. Diese neue Struktur ersetzt weitestgehend den prozeduralen Code von Drupal 7, der oftmals zu unzureichend definierten Anwendungsbereichen und versteckten Abhängigkeiten führte.

Der Einsatz einer objektorientierten Struktur bietet ausserdem eine viel bessere Kontrolle über die Code-Qualität. Der Einsatz einer IDE schützt Programmierer vor grundlegenden Fehlern, die automatisch erkannt werden. Ausserdem sind formell definierte Strukturen jetzt viel einfacher zu erkunden. Code-Autovervollständigung und Inline-Dokumentation verringern zudem den Bedarf an umfangreichen technischen Dokumentationen.

Prüfbare Units

Drupal 7 war nur mit browserbasierten Integrationstests prüfbar, die auf dem Level des User-Interface arbeiteten und sehr langsam waren. Während diese Tests überprüften, ob die Funktionen wie spezifiziert reagieren, hatten sie keine Auswirkung auf die Förderung von sauber strukturiertem Code, welche einer der wichtigsten Grundlagen einer testgetriebenen Entwicklung ist (Separation of Concerns). Services von Drupal 8 machen nun Gebrauch von einem soliden Dependency-Injection-Container und ermöglichen somit das einfache Testen mit Unit-Tests, was eine viel tiefere und detailliertere Testabdeckung der Business-Logik erlauben. Damit verfügt man über eine «Testpyramide» mit vielen Unit-Tests (hauptsächlich durch den Drupal-Kern und Contributed-Modulen bereitgestellt), welche die verschiedenen Service-Levels abdecken und browserbasierten Integrationstests, welche eine Qualitätsgarantie auf höchster Ebene bieten.

Neben gekapselten Komponenten und prüfbaren Units wird der serviceorientierte Ansatz von Drupal durch die folgenden Eigenschaften geprägt:

  • Saubere Integration von Third-party-Komponenten
  • Code-Wiederverwertbarkeit
  • Erweiterungen statt Überschreibungen
  • Weniger externe Abhängigkeiten

Mehr zu diesen Eigenschaften im vollständigen Artikel von Wunder.

 

Configuration Management

Configuration Management

Code-­driven Development (die Praxis, das alle Änderungen am System über Dateien/Code gemacht werden, welcher unter Versionskontrolle liegen und keine manuellen Schritte für das Deployment notwendig machen) hat sich schon über lange Zeit als bewährtes Modell erwiesen und stellt ein absolutes Muss für komplexe Systeme dar. Doch die Tools in Drupal 7 und früheren Versionen waren Add-ons, welche mit inkonsistenten Datenstrukturen und grossen Unterschieden zwischen den Modulen zu kämpfen hatten, was dazu führte, dass beim Deployment unerwartete Fehler auftreten konnten. Das Configuration-Management-System, welches in Drupal 8 eingeführt wurde, bietet nun eine solide Grundlage: Die Struktur der Konfigurationen ist durchgehend konsistent und wurde von Grund auf so entwickelt, dass sie einfach exportiert und deployed werden kann.

Zur Validierung und zum Dependency Management als Teil vom Configuration Management erfahren Sie mehr im Artikel von Wunder.

 

Performance

Performance

Die Performance eines Systems stabil zu halten, während dieses an Komplexität und Last (Traffic) zunimmt, ist eine der grössten Herausforderungen bei der Entwicklung skalierbarer Anwendungen. Obwohl Drupal 8 bei einer einfachen Installation nicht unbedingt schneller ist, verhält sich das System doch sehr anders im Vergleich zu Drupal 7, wenn es um die Skalierung in verschiedenen Dimensionen geht.

Skalierung durch einen Autoloading-Mechanismus

Drupal 7 hat eine monolithische Architektur, bei der ein Grossteil der Codebasis bei jeder Anfrage geladen wird. Trotz einiger umgesetzten Massnahmen wurde das System mit jeder hinzugefügten Funktionalität und jedem dazugekommenen Contributed-Modul langsamer. Das führte bei allen komplexen Projekten dazu, dass sie sehr stark vom Caching Gebrauch machten, was insbesondere für authentisierten Traffic und transaktionsbasierte Abläufe sehr aufwändig und problematisch werden konnte.
Drupal 8 nutzt den Vorteil eines soliden Autoloading-Mechanismus, was soviel bedeutet wie, dass jede Komponente nach Bedarf geladen wird und jede Anfrage nur das Nötigste lädt. Im Hinblick auf grosse und komplexe Projekte besteht das Ergebnis darin, dass bestehende Funktionalitäten nicht negativ beeinflusst werden, wenn neue Funktionalitäten in verschiedenen Bereichen der Seite hinzugefügt werden. Die Leistung des Systems bleibt grundsätzlich konstant, auch wenn die Komplexität zunimmt.
 

«Smart» Render Cache

Manchmal sind bestimmte Elemente auf einer Seite nur für den aktuellen Benutzer relevant. Zum Beispiel eine einfache Nachricht, welche «Hallo, » anzeigt. Bei Drupal 7 bedeutete dies, da diese Nachricht für jeden Benutzer unterschiedlich war, dass diese Seite nicht komplett im Cache abgelegt werden konnte. Dieses Problem wurde in Drupal 8 durch den Dynamic Page Cache gelöst. Dieser Cache erkennt, welche Teile einer Seite so spezifisch sind, dass es keinerlei Sinn ergibt, diese zwischenzuspeichern und ersetzt diese mit Platzhaltern, sodass die Seite selber zwischengespeichert werden kann. Der Inhalt dieser Platzhalter werden dann zu einem späteren Zeitpunkt durch Edge Sides Includes oder AJAX-Anfragen geladen. Dieser Mechanismus ermöglicht sehr kurze Reaktionszeiten und eine deutlich verbesserte Benutzererfahrung, auch für authentisierte Benutzer. Mit Drupal 8.1.0 wurde auch das BigPipe Module in den Drupal-Core aufgenommen, welches diese Ansätze noch verbessert.

Kompatibel mit modernen Tools

Drupal 8 verwendet weitere moderne Tools, um die Leistung zu verbessern, hier ein paar Beispiele: Ein eingebauter Two-Level-Cache (APCu für sehr schnelle lokale Speicherung verbunden mit einem netzwerkfähigen Cache wie Memcache oder Redis als zweite Cache-Instanz) bietet einen sehr schnellen Zugriff auf kleine, aber häufig genutzte Cache Bins. Cache-Tags können in jeden Response inkludiert werden, sodass ausgewählte Cache-Invalidierungen nicht mehr nur auf lokal gespeicherte Caches beschränkt sind, sondern auch in Reverse-Proxies (z.B. Varnish) oder CDN’s berücksichtigt werden können. Vollständige PHP7-Unterstützung bietet eine 30 – 50%ige Verbesserung der Responsezeiten, selbst für Seiten welche direkt vom Cache bereitgestellt werden. Der Gebrauch der Twig C Extension, kann Abarbeitung von Twig-Templates optimieren und beschleunigen.

Im Blog von Wunder wird zum Abschnitt Performance noch die granulare Cache Verwaltung erläutert.

 

Templating mit Twig

Templating mit Twig

Was nach einer reinen Änderung der Templating-Sprache aussieht, ist in Wahrheit eine bedeutsame Verbesserung auf mehreren Ebenen.

Trennung der Zuständigkeiten

Durch die Einführung einer richtigen Templating-Sprache, welche wirklich nur dafür gedacht ist, werden die Zuständigkeiten, im Gegensatz zu PHPTemplate, klar getrennt. Frontend-Entwickler, welche vor allem mit HTML-Markup arbeiten wollen können dies nun tun, ohne mit Drupal oder PHP vertraut zu sein. Backend-Entwickler werden ebenfalls davon abgehalten, Geschäftslogik in Templates einzubetten, was bei unerfahrenen Entwicklern leider häufig vorkam.

Sicherheit

Der Grossteil der Sicherheits-Schwachstellen einer Web-Anwendung befinden sich auf Ebene des Renderings – üblicherweise verursacht durch eine mangelnde Bereinigung der Ausgabedaten, was zu möglichen Cross-Site-Scripting-Angriffen (XSS) führen kann. Während Drupal 7 diese Verantwortung dem Entwickler überlassen hat, in der Annahme, dass jede Variable korrekt bereinigt ist, verwendet Drupal 8 Twigs Auto-Escape-Mechanismus, was zu einem viel sicheren System führt.

 

Verbesserte Konsistenz & vorhersehbare Entwicklungszyklen

Verbesserte Konsistenz und vorhersehbare Entwicklungszyklen

Alles dazu gibt's im Blog von Wunder.

Die Entwicklung von Drupal

Drupal 7 wurde im Januar 2011 veröffentlicht, zu einem Zeitpunkt, als der Einsatz von Drupal im Enterprise-Segment gerade erst begonnen hatte. In vielerlei Hinsicht war das System nur teilweise auf die Bedürfnisse von Enterprise-Projekten abgestimmt. Der Grossteil der Erfahrungen basierte zu diesem Zeitpunkt auf Drupal 6 (veröffentlicht im Februar 2008) und damals wurden Best Practices wie automatische Deployments und code-driven-Development erst neu eingeführt.

Der Release von Drupal 8 dauerte zwar seine Zeit, welche aber sehr gut genutzt worden ist, um das über Jahre gesammelte Wissen einzubringen und ein fast komplett neues Framework auf die Beine zu stellen. So entstand ein deutlich verbessertes Framework, welches für professionelle, skalierbare und komplexe Systeme geeignet ist.

Fazit

Wunder und Previon+ wissen um die Wichtigkeit der Wahl des richtigen Content-Management-Frameworks (CMF) bei komplexen Website-Lösungen und sind überzeugt mit Drupal 8 auf die richtige Lösung zu setzen. Previon+ hat bereits diverse Projekte mit Drupal 8 realisiert und sich zum Ziel gesetzt, neue Projekte nur noch mit Drupal 8 umzusetzen.

Kommentar

Thomas Wertmüller Head Technology Previon+




 

Thomas Wertmüller - Head Technology bei Previon+

Mit Drupal 8 wurde ein grosser und wichtiger Schritt in die richtige Richtung gemacht. Previon+ ist überzeugt, nach wie vor auf das richtige Content-Management-Framework zu setzen, um Kundenprojekte erfolgreich und zukunftsorientiert umsetzen zu können. Gerade auch durch den neuen Entwicklungszyklus kann Previon+ immer wieder von kleinen und grossen Neuerungen profitieren und muss nicht auf die nächste Major-Version warten.


Falls Sie die Thematik weiter vertiefen wollen:

Jetzt gesamten Artikel lesen

Weiterführende Literatur:
Der Drupal 8 Guide von Acquia