diff --git a/website/assignments/Schnittstellen.md b/website/assignments/Schnittstellen.md index a355973778ec8fe04c23964570a00e49056cec15..395b841cff4ddac0516c0b9d4ff958e1669cfb39 100644 --- a/website/assignments/Schnittstellen.md +++ b/website/assignments/Schnittstellen.md @@ -1,4 +1,4 @@ -# Ãœbungen Software-Entwicklung 3: Schnittstellen (Vorläufig) +# Ãœbungen Software-Entwicklung 3: Schnittstellen ## Ausgangslage Nachdem wir besprochen haben, wie Sie Ihre Programmdaten persistent speichern können, können Sie nun Ihrem Projekt Schnittstellen hinzufügen, sodass Sie Daten nach "außen" zur Verfügung stellen bzw. von dort empfangen können. diff --git a/website/assignments/bewertungsbogen.xlsx b/website/assignments/bewertungsbogen.xlsx index 5c22215368aa3f45c6391fb95d0cd3d2652f0ab7..4312e86ba2ab31836c264f9cd32d724709984b1e 100644 Binary files a/website/assignments/bewertungsbogen.xlsx and b/website/assignments/bewertungsbogen.xlsx differ diff --git a/website/img/.DS_Store b/website/img/.DS_Store index cd33953fadb95088298974018f972ee550907311..2ebea4fe451c8ee843166bed547f9fd63dc3ca8e 100644 Binary files a/website/img/.DS_Store and b/website/img/.DS_Store differ diff --git a/website/img/schnittstellen/message_broker.png b/website/img/schnittstellen/message_broker.png new file mode 100644 index 0000000000000000000000000000000000000000..98c3adcef27104fc7a5eed79bda689aa8ee5fc6e Binary files /dev/null and b/website/img/schnittstellen/message_broker.png differ diff --git a/website/lecturenotes/20220523.md b/website/lecturenotes/20220523.md index 2784ab1a32db213a3d9145a856d6d7f2cbb009a0..efcf836c650062cd91ecebf37bfc180fb64ac3fb 100644 --- a/website/lecturenotes/20220523.md +++ b/website/lecturenotes/20220523.md @@ -3,6 +3,27 @@ ## SQL * Migration bzw. Erweiterung von DB-Schemas bei Bestandsdaten +### Vorgehensvorschlag + +1. Entwicklung der Änderungen +2. Dokumentation der Änderungen +3. Deploy auf dem Testsystem +4. Durchführen der (Integrations-)Tests +5. Einrichten eines Wartungsfensters/Downtime +6. Sichern der Datenbank vor der Migration + +```bash +# Gilt für MariaDB/MySQL +# Mehr Infos: https://mariadb.com/kb/en/making-backups-with-mysqldump/ +mysqldump --user=admin_backup --password --lock-tables --all-databases > /data/backup/dbs.sql +``` + +7. Ausführen der `ALTER TABLE`-Migrations-Skripte +8. Deploy der neuen Softwareversion +9. Durchführen eines Smoketests +10. Beenden des Wartungsfensters/Downtime +11. Beobachten der Logs + ## NoSQL ## Schnittstellen diff --git a/website/schnittstellen.html b/website/schnittstellen.html index d0d704c3bc0499a649f3451d53a60fdbd20d8089..042d6c538d266e0fac394aa93dfde7f441afd5d9 100644 --- a/website/schnittstellen.html +++ b/website/schnittstellen.html @@ -130,6 +130,20 @@ Beispiele: ## Asynchrone Schnittstellen --- +# Definition synchrone Schnittstelle + +> Der Sender **blockiert** bis vom Empfänger eine Antwort geschickt wurde. + +## Beispiele für synchrone Kommunikation + +* HTTP +* SOAP +* GraphQL +* RPC (z.B. RMI, gRPC) +* REST + +--- + # Ablauf synchrone Schnittstelle (vereinfacht) ## Sender @@ -156,16 +170,9 @@ Beispiele: --- # Ablauf synchrone Schnittstelle -> Blick ins [Vorlesungs-Repository](https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung) - ---- -# Beispiele für synchrone Kommunikation +**Neu!** -* HTTP -* SOAP -* GraphQL -* RPC (z.B. RMI, gRPC) -* REST +> Blick ins [Vorlesungs-Repository](https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022vorlesung) --- # Was ist REST? @@ -218,6 +225,7 @@ Beispiele: * ... * Nutzen der HTTP-Status-Codes für Antworten * [Ãœbersicht der HTTP-Status-Codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) + --- # REST-APIs mit OpenAPI 3/Swagger @@ -264,7 +272,7 @@ public class RestServiceApplication { --- # REST mit Spring Boot (III) -_Quelle: [spring.io, "Building a RESTful Web Service", 2022](https://spring.io/guides/gs/rest-service/)_ +_Quelle: ["Building a RESTful Web Service", spring.io, 2022](https://spring.io/guides/gs/rest-service/)_ ```java package com.example.restservice; @@ -323,6 +331,59 @@ class: center, middle # Asynchrone Kommunikationsbeziehungen +--- +# Definition asynchrone Schnittstelle + +> Sender **blockiert nicht** bis vom Empfänger eine Antwort geschickt wurde. + +## Beispiele asynchrone Kommunikation + +* Chats +* E-Mail +* Message Broker/Queues (implementierungsabhängig) + +--- +# Message Broker + +_nach: "Learn Microservices with Spring Boot", Moisés Macero GarcÃa, apress, 2020, S. 216_ + +<img alt="Schematische Darstellung Message Broker" src="img/schnittstellen/message_broker.png" width="100%"/> + +--- +# Ablauf asynchrone Schnittstelle (vereinfacht) + +## Sender +1. Verfassen einer Nachricht +2. Verpacken der Nachricht (_Marshalling_) +3. Absenden der Nachricht +4. _Weiter im Prgrammfluss_ +5. _Ggf. Empfangen der Antwort-Nachricht (nach Zeitraum X)_ +6. _Ggf. Auspacken der Antwort-Nachricht_ +7. _Ggf. Verarbeiten der Antwort-Nachricht_ + +--- +# Ablauf synchrone Schnittstelle (vereinfacht) + +## Empfänger +1. _Warten auf eingehende Nachrichten_ +2. Empfangen der Nachricht +3. Auspacken der Nachricht +4. Verarbeiten der Nachricht +5. _Ggf. Verfassen der Antwort-Nachricht_ +6. _Ggf. Verpacken der Antwort-Nachricht_ +7. _Ggf. Verschicken der Antwort-Nachricht_ + +--- +# Backup Themen: Software im Betrieb + +* Eventual consistency +* Monitoring +* Logging +* Security +* Patching +* Releaseplanung +* Downtimes +* Dokumentation/Schulungen </textarea> <script src="js/remark.min.js">