Backend Development
Topic outline
-
-
Fertigkeiten, Kenntnisse und Fähigkeiten in der Fachrichtung Anwendungsentwicklung gemäß https://www.bibb.de/de/berufeinfo.php/profile/apprenticeship/80000.
Herausgeber:
Bundesinstitut für Berufsbildung (BIBB)
Robert-Schuman-Platz 3
53175 Bonn
-
-
-
-
Die Codestruktur ist ein grundlegender Aspekt der Softwareentwicklung, der vorgibt, wie die Komponenten eines Systems organisiert sind und miteinander interagieren.
-
Hinweise zur Auswahl der richtigen Struktur
Bei der Entscheidung für eine Codestruktur sollten Sie die folgenden Faktoren berücksichtigen:
- Projektgröße und -komplexität: Größere, komplexere Projekte können von Microservices oder modularen Strukturen profitieren, während kleinere Projekte eher für monolithische oder geschichtete Architekturen geeignet sind.
- Anforderungen an die Skalierbarkeit: Wenn Sie davon ausgehen, dass Sie Teile Ihrer Anwendung unabhängig skalieren müssen, könnten Microservices oder serverlose Architekturen von Vorteil sein.
- Ressourcen für Entwicklung und Wartung: Berücksichtigen Sie das Fachwissen Ihres Teams und die für die Entwicklung und laufende Wartung verfügbaren Ressourcen. Microservices erfordern zum Beispiel eine robuste DevOps-Infrastruktur.
- Leistungsbetrachtungen: Einige Strukturen, wie z. B. Microservices, führen aufgrund von Netzwerkaufrufen zwischen Diensten zu Latenzzeiten. Bewerten Sie die Auswirkungen der einzelnen Strukturen auf die Leistung für Ihren spezifischen Anwendungsfall.
-
-
-
Der monolithische Programmierstil bezieht sich auf die Entwicklung von Softwareanwendungen als eine einzige, zusammenhängende Einheit.Dieser Programmierstil war vor allem in den frühen Tagen der Softwareentwicklung weit verbreitet. In den Anfängen der Computerprogrammierung und der Entwicklung von Softwareanwendungen war es üblich, den gesamten Code einer Anwendung in einer einzigen Codebase oder einem einzigen Projekt zu organisieren.
-
Merkmale des monolithischen Programmierstil:
1. Einfachheit: Monolithische Anwendungen sind oft einfacher zu entwickeln und zu verstehen, da der gesamte Code in einer einzigen Codebase organisiert ist.
2. Debugging und Wartung: Fehlerbehebung und Wartung sind einfacher, da Entwickler direkt im Code arbeiten können, ohne zwischen verschiedenen Services oder Komponenten wechseln zu müssen.
3. Performance: Monolithische Anwendungen können in bestimmten Fällen effizienter sein, da sie weniger Overhead durch Kommunikation zwischen verschiedenen Services haben.
4. Deployment: Das Bereitstellen einer monolithischen Anwendung kann einfacher sein, da alle Komponenten in einem einzigen Paket enthalten sind. -
Hier sind einige Beispiele:
Microsoft Windows (bis XP von 2001): Frühe Versionen des Betriebssystems Microsoft Windows waren monolithische Anwendungen, bei denen der gesamte Code in einer einzigen ausführbaren Datei organisiert war.
Microsoft Word (vor Office-Suite): In den Anfangszeiten von Microsoft Word war die Anwendung monolithisch aufgebaut, und der gesamte Code war in einem einzigen Programm zusammengefasst.
Early Web Applications: Viele der ersten Webanwendungen waren ebenfalls monolithisch aufgebaut, wobei der gesamte Code auf dem Server ausgeführt wurde und die gesamte Anwendungslogik in einem einzigen Prozess verankert war.
-
Das Beispiel beschreibt, wie ein Schachspiel als klassische monolithische Anwendung (Web mit PHP) entwickelt werden könnte. Das Beispiel zeigt keinen vollständigen Code, sondern die Zusammenstellung der notwenigen Komponenten.
-
Alternative
Es ist wichtig zu beachten, dass monolithische Ansätze nicht für alle Arten von Projekten geeignet sind, insbesondere wenn Skalierbarkeit, Unabhängigkeit von Komponenten oder kontinuierliche Bereitstellung wichtig sind. In solchen Fällen werden dann mikroservicesbasierte Architekturen in Betracht gezogen.
-
-
-
Ein Wechsel zu Mikroservices oder SOA erfordert eine fundamentale Neugestaltung der Architektur. Jeder Schachdienst (z.B. Bewegungsvalidierung, Datenbankinteraktion) würde als eigenständiger Mikroservice betrachtet werden. Die Kommunikation erfolgt über API-Aufrufe, und jeder Dienst kann unabhängig bereitgestellt, skaliert und aktualisiert werden. Dieser Ansatz bietet Flexibilität, Skalierbarkeit und Wartbarkeit, geht jedoch auch mit zusätzlichem Managementaufwand einher.