Backend Entwicklung

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:

Umsetzung der Barrierefreiheit
Entwicklung wiederverendbarer Komponenten für eine einheitliche Darstellung
Integration von Backend-Schnittstellen
Validierung von Eingaben
Anzeige benutzerfreundlicher Fehlermeldungen

Backend

Bei der Backend-Entwicklung konzentriert man sich auf die Entwicklung der Geschäftslogik, also das, was die Anwendung tut. Darunter fallen beispielsweise:

Berechnungsalgorithmen
Dauerhafte Datenspeicherung
Caching von häufig abgefragten Daten
Session-Management
Überprüfung der übermittelten Daten
Implementierung von Schnittstellen

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:

mit welchen Technologien die Entwickler vertraut sind
ob es spezielle Anwendungsfälle, wie die Echtzeitverarbeitung gibt
auf welchem System das Backend ausgeführt werden soll

Datenbanken

Bei Datenbanken gilt das Gleiche: es hängt vom Anwendungsfall ab, auf welches System man setzt. Verbreitet sind:

Relationale Datenbanken (SQL), wie z. B. MySQL oder Microsoft SQL
Nicht-relationale Datenbnken (NoSQL), wie Mongo DB oder Cosmos DB
Key-Value-Datenbanken: zum Speichern von Schlüssel-Wert-Paaren, wie Redis
Graph-Datenbanken: zur Persistierung von Beziehungen

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.