- Verbund von verschiedenen Rechnern über verschiedene Protokolle
- Verschiedene Systeme verbinden
- Informationen austauschen
- Ungenutzte Ressourcen nutzen
- Lasten verteilen
- Ausfallsicherheit
- Skalierbarkeit
- Wenn die App gegenüber dem Nutzer wie ein einziges System wirkt.
- Layer 1: Physikalische Schicht
- Layer 2: Sicherungsschicht (Übertragungsfehlerkorrektur)
- Layer 3: Netzwerkschicht (Routing mit z.B. IPv4)
- Layer 4: Transportschicht (Aufteilung der Daten in Pakete z.B. TCP / UDP)
- Layer 5: Sitzungsschicht (kaum benutzt)
- Layer 6: Darstellungsschicht (kaum benutzt)
- Layer 7: Anwendungsschicht (z.B. HTTP, SSH, FTP, SMTP)
Eigenschaften einer Datenbank-Transaktion
- Atomar: Wird ganz oder gar nicht ausgeführt
- Konsistent: Nach der Transaktion keine inkonsistente Zustände
- Isoliert: Parallele Transaktionen beeinflussen sich nicht.
- Dauerhaft: Endergebnis wird gespeichert
- synchron: Request/Response, RPC, eine HTML-Seite laden
- asynchron: Callback, Polling, Email, Sockets
- nachrichtenorientiert: PubSub, MQTT-Sensor
- Schichtmodell (3-Tier: Präsentation, Anwendung, Datenspeicher)
- Objektbasiert (Objekte reden miteinander über Methodenaufrufe)
- Ereignisbasiert: Event Loop arbeitet Nachrichten ab z.B. node.js
- Architektur mit gemeinsamer DB
- Peer-to-Peer
- "Methodenaufruf über das Netz"
- Thin-Client (UI wird zwischen Client und Server aufgeteilt)
- Klassischer Client in der 3-Tier Architecture (UI ausschließlich clientseitig)
- SPA & REST
- Rich Client: (UI und Anwendungslogik auf dem Client)
- PWA
- Services eines Unternehmens in viele, kleine, möglichst unabhängige Dienste aufzuteilen. Kleinere Services sind einfacher zu warten, können schneller und flexibler ersetzt werden und können eventuell auch Daten für andere Services bereitstellen
- Anwendung in viele kleine unabhängige Dienste/Prozesse/Module zerlegt werden, die miteinander kommunizieren (über REST).
- Das Prinzip ist ähnlich wie bei SOA, nur geht es hier nur um eine Anwendung nicht um ein Informationssystem, das ein Geschäftsprozess abbildet.
- public: AWS / Azure / GCP
- private: Eigene Cloud -> z.B. eigene Firewall
- hybrid: Public + Private
- Model: DB-Zugriff, Datenmodell
- View: Präsentationsschicht
- Controller: Eingabe und Verarbeitung von Daten
Representational State Transfer (CRUD HTTP etc.)
- JS darf keine Scripts von anderem Host ausführen
- Kann mit CORS-Einstellungen gefixt werden
- IaaS: VM mieten
- PaaS: Azure Function mieten
- SaaS: Salesforce mieten
- In einem Containerkann eine Anwendung mit ihren gesamten Bibliotheken, Dateien und Konfigurationsdaten gepackt werden und auf einem Rechner deponiert und ausgeführt werden.
- Container teilen sich ein Betriebssystem, laufen aber als gegenseitig isolierte Prozesse, sind dadurch unabhängig und können auf jedem Hostsystem ausgeführt werden.
- Azure Functions, AWS Lambda
- "Server läuft nur, wenn er gebraucht wird."
- App, die aus HTML/CSS/JS besteht und wieeine responsive Webseite aussieht.
- Installierbar wie jede andere App
- Service Worker spricht ggf. mit remote Servern
- Beispiel: https://photopea.com
- Nicht-relationale, auf Skalierbarkeit und Hochverfügbarkeit optimierte Datenbanken.
- Eventual Consistency: Transkationen nicht isoliert und konsistent (last write wins)
- Kategorien:
- Dokumentenorientiert (key-document): CouchDB, MongoDB
- Key-Value: Amazon Dynamo, Redis, Riak
- Spaltenorientiert (Schneller Zugriff auf Spaltensummen): Hbase
- Graphen-DB (Baum/Netzwerkstrukturen): Giraph, Neo4J
- Theorem: Nie sind alle drei Eigenschaften voll erfüllt
- Consistency: Alle Nutzer sehen immer die gleichen Daten
- Availability: Alle Nutzer können immer zugreifen
- Partition Tolerance: DB kann auf mehere Nodes verteilt werden und einer kann ausfallen
- Dezentral
- Transaktionen in Blöcken
- Blöcke sind über Hashes verbunden
- Längste gewinnt
- Mining = Proof of Work: Auswahl des Teilnehmers, der den letzten Block beglaubigt, findet durch Berechnung eines Rätsels statt. Die Rechenleistung ist entscheidend.
- Proof of Stake: Hier entscheidet das Vermögen in Bitcoins eines Teilnehmers.
- Practical Byzantine Fault Tolerance (PBFT): Hier entscheidet eine Mindestanzahl von Teilnehmern, die sich auf die Gültigkeit einer Transaktion einigen.
- Proof of Burn: Miner muss einen Einsatz in Bitcoins leisten ("verbrennen"), um Blocks bestätigen zu dürfen.
- Code über Form o.Ä. einschleusen
- Opfer führt den Code ausversehen aus
- Angreifer manipuliert eine HTTP Request vom Opfer
- TLS oder JWT fixen das z.B.
- SQL-Query einschleusen
- SHA256, SHA512
- Downloadprüfsummen, Passwörter speichern, Email-Signatur
- Beides einer Certification Authority (CA) vorlegen und von deren privat Key signieren lassen.
- Sich treffen und die Keys vergleichen