Dieser Artikel wurde bereits 2012 im Contentmanager.de eBook "Open Source CMS im Vergleich" und auf der dazugehörigen Website veröffentlicht. Da der Artikel inzwischen auf der Plattform nicht mehr verfügbar aber auch 2015 immer noch aktuell ist, wurde er am 24.08.2015 hier auf paratio.com mit ein paar Anmerkungen, Korrekturen und ergänzenden Links wieder veröffentlicht.
Dies ist eine Ergänzung zum Artikel "CMS Übersicht: Drupal 7" den Sie zuerst lesen sollten (Anmerk. 2015: Dieser Beitrag stammte von Nikolai Schwarz)
Die Komplexität, die Drupal gegenüber einfacheren Systemen mit sich bringt, ist vor allem eine Folge der vielfältigen Möglichkeiten, die im Folgenden etwas detaillierter dargestellt werden aber immer noch im Rahmen einer Übersicht ohne Anspruch auf Vollständigkeit.
Flexibilität und Effizienz
Sie wollen nur ein CMS, aber Sie wissen auch heute schon, was Sie nächstes Jahr brauchen? Wer Drupal als CMS wählt hat damit einen umfangreichen "Werkzeugkasten" zur Hand um sowohl derzeitige als auch künftige Anforderungen leicht erfüllen zu können. Es lassen viele verschiedene Funktionen realisieren für die andere entweder das System wechseln oder weitere Systeme einbinden und pflegen müssen.
Wenn "free and open source" eine Entscheidung zur Unabhängigkeit von Herstellern und Dienstleistern ist, dann ist ein Framework die Entscheidung zur "Freiheit der Funktionen".
Daß Drupal als Multifunktions-Werkzeug in der Performance von Buttom-Up Programmierungen oder vllt. auch von leichtgewichtigen Programmier-Frameworks geschlagen werden kann, ist möglich. Aber mit Drupal lassen sich viele Projekte viel schneller und kostengünstiger umsetzen. Das heißt, daß Plattformen mit einem Geschäftsmodell früher im Markt sein und schon lange Geld verdienen können, während woanders (vllt. in VillaBajo?) noch die Benutzerverwaltung geschrieben wird. Und was die Performance betrifft, gibt es für Drupal viele Werkzeuge, die das Problem reduzieren können (siehe "Cache und Cluster").
Skalierbarkeit in der Funktion
Letztlich lässt sich jede Open Source Software mit entsprechenden Programmierfähigkeiten zu jeder Funktionalität bringen. Die Frage ist nur mit welchem Aufwand sowohl bei Konzeption, Umsetzung und der Pflege in der Zukunft?
Drupal bietet einerseits mit seinen umfangreichen Programmier-Schnittstellen (API) viele Anknüpfungspunkte ("Hook-System"), die eine Modifikation des Kern-Systems nur sehr selten notwendig machen. Letzteres sollte man niemals ohne Wissen und Zustimmung des Kunden machen. Dazu sollte man selbstverständlich eine solche Modifikation sauber mit einem so genannten "Patch" organisieren, der das Einspielen von Sicherheitsupdates immer noch leicht ermöglicht.
Eine konsequente API-Denkweise gepaart mit einer umfangreichen Entwicklergemeinde – die sich selbst und ihre Module auf einer zentralen Plattform organisiert – führt nicht nur zu einer großen Anzahl an Modulen, sondern vor allem auch zu Modulen, die wiederum noch mehr API bereit stellen.
Flexibilität der Daten-Strukturen
Mit Drupal 7 wurde eine neues Datenmodell eingeführt, das mehr als nur eine Änderung "unter der Haube" ist und z. B. Geschwindigkeitsvorteile mit sich bringt. "Entities" ("Wesenheiten") bringen eine noch größere Flexibilität in der Modellierung von Datenstrukturen.
Der Begriff "node" ("Knoten", vgl. Knoten (Hypertext) – Wikipedia wird auch von Tim Berners Lee zur Beschreibung des WWW verwendet und wird in der Drupalwelt auch als "content" ("Inhalt") übersetzt. Dies alleine birgt schon genügend Raum für Verwirrung. Denn wenn es neben Nodes auch auch "user" (Benutzer), "comments" (Kommentare) und "terms" (tags) gibt, die ebenfalls verwaltet werden, dann ist spätestens bei der Benutzerverwaltung der Begriff des Content-Managements verlassen. In einer Webanwendung gibt es zumindest häufiger die Aufgabe z. B. nicht nur Inhalte, sondern auch Benutzer zu taggen, das heißt mit Schlagworten zu versehen. Bis Drupal 6 mussten diese für komplexe Aufgaben zum Teil aufwendig verknüpft werden. In Drupal 7 bauen nun Nodes, Benutzer, Kommentare und Tags gemeinsam auf Entities auf. Da diese nun alle (und nicht nur Nodes) mit Feldern (fields) verbunden werden können, kann man beispielsweise Tags mit einem Geodaten-Feld erweitern. So etwas ist z. B. bei einer Tag-Liste (Vokabular genannt) für Städtenamen ganz sinnvoll. Module können auch weitere Entities für ganz unterschiedliche Zwecke einrichten.
Verbindungen zwischen Inhalten und Menschen
Weil Drupal alle Information und dessen Verbindungen sehr flexibel organisiert, eignet es sich besonders für den Aufbau von Communities bzw. Social Network/Media-Plattformen sowie auch zur Verknüpfung von Wissen z. B. als Wiki. Alles begann mit einem Forum und der Flexibilität der Forenbeiträge. Inzwischen ermöglichen viele Module diverse Verknüpfungen von Informationen und damit auch von Menschen. Interessengruppen oder Teams lassen sich leicht mit dem Organic groups-Modul bilden. Dies bringt das an sich schon ausgefeilte Rollen- und Rechte-System von Drupal auch zu einzelnen Gruppen. Das Modul ist ein gutes Beispiel für lineare Beziehungen z. B. zwischen diversen Entities (insbesondere Benutzer und Nodes) mit einer Gruppe.
Lineare Verbindungen – wie sie auch das Modul Entity reference bietet – sind effizient und ermöglichen schon eine gewisse Komplexität. Aber je nach Anwendungsfall könnten komplexere "relations" (Verbindungen) notwendig sein. Das Relation-Modul ermöglicht die Verbindung mehrerer Entities und benutzt dafür selbst Entities. Somit können Verbindungen bei Bedarf klassifiziert, benannt oder weiter verknüpft werden auch ohne Programmieraufwand. Damit sind z. B. Subjekt-Prädikat-Objekt-Beziehungen oder noch komplexere Konstrukte in einem komplexem Wissensmanagement organisierbar. Komplexere soziale Strukturen und Aktionen lassen sich mit dem Relation-Modul leicht modellieren. Anstatt "Person_A mag Kochen" kann auch das folgende dargestellt werden: Person_A kocht mit Person_C und Person_D das Rezept_E.
Das Modul CRM Core ist eine Art Framework für Customer Relationship Management und zeigt eine gute Kombination aus linearen Verbindungen und wie mit Hilfe des Relation-Moduls Beziehungs-Informationen verwaltet werden können z. B. "Person_A hat Funktion_B bei Firma_C".
Framework für Frameworks
Webanwendungen in Drupal bauen nicht ausschließlich auf einzelnen Funktionen in Modulen auf. Einige mächtige Module erweitern das Framework mit weiterer API und graphischen Benutzeroberflächen. Das Views-Modul bildet nur den Einstieg. Auch andere Module reduzieren durch die Bereitstellung weiterer Flexibilität immer mehr die Notwendigkeit diverse Funktionen per Programmierung zu integrieren. Für Layout-Aufgaben gibt es z. B. Panels und Display Suite. Aber insbesondere das Rules-Modul bietet eine einfache Möglichkeit an vielen verschiedenen Prozessen im System "teilnehmen" zu können und diese steuern zu können. Da sich mit wenig Programmieraufwand eigene "Events" (Ereignisse), "Conditions" (Bedingungen) und "Actions" erstellen und auch eigenen Regeln per Programmierung erzeugen lassen, stellen immer mehr Module bereits eine Rules-Anbindung bereit. So lassen sich beispielsweise mit dem Flag-Modul diverse Inhalte markieren. An Markierungs-Ereignisse lassen sich Regeln anknüpfen, die z. B. E-Mails versenden oder Operationen am entsprechenden Inhalt auslösen. Dies ist eine gute Möglichkeit Content-Bearbeitungs-Möglichkeiten zu schaffen, ohne einer Benutzergruppe weitreichende Bearbeitungsrechte freischalten zu müssen.
Neue Geschäfts-Welten
Neben der Möglichkeit in Drupal Geschäftsprozesse abbilden zu können und diese bei Bedarf auch hinter Firewalls zu betreiben ermöglichen die Entities in Drupal 7 nun auch ganz neue Tore zur Außenwelt. Das neue Framework "Drupal Commerce" ist bei weitem mehr als einfach nur eine Shop-Funktionalität, die eingeschaltet wird und sich sauber in das CMS inklusive einheitlicher Gestaltung einfügt. Drupal Commerce baut fundamental auf Rules und Views auf und lässt sich damit konfigurieren und erweitern. Diverse Commerce-Module ermöglichen es, völlig neue Wege in eCommerce-Anwendungen gestalten zu können mit der ganzen Flexibilität, die Drupal insgesamt zur Verfügung stellt. So lassen sich Prozesse der Preisgestaltung z. B. zeitgesteuerte Rabatte mit Rules leicht modifizieren.
Integrationsfähigkeit
Drupal kann leicht in bestehende Infrastrukturen eingefügt werden oder deren Zentrum bilden. LDAP ist eine Schlüsseltechnologie die in vielen Unternehmen und Institutionen zum Einsatz kommt. Dort kann Drupal nicht nur angebunden werden, um Benutzer zu authentifizieren und über LDAP-Gruppen eine fremde Rechte-Zuweisung akzeptieren, sondern Drupal kann auch eine LDAP-Datenbank verwalten und somit zum "Frontend" von LDAP werden. Über LDAP lassen sich diverse, ebenfalls LDAP-kompatible Anwendungen an Drupal anschließen wie z. B. die beliebte Lernplattform Moodle. Diverse Schnittstellen können leicht angeboten oder angesprochen werden z. B. mit dem Services-Modul. Dazu bieten Module wie Migrate und Feeds umfassende Möglichkeiten, Daten aus externen Quellen auslesen, auswerten und integrieren zu können. Der Export z. B. von RSS-Feeds bringt in einfacher Form schon das Kern-System mit und lässt sich mit dem Views-Modul leicht dynamisieren. Das Calendar-Modul ermöglicht einen Kalender als iCalendar-Feed zu exportieren und diesen somit in Desktop-Anwendungen zu integrieren. Für nicht öffentliche Informationen z. B. aus einer Intranet-Funktion kann eine Benutzer-Authentifizierung zum Schutz davor geschaltet werden.
Flexibilität in der Pflege
Ähnlich wie bei der Verwaltung von Servern sind häufig Komandozeilen-basierte Zugänge effizienter als das Webinterface. Das Programm "Drush" ermöglicht es, Drupal leicht per Kommadozeile zu steuern – auch über SSH-Verbindungen aus der Entfernung. Erstens lässt sich Drupal mit drush leicht pflegen und erweitern z. B. für Update und Backup-Aufgaben. Zweitens lässt sich Drupal damit in in andere Verwaltungs- und Monitoring-Infrastrukturen für Server einbinden. Dies ist insbesondere bei der Pflege mehrerer Drupal-Instanzen hilfreich. Und selbst für einfachste Web-Projekte benötigt man mindestens eine Test-Umgebung, um Updates zu testen, bevor das Live-System verändert wird.
Skalierbarkeit in der Größe
Mit den Funktionen steigt auch der Bedarf nach Ressourcen und oft auch nach der Skalierbarkeit der Nutzerzahlen. Grundsätzlich muß man zwischen Systemen unterscheiden, die kaum angemeldete Benutzer (z. B. Redakteure) haben und den Webanwendungen, in der viele Benutzer zum Teil dauerhaft angemeldet sind wie bei einer Social Media Plattform.
Der Einsatz von Drupal als Massen-Mehrbenutzer-System erfordert eine entsprechende Strategie. Man sollte Module sorgfältig auf ihre Eignung in diesem Umfeld testen und auch nach Updates überprüfen, wie viele Datenbank-Abfragen ein Modul erzeugt. Das Modul "Devel" hilft bei der Diagnose von Datenbank-Operationen auch auf einzelnen dynamischen Seiten. Eine schicke Tag-Cloud-Funktion ist letztlich auch eine Statistik-Funktion, die besondere Aufmerksamkeit und eine besondere Caching-Strategie benötigt.
Cache und Cluster
"Gäste" (unangemeldete Benutzer) können sehr leicht mit einem Seiten-Caching massenhaft abgefertigt werden. Das Boost-Modul z. B. erzeugt fertige HTML-Dateien, die dann vom Webserver direkt ausgeliefert werden. Das funktioniert oft auch schon auf einfachem Webspace. Für größere Setups kann "Varnish" zum Einsatz kommen. Insgesamt werden für professionelle Drupal Setups bevorzugt externe Technologien benutzt, um möglichst vielen Benutzern gleichzeitiges Arbeiten zu ermöglichen. Dabei geht es primär darum, die Datenbank zu entlasten: memcached kann Datenbank-Abfragen zwischenspeichern, APC oder das File-System können Cache-Tabellen speichern. MongoDB und andere NoSQL-Technologien können zu diversen Aufgaben heran gezogen werden, sei es zur Verwaltung von Log- oder Caching-Daten aber auch insbesondere für Such-Funktionen. Mit entsprechenden Modulen lassen sich diverse Technologien wie z. B. Apache Solr (Lucene) dafür nutzen, einerseits effizient Inhalte zu indizieren und zu durchsuchen inkl. der Suche mit Facetten-Funktion oder nach ortsbezogenen Daten. Dabei wird andererseits der Datenzugriff gemäß Zugriffsregeln des Kern-Systems berücksichtigt. Außerdem lässt sich eine einzelne Drupal-Instanz über mehrerer Rechner verteilt (Cluster) betreiben. Mit Hilfe z. B. von LDAP lassen sich Funktionen über unterschiedliche Drupal-Instanzen verteilen.