Schichten
Software auf Anwendungsebene
= Das, was wir mit den Systemen machen wollen
Computing Infrastructures
Betriebssysteme
Lokale Laufzeitumgebungen (RTE) der Software auf Anwendungsebene
Management lokaler Ressourcen
Netzwerke
Verbindung der lokalen RTEs zu verteilten Systemen
Mangement verteilter Ressourcen
Protokollschichten
Hardware
“Formen” von Software
Anwendungen (aktiv), Dienste (aktiv), Daten (passiv)
Notwendig für lauffähige Software
Speicher, Prozessor, Schnittstellen
(wobei Schnittstellen ein Unterpunkt von Speicher ist)
Umgang mit Komplexität
In der BWL:
Vereinheitlichung und Standardiesierung ermöglichen Skalierung (economies of scale)
In der Informatik:
Abstraktion und Modularisierung (divide and conquer) ermöglichen Interoperabilität und Adaptierbarkeit
Aufbau moderner Systeme
viele, oft parallel arbeitende Anwendungen
diverse Hardware-Ressourcen
Ein Betriebssystem (OS) zur Verwaltung beider, mit dem Kernel als OS-eigenem “Hauptprogramm”
System Calls, um die Dienste des OS kontrolliert aufzurufen
Unterbrechungen, Signale, Ereignisse zur definierten Interaktion zw Anwendungen und Plattform
Treiber, um die spezifische Hardware anzusteuern
Betriebssystem (Operating Systems)
ist eine Sammlung von Routinen, Programmen und Algorithmen, die den Betrieb eines Rechners erst ermöglichen.
Das zentrale und identifizierende Element ist der Kernel.
2 Aufgaben eines Betriebssystems
Verwaltung der Hardware- und Software-Ressourcen, dh. der Betriebsmittel des Rechners
Bereitstellung von Diensten über System Calls (=”Sprache” des OS), sodass die Verwendung des Rechners vereinfacht und (z.B. über Hardware-Varianten hinweg) vereinheitlicht wird
Anwendungsprogramme verwendet die Dienste des OS, das als zentrale Kontrollstelle und “Schiedsricher” fungiert.
Charakterisierende Merkmale von OS
“Ontogenese rekapituliert Phylogenese”
Historie der OS, Obsolete und neu belebte Konzepte
Architektur
Monolith, Micro Kernel, Schichten und Abstraktion
Laufzeitumgebung
Prozess- und Thread-Management, Speicherverwaltung, Echtzeitfähigkeit, Dateisystem, I/O
Nutzungsschnittstellen
Benutzer, Administration, Automation
Plattformen
Prozessor, Rechnerart: Server, Cloud, Mobile, Embedded, Desktop
Monolithische Anwendungen werden entwickelt, um mehrere zusammenhängende Aufgaben zu bearbeiten. Es handelt sich in der Regel um komplexe Anwendungen, die mehrere eng gekoppelte Funktionen umfassen.
Denken Sie z. B. an eine monolithische SaaS-Anwendung für E-Commerce. Sie könnten einen Webserver, ein Lastenausgleich, einen Katalogdienst, der Produktbilder bereitstellt, ein Bestellsystem, eine Zahlungsfunktion und eine Versandkomponente umfassen.
Wie Sie sich vorstellen können, haben monolithische Tools angesichts ihres großen Funktionsumfangs tendenziell riesige Codebasen. Eine kleine Änderung an einer einzelnen Funktion kann das Kompilieren und Testen der gesamten Plattform erfordern, was mit dem von heutigen Entwicklern bevorzugten agilen Ansatz kollidiert.
Im Gegensatz zum monolithischen Ansatz beinhaltet eine Microservices-Architektur kleinere Anwendungen, die unabhängig voneinander als lose gekoppelte Dienste bereitgestellt werden und durch die Anwendungsintegration miteinander verbunden sind. Bei Nutzung von Microservice-Anwendungen kann die Geschäftslogik mehrere Plattformen umfassen, darunter Software-as-a-Service, On-Premises-Datenbanken und intern entwickelte Anwendungen, die Anforderungen erfüllen, die keine SaaS-Anwendung abdeckt.
Aus Entwicklerperspektive sind Microservices einfacher zu entwickeln. Ihr Funktionsumfang ist kleiner, weshalb sie insgesamt kleiner sind. Das erleichtert es Entwicklern, sie durch kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) zu verbessern. Sie können in jeder Programmiersprache geschrieben werden. Und sie können über APIs mit anderen Microservices kommunizieren.
Eine Anwendungsprogrammierschnittstelle (API) ist eine Reihe von Programmieraufrufen, mit denen Entwickler auf die Funktionalität einer Anwendung zugreifen können. APIs vereinfachen die Entwicklung integrierter Anwendungen, indem sie eine einfache Möglichkeit bieten, Anmeldeinformationen und Daten zwischen Anwendungen zu übergeben.
Echtzeitfähigkeit
Der Begriff Echtzeit (englisch real-time) charakterisiert den Betrieb informationstechnischer Systeme, die bestimmte Ergebnisse zuverlässig innerhalb einer vorbestimmten Zeitspanne, zum Beispiel in einem festen Zeitraster, liefern können.
Übergreifende Aspekte und Kontext eines OS
Netzwerk-Stack
Verbindung und Protokolle, Dienste
Virtualisierung
Hypervisor und VM, Cloud, Container+Orchestrierung
Sicherheit
S-Architektur und Konzept, Schnittstellen: Nutzer, Netz, Geräte, Schwachstellen
Lizenzmodell
Proprietär, Open Source:Lizenzen, ihre Versionen und Adaptionen
Standards
zB Unterstützung von ISO 27001, ISO 26262, IEC 61508
Monitoring + Verfügbarkeit
Service Level Agreement, Key Performance Indicators, Hochverfügbarkeit, Messen von KPIs
Nichtdeterminismus
ist ein Konzept aus der theoretischen Informatik, in dem Algorithmen oder Maschinen nicht nur genau eine Berechnung zu einer bestimmten Eingabe durchlaufen können, sondern es bei gleicher Eingabe mehrere Möglichkeiten für den Übergang in den nachfolgenden Zustand gibt.
Zuletzt geändertvor einem Jahr