Enterprise Application Development und Evolutionäre Informationssysteme - Cheatsheet
Schichtenarchitekturen und deren Anwendung
Definition:
Architekturmuster für Software, bei dem die Anwendung in aufeinander aufbauende Schichten unterteilt wird.
Details:
- Basis: Jede Schicht hat bestimmte Verantwortlichkeiten
- Vorteile: Verbesserung der Modularität, Wiederverwendbarkeit und Wartbarkeit
- Typische Schichten: Präsentation, Geschäftslogik, Datenzugriff
- Anwendung in kaskadierenden Modellen und verteilten Systemen
- Kommunikation zwischen Schichten über definierte Schnittstellen
MVC-Muster und dessen Implementierung
Definition:
MVC (Model-View-Controller) ist ein Architektur-Muster zur Trennung von Daten, Benutzeroberfläche und Anwendungslogik.
Details:
- Model: Verwalten der Anwendungsdaten und Geschäftslogik.
- View: Präsentation der Daten für den Benutzer.
- Controller: Vermittelt zwischen Model und View, verarbeitet Benutzereingaben und aktualisiert Modelle und Ansichten.
- Vorteile: Erleichtert Wartung und Erweiterung, bessere Testbarkeit, klare Trennung der Verantwortlichkeiten.
- Umsetzung in Frameworks wie Spring (Java), ASP.NET (C#), Django (Python).
Design Patterns: Repository und Factory
Definition:
Repository: Schnittstelle zum Zugriff auf gespeicherte Daten | Factory: Erzeugungsmuster zur Objekterstellung
Details:
- Repository: Abstrahiert Datenspeicherzugriffe und fördert Testbarkeit
- Trennt Geschäfstlogik von Datenzugriff
- Factory: Erzeugt Objekte ohne direkte Nutzung des Konstruktors
- Fördert Entkopplung und Flexibilität in der Objekterstellung
Grundlagen und Implementierung von Microservices
Definition:
Architekturstil für die Entwicklung von Softwareanwendungen als Sammlung kleiner, unabhängiger, modularer Dienste, die jeweils für eine spezifische Geschäftsaufgabe verantwortlich sind.
Details:
- Entkopplung: Jeder Microservice ist eigenständig und kommuniziert über APIs.
- Skalierbarkeit: Microservices können unabhängig voneinander skaliert werden.
- Technologieunabhängigkeit: Verschiedene Technologien/Programmiersprachen je Microservice erlaubt.
- Continuous Deployment: Ermöglicht häufige und unabhängige Releases.
- Fault Isolation: Fehler in einem Service beeinträchtigen nicht das gesamte System.
Kommunikationsprotokolle: REST und SOAP
Definition:
REST und SOAP sind Architekturstile und Protokolle für den Austausch von Nachrichten in verteilten Systemen.
Details:
- REST (Representational State Transfer): Leichtgewichtig, nutzt HTTP, JSON und XML.
- SOAP (Simple Object Access Protocol): Protokoll-basiert, nutzt XML, bietet mehr Standardisierung.
- REST: Ressourcen-basierter Ansatz, CRUD-Operationen (GET, POST, PUT, DELETE).
- SOAP: Funktionsbasierter Ansatz, definiert Operationen mit WSDL (Web Services Description Language).
- REST: Höhere Performance und Skalierbarkeit.
- SOAP: Bietet Sicherheit und Transaktionsunterstützung über WS-Security und WS-AtomicTransaction.
- Verwendet in Webservices und Microservices-Architekturen.
Cloud-Service-Modelle: IaaS, PaaS, SaaS
Definition:
Bereitstellungsmodelle im Cloud-Computing
Details:
- IaaS (Infrastructure as a Service): Virtuelle Rechenressourcen (Server, Speicher, Netzwerk)
- PaaS (Platform as a Service): Entwicklungs- und Laufzeitumgebungen für Anwendungen, inkl. Middleware und Datenbanken
- SaaS (Software as a Service): Web-basierte Anwendungen, bereitgestellt und verwaltet von Drittanbietern
CI/CD-Tools und -Workflows: Jenkins, GitLab CI
Definition:
Tools für Continuous Integration und Continuous Delivery/Deployment (CI/CD). Jenkins ist Open-Source-Automatisierungsserver für CI/CD. GitLab CI ist CI/CD-Tool, das in GitLab integriert ist.
Details:
- Jenkins: bietet flexible und erweiterbare CI/CD-Lösungen.
- GitLab CI: integriert in GitLab, bietet nahtlose CI/CD-Pipeline-Verwaltung.
- Mit Jenkins: Pipelines werden in 'Jenkinsfile' definiert.
- Mit GitLab CI: Pipelines werden in '.gitlab-ci.yml' definiert.
- Beide Tools unterstützen Plugins/Erweiterungen für zusätzliche Funktionen.
- Jenkins: basiert auf Master-Agent-Architektur.
- GitLab CI: verwendet Runner für das Ausführen von Jobs.
- Beide Tools unterstützen paralleles Ausführen von Jobs, Codetests, und Automatisierung von Deployments.
Agile Methoden: Scrum und Kanban
Definition:
Scrum und Kanban sind agile Methoden zur Softwareentwicklung und Prozessoptimierung.
Details:
- Scrum: Framework für iterative Entwicklung, betont Rollen (Product Owner, Scrum Master, Dev-Team), Zeremonien (Sprint Planning, Daily Stand-up, Sprint Review, Sprint Retrospective) und Artefakte (Product Backlog, Sprint Backlog, Increment).
- Kanban: Visualisierung von Arbeitsprozessen mittels Kanban-Board, Schwerpunkt auf kontinuierlicher Verbesserung (Kaizen), Limitierung der Arbeit in Arbeit (WIP), Pull-System.
- Beide Methoden: Fokus auf Flexibilität, schnelle Anpassung an Änderungen, kontinuierliche Verbesserung, Kundenzufriedenheit.