.Net News – Januar Summary

metro-visualstudio-128-link

Neues Jahr, neues Glück? Ich denke neues Jahr, mehr Produktivität. Als DotNet’ler ist man ja schon fast ein wenig verwöhnt wenn man die Anzahl an Aktualisierungen in den bestehenden Produkten anschaut. Schon im ersten Monat des neuen Kalenderjahres startet Microsoft … Weiterlesen

Komplexe Deployments mit Drupal

Ein Stichwort das man immer wieder hört wenn es um Drupal geht ist «Community». Das liegt einerseits am zugrundeliegenden Kern, welcher mit Rechte- und Nutzerverwaltung, Tagging sowie Kommentarintegration von Haus aus viel mitbringt, was man für Auftritte mit Community-Fokus benötigt. Es liegt auch an den zahlreichen Modulen der Drupal-Community, welche die jeweiligen interaktiven Individualfunktionen bereitstellen. Spannend wird es nun, wenn neue Funktionen im laufenden Betrieb dazukommen.

Ausgangslage

Drupal pflegt sehr viel seiner Konfiguration in der Datenbank. Dies bedeutet prinzipiell, dass man entweder Dateien und Datenbank bei grösseren Funktionsänderungen komplett ersetzt oder die Datenbank erhält und alle Änderungen im Backend händisch auf der Live-Instanz nachträgt. Das händische Nachtragen ist bei grösseren Änderungen keine realistische Lösung, selbst wenn die Fenster für Downtime gross genug sind, allein schon aufgrund der Fehleranfälligkeit. Bei einer Seite mit viel User Generated Content scheidet das Ersetzen der Datenbank fast immer aus, wenn man nicht SQL-Tabellen per Hand zusammenführen möchte.

Features

Das Modul Features hat sich dabei in unserer Projekterfahrung als unverzichtbar erwiesen, um solche Deployments mit Drupal zu lösen. Ganz allgemein nimmt es Datenstrukturen wie Inhaltstypen, Felder, Menüs aber auch allgemeine Konfigurationen wie Berechtigungen aus der Datenbank und gibt diese in Form eines Moduls aus. Somit sind diese portabel und können durch das Aktivieren des erstellten Moduls deployed werden  (siehe auch Bundling site settings using Features). Die Versionierung hilft zudem dabei Veränderungen des Features einzustufen (z.B. direkte Übersteuerung gegenüber einer Überprüfung). Features zeigt dabei auch den jeweiligen Unterschied der Datenbank zur Codebasis in einem einfach zu bedienenden Frontend, was das Sichten von Abweichungen erleichtert.

Kurzum, es schafft Vertrauen, dass Einstellungen und Datenstrukturen so sind wie definiert, ohne dass man auf jedem System jede Administrationsseite individuell kontrollieren muss. Änderungen werden sofort sichtbar und können entweder durch erneuten Export in den Code integriert werden oder bei einem Anwenderfehler auch problemlos wieder rückgängig gemacht werden.

Es unterstützt aber auch bei der Entwicklung, da es die unabhängige Entwicklung von Funktionen ermöglicht, ohne dass auf dem gleichen Entwicklungssystem gearbeitet werden muss oder eine Datenbank geteilt werden muss. In Verknüpfung mit Gits intelligentem Fast-Forward-Merging lässt sich so ein sauberes und nachvollziehbares Commit- und Merge-Protokoll erreichen, welches funktionalen Code inklusive der benötigten Konfigurationsparameter enthält.

Content?

Wo die Drupalwelt hinter gewissen Enterprise-Systemen weiterhin zurückbleibt ist die Portabilität von Inhalten. Mit den oben beschriebenen Möglichkeiten lässt sich die Struktur von Inhalten ideal transferieren, der jeweilige Inhalt ist aber nicht ohne grössere Umstände von einer Instanz auf die andere gebracht, ohne dass die Datenbank ersetzt wird. Es verbleiben einem hierbei folgende stabile Möglichkeiten (mit denen wir gute Erfahrungen gemacht haben):

  • Export und Import von einzelnen Nodes: Besonders hilfreich bei komplexen Inhalten, wie einem Webform-Formular, das nicht mehrfach erfasst werden soll. Die Ausgabe des Exporters lässt sich wiederum auch in das VCS überführen und sichert somit die Transparenz der aktuellen Fassung.
  • Export und Import von Taxonomien: Der Transfer von Taxonomien mit Hilfe von Taxonomy CSV sollte für die meisten Szenarien ausreichen. Übersetzungen in Verbindung mit Hierarchie können etwas Handarbeit benötigen.
  • Einlesen von strukturieren Inhalten: Mit Feeds lassen sich Quellen wie CVS und XML mit moderaten Aufwand einmalig oder automatisch in Drupal als Inhalte einlesen, welche danach wie andere Inhalte weiterverwendet werden können. Wenn Inhalte in solchen Formaten zur Verfügung gestellt werden können, ist dies eine ideale Alternative zur Beschäftigung eines Content-Migration-Teams.