Veröffentlicht: 04/2022

Back-End Entwicklung: der Server einer Webanwendung

Der Server ist das Zentrum einer Webanwendung, mit dem alle Clients kommunizieren. Er hält die zentralen Daten der Anwendung vor, beantwortet Anfragen der Clients, authentifiziert berechtigte User, schreibt Log-Dateien, reagiert auf Anfrageparameter, gibt die Struktur der Software und der Daten vor, stellt Inhalte auf Anfrage zusammen. Er ist das Gehirn einer webbasierten Anwendung.

Backend: Hardware und Software

Wenn man vom 'Server' spricht, kann das zweierlei Bedeutung haben: entweder meint man die physikalische Maschine, also die Hardware, den tatsächlichen Computer, auf dem die Webapplikation gehostet ist. Unter 'Server' ist aber auch die Software zu verstehen, die auf diesem zentralen Computer läuft und den Computer in die Lage versetzt, webbasierte Anfragen zu beantworten. Die Software teilt man auch in zwei Kategorien: die Server-Software selbst und die Software der konkreten Webseite/Webanwendung.

Der Server kann ein gemieteter Webspace sein oder ein eigener virtueller oder physikalischer Root-Server. Beim gemieteten Webspace sind die Konfigurationsmöglichkeiten begrenzt, denn auf derselben Maschine sind mehrere Domains (Kunden) gehostet. Für viele Anwendungen reicht aber ein gemieteter Webspace vollkommen aus. Ein eigener Rootserver kann virtuell sein (mehrere Root-Server auf einer Maschine) oder physikalisch (eine Maschine, ein Server). Root-Server werden teils vom Vermieter der Server konfiguriert (Managed Root Server). Dieser kümmert sich auf einer Low-Level-Ebene um die Hardware und die Webserver-Software. Der Mieter hat alle Konfigurationsmöglichkeiten und kann seinen Root-Server nach Belieben konfigurieren und aufrüsten.

Die bekannteste Server-Software ist der Apache Web Server. Er hat eine lange Entwicklungsgeschichte und ist millionenfach im Einsatz. Der Apache läuft auf allen Plattformen, ist modular aufgebaut, stellt eine Unmenge an Funktionen für moderne Webanwendungen zur Verfügung, von SSL über Caching bis Cryptografie, und arbeitet optimal mit anderen Komponenten des Backend zusammen. Daher haben sich fürs Backend verschiedene 'Stacks' etabliert, allen voran der LAMP-Stack: Linux, Apache, MySQL, PHP.

Datenbankentwicklung

Bei einer dynamischen Webanwendung liegen die Daten separat von den Seiten, auf denen die Daten angezeigt werden. Bei einer Anfrage durch den Client fragt ein serverseitiges Skript die Datenbank ab und schickt die Antwort, eine HTML-Datei, mit den passenden Daten an den Client. Teil der Backend-Entwicklung ist daher die Planung und der Entwurf der zentralen Datenbank der Webapplikation.

Eine Datenbank ist eine Kollektion von Daten. Datenbankdesign umfasst praktische Überlegungen und formale Techniken. Man überlegt, wie die Daten der Anwendung am effizientesten modelliert werden, um Redundanzen zu vermeiden und alle vier Operationen - Einfügen, Lesen, Update, Löschen - mit höchstmöglicher Geschwindigkeit zu erledigen. Die formalen Techniken geben die Umsetzung eines konkreten Datenmodells mit dem gewählten Datenbanksystem vor: das Erstellen der Tabellen, Wahl des passenden Tabellentyps, Wahl von Indizes für schnellen Zugriff, Bestimmung der passenden Datentypen für die Tabellenspalten uvm.

Daten sind oft komplex und stehen meist in Relation zueinander. Diese Relationen müssen bei der Modellierung der Datenbankstruktur berücksichtigt werden. Daher haben sich sogenannte relationale Datenbanksysteme durchgesetzt. Tabellen werden über sogenannte Schlüssel miteinander verknüpft, sodass man mit gut formulierten Datenabfragen Daten aus mehreren Tabellen zusammenführen kann, so als stünden die Daten in einer einzigen Tabelle. Falls die Daten nicht in Beziehung zueiander stehen, kommen auch nicht-relationale Systeme (NoSQL) in Frage, da sie Daten nicht verknüpfen. Jedoch: mit einem relationalen DBMS kann man leicht auch nicht-relationale Daten speichern - nicht aber umgekehrt.

Daten müssen sicher sein. Datenbankdesign umfasst auch den Schutz vor unberechtigten Zugriffen sowie Datenverlust durch inkonsistente Schreiboperationen oder Hardwareprobleme. Schon auf Datenbankebene muss ein geeignetes Berechtigungssystem implementiert werden, sodass jedes Skript mit so wenig Berechtigungen wie möglich ausgeführt wird. Ein Datenbanksystem beinhaltet auch verschiedenste Tools zur Optimierung, Fehlerdiagnose, Messen der Effizienz verschiedener Abfragen, sowie Reparatur von Daten und Datenbackups.

Serverseitige Programmierung

