Backend – ein Begriff, den viele schon einmal im Zusammenhang mit Software-Entwicklung gehört haben. Aber was bedeutet er eigentlich? Was macht ein Backend-Entwickler und womit arbeitet er? Und wie zeichnet sich ein guter Backend-Entwickler aus? Diese Fragen beantworten wir in diesem Artikel.
Definition: Was ist ein Backend-Entwickler?
Der Backend-Entwickler (oder auch Backend-Developer oder Backend-Engineer) entwickelt die Technologie, die gewährleistet, dass ein Programm auf einem Server läuft. Während der Frontend-Entwickler die grafische Oberfläche entwickelt, die du auf einer Webseite sehen kannst, entwickelt der Backend-Entwickler alles, was im Hintergrund läuft und nicht sichtbar für dich ist. Dies kann z. B. die Speicherung einfacher Daten in einer Datenbank oder Bildern auf einem Speicherplatz sein.
Backend: Eingliederung in die Softwareentwicklung
Der Backend-Entwickler nimmt eine zentrale Rolle im Softwareentwicklungsprozess ein. Denn ohne ihn würde nichts von der Software oder der Aktivitäten in der Software gespeichert werden. Der Backend-Entwickler kümmert sich um die Datenbanken, die Bereitstellung von Funktionen und Daten für das Frontend und die Integration verschiedener Systeme für das Programm. Frontend und Backend gehen also Hand in Hand. Genauso wie Backend und DevOps, was in der Praxis häufig dazu führt, dass von einem Backend-Entwickler auch erwartet wird, DevOps zu beherrschen.
Welches Tech-Stack nutzen Backend-Entwickler?
Die Auswahl eines gut gewählten Tech-Stack im Backend kann direkte Auswirkungen auf die Funktionsgeschwindigkeit und Skalierbarkeit einer Anwendung haben. Grundsätzlich kann man mit nahezu jeder Programmiersprache im Backend entwickeln. Nachfolgend schauen wir uns einige Beispiele an und bei welchen bekannten Unternehmen sie eingesetzt werden.
In Anwendung bspw. bei: Netflix, Facebook, Club of Code
In Anwendung bspw. bei: Google, Instagram
In Anwendung bspw. bei: Hadoop, Jenkins
In Anwendung bspw. bei: Visual Studio, Windows Installer
In Anwendung bspw. bei: Wikipedia, Yahoo
In Anwendung bspw. bei: Mozilla Firefox, Adobe Photoshop
Manchmal werden Frameworks genutzt, um in der jeweiligen Programmiersprache das Backend zu programmieren. So z. B. Node.js für JavaScript oder .NET für C#.
Was macht einen guten Backend-Entwickler aus?
Ein guter Backend-Entwickler hat ein Verständnis für die genutzte Infrastruktur und einen Überblick über die Zusammenhänge der verwendeten Technologien und Services. Dabei kann er auch die sinnvolle Einsetzung neuer Technologien bewerten und bei Bedarf einführen. Weiterhin testet ein Backend-Entwickler nicht nur das Best-Case-Szenario der Anwendung, also “Was wenn der Nutzer alles richtig macht?”, sondern auch das Gegenteil, wenn Nutzer z. B. unerfahren sind oder sogar böse Absichten haben. Backend-Entwickler arbeiten meist an der Schnittstelle nach “außen” (API). Sie sind also die Barriere zwischen Nutzern und z. B. den Daten in einer Datenbank. Entwickler, die nur Best-Case-Szenarien umsetzen, schreiben zwar Code, dieser ist jedoch wartungsintensiv(er) und anfällig(er) für Fehler, was ökonomische Schäden mit sich bringen kann.
Außerdem sollte ein guter Backend-Entwickler ein Auge für Performance und Skalierbarkeit haben, sodass ein Programm z. B. durch den Einsatz von Caching und unterschiedlichen Datenbanken schnell ist und durch den Einsatz von Messaging-Systemen wie RabbitMQ oder Kafka leicht skaliert werden kann und somit die schnelle Expansion des Unternehmens ermöglicht wird.
Ein Verständnis für Sicherheitsthemen ist wichtig, damit Schaden vom Unternehmen abgewendet werden kann. Ein guter Backend-Entwickler testet seinen Code und insbesondere die API, nutzt Troubleshooting, um Probleme systematisch und schnell zu lösen, und hat Erfahrung mit Datenbanken, um die Angriffsfläche des Backends zu reduzieren.
Worauf solltet du als Tech-Recruiter achten?
Je nachdem, welche Aufgaben ein Backend-Entwickler übernehmen soll, ändern sich auch die Anforderungen. Deshalb betrachten wir im Folgenden wesentliche Bereiche und deren Einfluss auf die Aufgaben:
Skalierbarkeit
Wenn Daten in großen Mengen oder an sehr viele Nutzer übertragen werden, spielt die Skalierbarkeit der Systeme eine große Rolle. Der Code muss an den entscheidenden Stellen effizient geschrieben sein, sodass die Kosten der Infrastruktur (Server) für das Unternehmen möglichst gering ausfallen und die Nutzer eine positive Erfahrung haben, was die Verfügbarkeit und Geschwindigkeit der Daten betrifft. Skalierbarkeit betrifft meist DevOps-Entwickler, da diese oft für die Infrastruktur verantwortlich sind. Je nach Größe des Unternehmens oder dem Anforderungsprofil kann dies auch auf den Backend-Entwickler zurückfallen. Erfahrung mit Technologien wie Docker (Swarm), Kubernetes und Co ist hier entscheidend.
Relevante Technologien: Docker, Kubernetes, Redis, Messaging-System wie RabbitMQ oder Kafka und mehr
Relevante Berufserfahrung: Messaging-Systeme, Datenbanken, Server-Cluster, …
Performance
Performance und Skalierbarkeit gehen Hand in Hand. Performance beschreibt die Leistungsfähigkeit einer Applikation. Für das Backend bedeutet das z. B., wie hoch der Datendurchsatz ist. Ein Streamingservice wie Netflix stellt z. B. große Datenmengen an sehr viele Nutzer bereit. Hier benötigen Backend-Entwickler häufig Erfahrung in Datenkompression und mit unterschiedlichen Datenbanken.
Die Erfahrung mit Datenbanken ist für Backend-Entwickler entscheidend, weil es bei Performance darum geht, möglichst viel in möglichst wenig Zeit zu erreichen. Dies wird erreicht, indem z. B. nur notwendige Daten abgefragt werden und die Verfügbarkeit durch das Zusammenspiel unterschiedlicher Speichersysteme wie Redis (kurzzeitiger Speicher) und SQL- oder NoSQL-Datenbanken (langfristige Speicher) optimiert wird.
Relevante Technologien: Memory-Speicher wie Redis, NoSQL-Datenbanken wie MongoDB, SQL-Datenbanken wie MySQL, ORMs, Bibliotheken zur Bild- und Videobearbeitung (bei Bedarf) und mehr
Relevante Berufserfahrung: Datenbanken, ORM, Datenkompression, Caching, …
Sicherheit
Backend-Entwickler verantworten im Wesentlichen, ob es zu einem Datenleck kommen kann oder nicht. Sie entwickeln die Schnittstelle eines Programms bzw. eines Servers nach außen (API). Diese API kann z. B. im Falle einer Webseite oder einer Web-Applikation von jedem, also der gesamten Öffentlichkeit, genutzt werden. Damit öffnet sie Tür und Angel für negative Effekte auf den Zustand des Programms oder sogar den Zustand des Unternehmens aufgrund wirtschaftlicher Schäden. Beim Thema Sicherheit sollte vor allem darauf geachtet werden, ob der Backend-Entwickler getesteten Code schreibt und somit den Code hinsichtlich seiner Sicherheit auf unterschiedliche Szenarien testet. Außerdem ist die Erfahrung mit APIs wichtig, um zu verhindern, dass “versehentlich” Daten nach außen gelangen, die es nicht sollen. Das Thema Sicherheit beeinflusst auch die Verfügbarkeit und Skalierbarkeit eines Programms, wenn es um Themen wie Rate-Limiting oder DDoS geht.
Relevante Technologien: Bibliotheken zum Testen von Software wie Selenium oder Jest; APIs wie REST oder GraphQL
Relevante Berufserfahrung: Testing, API, DDoS, Rate-Limiting, Troubleshooting, …
Kläre daher mit deinem Fachbereich, welche Aufgaben der Backend-Entwickler übernehmen soll und mit welcher Technologie gearbeitet wird. Je nach Technologie und Aufgabenspektrum solltest du Rückfragen stellen, inwieweit die o. g. Berufserfahrungen eine Rolle spielen.
FAQ
Was macht man als Backend-Entwickler?
Ein Backend-Entwickler entwickelt die Technologie, die sicher stellt, dass ein Programm auf einem Server läuft. Damit entwickelt der Backend-Entwickler, im Gegensatz zum Frontend-Entwickler, den nicht sichtbaren Teil einer Software.
Wie viel verdient ein Backend-Entwickler?
Ein Backend-Entwickler verdient zwischen 49.000 € und 69.000 € brutto. Das Gehalt kann je nach Erfahrungslevel auch darüber hinausgehen.
Welche Programmiersprachen nutzt man im Backend?
Grundsätzlich kann man mit nahezu jeder Programmiersprache (Java, PHP, JavaScript,…) im Backend entwickeln. Die Auswahl des Tech-Stacks hat dabei direkten Einfluss auf die Funktionsgeschwindigkeit und Skalierbarkeit einer Anwendung.