Was passiert eigentlich, wenn Sie in einem Online-Shop eine Bestellung aufgeben? Woher weiß das System, ob der Artikel noch auf Lager ist? Und warum bekommen Sie wenige Sekunden nach dem Kauf eine Bestellbestätigung per E-Mail? Die Antwort darauf liegt im Backend: Es stellt sicher, dass Daten korrekt verarbeitet, Prozesse ausgeführt, Informationen gespeichert und an das Frontend weitergeleitet werden.
Was ist Backend-Entwicklung?
Backend-Entwicklung umfasst die serverseitige Verarbeitung von Daten, die Umsetzung der Geschäftslogik und die Anbindung externer Systeme. Sie sorgt dafür, dass Anwendungen effizient arbeiten, Daten sicher gespeichert werden und andere Systeme problemlos angebunden werden können. Es handelt sich um alles, was auf dem Server selbst ausgeführt wird.
Häufig werden externe Systeme (z. B. ein ERP- oder CRM-System) integriert, um komplexere Prozesse zu automatisieren. Ein Beispiel aus der Praxis: das Backend eines Kundenportals lädt die Zählerstands- und Kundendaten eines Nutzers nach dem Login aus einem SAP-System und gibt diese an die Web-Oberfläche weiter.
Damit Daten und Zustände gespeichert und abgerufen werden können, wählen Entwickler ein passendes Datenbanksystem aus und bauen eine Struktur auf, die auf den Anwendungsfall zugeschnitten ist.
Ein essentieller Teil der Backend-Entwicklung ist die Implementierung von Schnittstellen, auch APIs genannt. Diese werden benötigt, um die Logik vom Frontend (der Oberfläche) des Programms oder anderen Prozessen aufrufen zu können.
Im Bereich der Backend-Entwicklung werden zudem häufig komplexe Softwarearchitekturen konzeptioniert und umgesetzt, um den wachsenden Anforderungen an die Software gerecht zu werden. Ein Beispiel dafür ist die Microservice-Architektur.
Zudem entwickeln beziehungsweise integrieren Backend-Entwickler notwendige Authentifizierungs- und Sicherheitsmaßnahmen, um den unerlaubten Zugriff auf persönliche Daten zu verhindern.
Wie funktioniert das Backend einer Anwendung?
Das Backend einer Anwendung besteht häufig aus mehreren Ebenen. Es bildet diese ab und stellt die Kommunikation zwischen den Ebenen sicher.
1. Schnittstelle
Der offensichtlichste Teil eines jeden Backends ist die Schnittstelle (oder API). Mit Hilfe der API können andere Anwendungen mit dem Backend kommunizieren. Sie fungiert dabei wie ein Übersetzer, der Daten aus der Benutzeroberfläche in ein für das Backend verständliche Format umwandelt. Die Schnittstelle definiert, welche Daten das Backend erwartet und welche es zurückgibt. Eine integrierte Validierung verhindert dabei potenzielle Sicherheitsrisiken, wie das Einschleusen von Schadcode.
2. Geschäftslogik
Das Herzstück ist die Geschäftslogik, in der die bereits geprüften Daten aus der Schnittstelle verarbeitet werden. Hier finden je nach Anwendungsfall Berechnungen, Transformationen oder andere Arten der Weiterverarbeitung statt. Ein Beispiel: wenn ein Kunde eine Bestellung aufgibt, berechnet die Geschäftslogik den Gesamtpreis, prüft den Lagerbestand und sendet eine Bestellbestätigung.
3. Datenbank
Die dauerhafte Speicherung der Daten wird häufig (aber nicht ausschließlich) über Datenbanken abgebildet. In dieser liegen zum Einen die Daten, die der Nutzer an der Benutzeroberfläche eingegeben hat, zum Anderen können auch Standardwerte für Drop-Down-Boxen oder Daten aus Hintergrundprozessen dort abgelegt werden.
Wie unterscheiden sich Frontend und Backend voneinander?
Frontend
In der Frontend-Entwicklung implementieren die Entwickler benutzerfreundliche Oberflächen. Es geht um das, was man von der Anwendung sieht. Zur Entwicklung von Benutzeroberflächen gehören unter anderem:
Backend
Bei der Backend-Entwicklung konzentriert man sich auf die Entwicklung der Geschäftslogik, also das, was die Anwendung tut. Darunter fallen beispielsweise:
Was muss ein gutes Backend können?
Im Allgemeinen zeichnen sich gute Backend-Systeme dadurch aus, dass sie mit wachsenden Nutzerzahlen und Datenmengen gut zurechtkommen können. Neben der Skalierbarkeit stellt eine vorausschauende Planung sicher, dass das Backend gut erweiterbar ist, um es auf künftige Anforderungen anpassen zu können.
Cybersicherheit ist mittlerweile ein essentieller Bestandteil, der in der Entwicklung berücksichtigt werden muss. Gute Backends setzen moderne Sicherheitsmaßnahmen um, um unbefugte Zugriffe zu verhindern. Dazu gehören unter anderem Authentifizierungsverfahren wie OAuth2 oder JWT, Verschlüsselungstechniken für Datenübertragungen (TLS/SSL) und regelmäßige Sicherheits-Updates.
Ein weiteres wichtiges Merkmal ist die Anbindbarkeit an das Frontend und an Prozesse. Gute Backends bieten Schnittstellen für verschiedene Oberflächen und Anwendungsfälle, um passgenau Daten und Funktionen bereitzustellen.
Zudem können gute Backend-Systeme zuverlässig und souverän auf Fehlerfälle reagieren. Dies können beispielsweise Verbindungsabbrüche oder Wartungsarbeiten an einem externen System sein. Ein gutes Backend erkennt, wenn ein CRM-System wie Salesforce nicht erreichbar ist, und speichert die Transaktion zur späteren Verarbeitung.
Warum binde ich die Datenbank/die Systeme nicht direkt an das Frontend an?
Der Gedanke liegt nahe, wenn es darum geht eine Lösung "mal schnell" und "günstig" umzusetzen. Jedoch bringt die direkte Anbindung einige fatale Nachteile mit sich:
Sicherheit
Damit die Kommunikation vom Frontend zu Dritt- und Datenbanksystemen funktioniert, müssen Authentifizierungsdaten im Frontend gespeichert und lockere Firewallfreigaben eingerichtet werden. Dies erhöht das Angriffsrisiko, da Systeme von außen erreichbar sind und Authentifizierungsmerkmale potenziell leichter gestohlen werden können. Zudem kann es passieren, dass bei einer Anbindung an eine Datenbank oder ein Drittsystem Daten ungeschützt in der Netzwerkanfrage mitgesendet werden, da diese Systeme kein verschlüsseltes Protokoll zum Datenaustausch anbieten.
Skalierbarkeit
Werden für bestimmte Aufgaben mehr Ressourcen benötigt, muss in diesem Fall die gesamte Anwendung skaliert werden, da sich die Geschäftslogik, Oberfläche und Anbindungen in einer Software befinden. Dadurch werden bei der Skalierung mehr Ressourcen belegt, als eigentlich nötig wären.
Aufgabenteilung
Wenn alles in einer Anwendung implementiert wurde und andere Systeme auf Prozesse dieser Applikation zugreifen können müssen, wird es kompliziert. Schnittstellen müssen nachträglich entwickelt werden und die Software als Ganzes wird für den Zugriff von außen weiter geöffnet.
Welche Technologien werden zur Entwicklung von Backends eingesetzt?
Für die Entwicklung von Backend-Lösungen gibt es zahlreiche Technologien - zu viele, um sie alle hier aufzuzählen.
Programmiersprachen
Fast alle Programmiersprachen eignen sich für die Entwicklung von Backends. Bekannte Vertreter sind: C#, Java, Python, Ruby, PHP oder Rust. Je nach Kontext oder spezifischen Anforderungen entscheidet man sich für die passende Sprache. Dabei spielt unter anderem eine Rolle:
Datenbanken
Bei Datenbanken gilt das Gleiche: es hängt vom Anwendungsfall ab, auf welches System man setzt. Verbreitet sind:
Frameworks
Die jeweilig passenden Backend-Frameworks hängen von der gewählten Programmiersprache ab. Microsoft bietet mit ASP.NET Web API eine Lösung für C#, das Pendant in Java ist Spring Boot.
Cloud
Soll die Anwendung nicht auf eigener Hardware ausgeführt werden, kann sie über einen Cloud-Provider gehostet werden. Dabei unterscheidet man zwischen Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) und serverlosen Architekturen. Die drei größten Anbieter in diesem Segment sind Microsoft mit der Azure Cloud, Google mit der Google Cloud Platform und Amazon mit Amazon Web Services (AWS).
Heutzutage wird vor allem in Kombination mit der Cloud auf eine Containerisierungstechnologie gesetzt, mit der die Lösung in einer fest definierten Umgebung ausgeführt wird. Beispiele hierfür sind Docker oder containerd.