Strukturierte Verwaltung von Daten.
Backend-Development ist die Entwicklung von Datenbanken, Client-Server-Anwendungen, Microservices, Webanwendungen und Diensten, die auf Webservern im Hintergrund laufen.
Wir konfigurieren Drupal-Systeme nach Kundenbedarf, entwickeln individuelle Module für spezielle Anforderungen und verbinden Drupal-Webseiten mit externen Systemen, sofern wir deren Daten benötigen.
Inhalte und deren Darstellung in verschiedenen Ausgabekanälen (Website, App, usw.) behandeln wir getrennt, um eine maximale Flexibilität sicherzustellen. Inhalte speichern wir strukturiert ab und geben ihnen damit eine Semantik. Über die konkrete Nutzung und Darstellung entscheidet der Ausgabekanal selbst und ohne spezifisches Wissen des Backends. Denn wer weiß denn heute schon, wie ein Inhalt in zwei Jahren publiziert werden soll?
Drupal kann als so genanntes Headless CMS genutzt werden und Inhalte über definierte Schnittstellen bereitstellen.
Im Drupal-Kontext nennt man Konfiguration und individuelle Anpassung eines neu installierten Systems „Sitebuilding“. Diese zumeist erste Tätigkeit in einem Website-Projekt erfordert tiefes Verständnis der Drupal-Konzepte und der Art der zu speichernden Daten.
Obwohl alle diese Tätigkeiten durch den Sitebuilder komplett im Backend ausgeführt werden können, gehen wir noch ein Stück weiter: damit einmal erstellte Einstellungen bei einem Update nicht überschrieben werden und um identische System mehrfach installieren zu können (Staging, Test, Production, usw.) verwalten wir diese also Code.
Jede Anpassung resultiert in einem Code-Skript, welches jederzeit in neue System eingespielt werden kann. Bei unseren vollautomatisierten Deployment-Prozessen (Stichwort: CI/CD) übernimmt diese Aufgabe gar kein Mensch mehr sondern der Agent und die Pipeline.
Drupal basiert auf dem Symphony-Framework und ist daher komplett in PHP entwickelt. Anpassungen bzw. die Entwicklung von neuen Modulen erfolgt daher mittels PHP - eine Sprache mit langer Historie im Web-Umfeld, die konsequent weiterentwickelt und verbessert wird.
Ein Objekt kann erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren ohne die konkrete Implementierung offen zu legen.
Attribute bzw. Eigenschaften legen die innere Struktur eines Objekts fest, Methoden bestimmen sein Verhalten.
Implementierungsdetails werden verborgen und auf die interne Datenstruktur kann nur über definierte Schnittstellen zugegriffen werden.
Objektvariablen existieren, solange die Objekte vorhanden sind und „verfallen“ nicht nach Abarbeitung einer Methode.
Variablen können unterschiedliche Datentypen annehmen und verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren.
Eine abgeleitete Klasse erbt die Methoden und Attribute ihrer Basisklasse und kann auch darauf zugreifen. Abgeleitete Klasse können neue Bestandteile hinzufügen oder vorhandene überlagern.
Eine API dient dem Austausch und der Verarbeitung von Daten zwischen verschiedenen Webseiten, Programmen und Anbietern.
Stellen Daten einem breiten und eher anonymen Publikum zur Verfügung. Nach einer einfachen Registrierung können Daten mittels API-Schlüssel abgerufen werden. Typische Vertreter sind Wetterdaten, Fahrplaninfos, usw.
Ähnlich wie bei offenen APIs sollen Partner-APIs die Kommunikation zwischen einem Unternehmen
und seinen (externen) Benutzern ermöglichen. Da die Nutzer hier Geschäftspartner und die Daten eher
sensibler Natur sind, wird hier mehr Wer auf Sicherheit bei der Registrierung und Übertragung gelegt.
Diese oft auch als private APIs bezeichnete Schnittstellen werden vor externem Zugriff verborgen. Ziel
ist hier der Austausch von Informationen zwischen Abteilungen oder Standorten. Auch zentral
gespeicherte Daten, wie bspw. Produktdaten können auf diese Weise ausgeliefert werden, um Infos auf
der Webseite anzuzeigen.
Es gibt verschiedene Arten von APIs, die je nach Architektur und Protokoll die individuellen Anforderungen zu erfüllen.
Docker ermöglichst die leichtgewichtige Virtualisierung in s.g. Containern und vereinfacht so die Bereitstellung von Anwendungen (Webseiten, Datenbanken, Such-Engines, Tracking-Tools, uvm.). Die erzeugten Container enthalten alle benötigten Pakete und lassen sich einfach als kompakte Dateien transportieren und installieren.
Ein relationales Datenbankmanagementsystem (RDBMS) wie MySql oder MariaDB dient zur Erstellung, Pflege und Verwaltung von relationalen Datenbanken mittels SQL (Structured Query Language). Je nach Entwicklungsumgebung wird der direkte Zugriff durch O/R-Mapper abstrahiert und ermöglicht komfortableres und sichereres Arbeiten mit einer Datenbank.
Vom Entwickler zum Kunden.
Continuous Integration und Continuous Delivery sind Verfahren zur Softwareverteilung, die von Entwicklungsteams verwendet werden, um Codeänderungen häufig und zuverlässig bereitzustellen.
Entwickler führen regelmäßig Commits in ein gemeinsam genutztes Repository durch. Dafür wird bspw. das Versionskontrollsystem Git verwendet, welches u.a. durch Gitlab, Github, Bitbucket oder Azure DevOps bereitgestellt wird. Bevor ein Commit akzeptiert wird, können automatisch weitere Prüfungen und Tests durchgeführt werden, um die Code-Qualität sicher zu stellen.
Manuelle und dadurch fehleranfällige Schritte, mittels denen ein Build von Software für die Produktion durchgeführt wird, übernimmt ein automatisierter Prozess - die s.g. Pipeline. Software Agents innerhalb der Pipeline können auch hier weitere Aufgaben ausführen, wie bspw. die parallele Installation auf mehreren Systemen (Staging, Test, usw.) oder automatisierte Tests, die bei Versagen die Publizierung auf Production verhindern.
Professionelle Resultate durch professionelles Tooling.
Docker kümmert sich um die Bereitstellung von Anwendungen, indem diese in Containern virtualisiert und isoliert betrieben werden. Ein Container enthält alle nötigen Pakete, ist leichtgewichtig und kann einfach transportiert und installiert werden.
Mit DDEV lässt sich innerhalb weniger Minuten eine lokale PHP-Entwicklungsumgebung einrichten, um Docker lokal für die Entwicklung zu nutzen.
PHP ist eine Skriptsprache zur Erstellung dynamischer Webseiten oder Webanwendungen, die seit knapp 30 Jahren erfolgreich im Einsatz ist. Seit August 2022 kann die neuste Version 8.1.9 genutzt werden.
Solider Unterbau einer Enterprise-Website.
Symfony ist ein PHP-Framework und derzeit der Standard für die Entwicklung von Webseiten, Onlineshops und Content Management Systemen
Twig ist die leistungsfähige Template-Engine Drupal, mit deren Hilfe wir Layouts individuell umsetzen können. Der Vorteil für den Einsatz einer Template-Engine liegt auf der Hand. Layout wird unabhängig von der Drupal-Entwicklung durch unser Frontend-Team umgesetzt. Beim Erstellen der Templates liegt der Fokus somit komplett auf der Umsetzung eines perfekten responsiven Layouts. Platzhalter markieren die Stellen, an denen später dynamische Inhalte integriert werden sollen. Sobald ein fertiges Template im Drupal-CMS integriert wird, werden „echte“ Inhalte korrekt und im gewünschten Layout ausgegeben. Auch spätere Änderungen an der Logik sind einfach möglich, ohne sich Gedanken über das Layout machen zu müssen.