Der Backend-Entwickler ist zuerst für die Grundstruktur einer webbasierten Software verantwortlich. Heutige Software wird meist nach den Prinzipien der Objektorientierten Programmierung (OOP) erstellt, d.h. sie bildet 'reale' Objekte und ihre Charakteristika virtuell ab. Der Backend-Entwickler legt fest, welche 'Objekte' die Anwendung an der Basis abbilden muss, welche Eigenschaften diese haben und welche Funktionen sie ausführen müssen. Daraus erstellt er eine für die Anwendung spezifische Hierarchie an Klassen, und implementiert für jede Klasse die richtigen Objekt-Eigenschaften und -methoden, so dass zur Laufzeit die passenden Objekte virtuell erstellt werden können und mit verschiedenster Funtionalität ausgestattet sind.

Backend-Entwicklung implementiert die Programmskripte, die zwischen dem Front End und der Datenbank sitzen und die Kommunikation zwischen Browser (Client) und Server regeln. Die Komplexität der serverseitigen Programmlogik variiert sehr zwischen verschiedenen Anwendungen. Im einfachsten Fall gibt der Server nur statische Ressourcen zurück. Bei dynamischen Webanwendungen stellt der Server jedoch die Antwort für jede Client-Anfrage individuell zusammen. Wenn der Client eine Anfrage stellt, reagiert ein serverseitiges Programm auf individuelle Parameter der Anfrage. Es liest die benötigten Daten aus der Datenbank, stellt die gewünschen Berechnungen an, bringt die Resultate in das vom Client benötigte Format und sendet eine Antwort an den anfragenden Browser.

Der Server stellt auch APIs zur Verfügung, über die das Frontend oder Dritte speziell gefilterte Daten der Anwendung in bestimmten Formaten erhalten können. Eine solche API (Application Programming Interface) ist ein 'Slot' zur Kommunikation mit anderen Computern. Auch kann der eigene Server Anfragen an APIs von Drittanbietern absetzen, dessen Daten importieren und sie in der eigenen Anwendung zur Verfügung zu stellen, ohne sie selbst vorhalten zu müssen. REST-Services, die Integration mit anderen Servern und Skalierung von Anwendungen mit hoher Last sind nur ein paar Beispiele, was im Backend alles vor sich geht. Server sind sehr versatile Zeitgenossen.

Userverwaltung und Sicherheit

Im Backend passiert die gesamte Userverwaltung einer Website/Webapp. Serverseitige Programme stellen sicher, dass nur autorisierte User auf die Website/Anwendung zugreifen, dass User korrekt authentifiziert werden, und dass Login und Logout korrekt funktionieren. Das Backend filtert einkommende Anfragen und übermittelte Daten und hält Schädlinge draussen. Datenbanken werden geschützt, indem Anfragen von Unberechtigten abgeblockt werden, und übermittelte Parameter durch ein eigenes Skript kontrolliert werden. Der Server startet und verwaltet die Sessions (Sitzungen) der User, um jeden User bei wiederholten Anfragen wieder zu erkennen.

Analyse und Logging

Bei Bedarf kann das Backend Analysen über den Umgang der User mit der Anwendung erstellen, festhalten, welche Seiten und/oder Funktionen ein User nutzt, welche Daten er abfragt, wie lange seine Sitzung durchschnittlich dauert, uvm. Solche Analysen können Optimierungsmöglichkeiten aufzeigen, Engpässe offenlegen, sie geben Aufschluss darüber, was besonders nachgefagt wird. Durch Nutzungsanalysen kann die Anwendung 'lernen', auf Präferenzen der User zu reagieren, personalisierte Inhalte zusammen zu stellen und dem User Vorschläge zu zeigen.

Backend-Entwicklung beinhaltet auch die periodische Analyse der sogenannten Log-Dateien des Servers und die Konfiguration des gewünschten Logging-Verhaltens. Der Server protokolliert die Netzwerkzugriffe und Anfragen der Clients sowie auch aufgetretene Netzwerkfehler in seinen Logfiles. Die Log-Dateien können Aufschluss über Fehlkonfigurationen des Servers geben, über Versuche von Unberechtigten, den Server anzugreifen, über falsch angefragte Ressourcen, über Fehler in der eigenen Software, über den Status der gelieferten Antworten uvm.

Fazit

Back-End-Entwicklung ist ein weites Feld, das ich hier nicht annähernd abschliessend erklären kann. Der User bekommt das Backend nie zu Gesicht, er denkt nicht einmal daran, das es existiert. Es ist weit weg von der bunten Oberfläche, mit der er interagiert. Aber in dem Moment, wenn der User eine Aktion auf der Seite vornimmt und Daten über die Leitung schickt, muss ein perfekt konfiguriertes Back End die Kontrolle übernehmen. Eigentlich schon vorher: damit der User überhaupt etwas zu Gesicht bekommt, womit er interagrieren kann, muss das Backend fehlerfrei laufen und mit dem Client korrekt kommunizieren. Das Back End einer Website/Webanwendung muss individuell für das Projekt entworfen sein. Der Vorteil bei der Backend-Entwicklung aber ist, dass man sich keine Gedanken um die Farbe der Buttons im User Interface machen muss...


Teilen

Teile diese Seite mit Deinem Netzwerk:


close email

Kontakt



arrow_upward arrow_back mail