You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -72,6 +72,9 @@ Das übergreifende Datenformat macht die Nachvollziehbarkeit von Code Änderunge
72
72
},
73
73
{
74
74
"cell_type": "code",
75
+
76
+
77
+
75
78
"execution_count": null,
76
79
"id": "6c91aadb",
77
80
"metadata": {},
@@ -97,9 +100,72 @@ Das übergreifende Datenformat macht die Nachvollziehbarkeit von Code Änderunge
97
100
98
101
> **Merke:** Jupyter Notebooks sind ein hervorragendes Werkzeug für schnelle Prototypen, API-Dokumentationen oder Vorträge mit Live Hacks aber ungeeignet für Projekte [persönliche Meinung des Vortragenden :-)].
99
102
100
-
> **Hinweis:** Eine Beschreibung der Installationsprozedur für einen C#-Kernel finden Sie unter [Link](https://github.com/dotnet/interactive)
103
+
> **Beispiel:** Ein lauffähiges C#-Notebook samt Datensatz finden Sie unter [`code/18_ContinuousIntegration/JupyterExample`](https://github.com/TUBAF-IfI-LiaScript/VL_Softwareentwicklung/tree/master/code/18_ContinuousIntegration/JupyterExample).
104
+
105
+
> **Hinweis:** Eine Beschreibung der Installationsprozedur für einen C#-Kernel finden Sie unter [Link](https://github.com/dotnet/interactive). Praktisch:
> Danach steht in VS Code (Jupyter-Extension) bzw. JupyterLab der Kernel `.NET (C#)` zur Verfügung.
113
+
114
+
>**Achtung:** Das frühere VSC-Plugin "Polyglot Notebooks" sowie `.NET Interactive` werden seit 2026 nicht mehr weiterentwickelt (deprecated). Der oben genannte Kernel funktioniert weiterhin, erhält aber keine Updates. Microsofts heutiger Weg für schnelles C# ohne Projektdatei sind stattdessen *file-based apps*: `dotnet run app.cs` (ab .NET 10).
115
+
116
+
## Exkurs: C#-Bibliotheken aus Python heraus nutzen
117
+
118
+
Sprachgrenzen sind in der Praxis selten scharf: Eine bestehende, getestete C#-Bibliothek soll
119
+
aus einem Python-Skript heraus aufgerufen werden – etwa um in einem Data-Science-Workflow eine
120
+
bereits implementierte Fachlogik wiederzuverwenden, statt sie neu zu schreiben.
121
+
122
+
Die Brücke bildet das Paket [pythonnet](https://github.com/pythonnet/pythonnet). Es bindet die
123
+
.NET-Laufzeitumgebung in den Python-Prozess ein, sodass .NET-Assemblies (`*.dll`) geladen und
124
+
ihre Typen wie gewöhnliche Python-Objekte verwendet werden können.
125
+
126
+
Der prinzipielle Ablauf:
127
+
128
+
1. **Laufzeit wählen** – pythonnet auf die .NET-Core-/CoreCLR-Runtime festlegen.
129
+
2. **Assembly referenzieren** – die kompilierte `*.dll` über `clr.AddReference` bekanntmachen.
130
+
3. **Typen importieren** – die Klassen des C#-Namespaces wie ein Python-Modul ansprechen.
> **Merke:** In beiden Sprachen ist die Idee identisch – die hierarchischen
381
+
> Schlüssel-Wert-Daten werden auf **Klassen** abgebildet. Der Compiler (C#)
382
+
> bzw. die `@dataclass` (Python) kennt die Felder, sodass der Zugriff
383
+
> typsicher über `.name` statt über `['name']` erfolgt.
384
+
238
385
239
386
## Continuous integration (CI)
240
387
@@ -279,12 +426,42 @@ Damit ergeben sich folgende Aktivitäten, die für einen CI Realisierung benöti
279
426
280
427
> Merke: Unterschätzen Sie den Aufwand für die Realisierung und Wartung der Tool-Chain nicht. Häufig müssen hier zu Beginn des Projektes grundsätzliche Entscheidungen getroffen werden, die zumindest mittelfristige Auswirkungen auf das Projekt haben.
281
428
282
-
## Continuous Deployment
429
+
## Continuous Delivery / Deployment
283
430
284
431
Continuous Deployment (CD) ist ein Softwareentwicklungsprozess, der darauf abzielt, Codeänderungen automatisch und kontinuierlich in die Produktionsumgebung zu integrieren und bereitzustellen. Dies geschieht oft ohne menschliches Eingreifen, sobald der Code durch automatisierte Tests und andere Qualitätssicherungsmaßnahmen validiert wurde.
285
432
286
433
 Creative Commons Attribution-Share Alike 4.0 International")
287
434
435
+
Die Abbildung zeigt die **vollständige** Pipeline – nicht nur den abschließenden
436
+
Deployment-Schritt. Auf jeden `Check in` folgt ein automatisch ausgelöster
437
+
(`Trigger`) Durchlauf, der die Software stufenweise absichert und am Ende
438
+
ausrollt.
439
+
440
+
> **Warum stehen hier auch Build und Unit-Test?** Weil CD nicht *neben* CI
441
+
> steht, sondern CI **umschließt**: Man kann nichts ausrollen, das sich nicht
442
+
> bauen lässt und dessen Bausteine nicht funktionieren. Build und Unit-Test sind
443
+
> der gemeinsame Anfang beider Pipelines – CI ist die *linke Hälfte*, CD die
444
+
> *ganze* Kette.
445
+
446
+
```text
447
+
Check in → Trigger → Build → Unit Test → Acceptance → Integration → System → UAT → ┊ → Produktion
448
+
└──────── CI: ist der Code integrierbar? ───────┘ ┊
└────────────── Continuous Deployment: ... vollautomatisch in die Produktion ──────┘
451
+
```
452
+
453
+
> **Delivery ≠ Deployment.** Beide kürzt man mit **CD** ab – sie unterscheiden
454
+
> sich nur im *letzten* Schritt:
455
+
>
456
+
> -**Continuous _Delivery_**: Die Pipeline stellt sicher, dass jeder Stand
457
+
> *jederzeit auslieferbar* ist. Der Sprung in die Produktion erfolgt aber
458
+
> bewusst per **manueller Freigabe** (ein „Go"-Klick).
459
+
> -**Continuous _Deployment_**: Auch dieser letzte Schritt läuft **automatisch** –
460
+
> besteht der Code alle Stufen, geht er *ohne menschliches Eingreifen* live.
461
+
>
462
+
> Die obige Abbildung zeigt eine *Delivery*-Pipeline (mit Freigabepunkt vor der
463
+
> Produktion); dieser Abschnitt beschreibt die konsequente Weiterführung,
464
+
> *Deployment*, bei der dieser Punkt entfällt.
288
465
289
466
Die Hauptmerkmale von Continuous Deployment sind:
290
467
@@ -296,17 +473,25 @@ Die Hauptmerkmale von Continuous Deployment sind:
296
473
297
474
+ Schnelles Feedback: Entwickler erhalten schneller Feedback zu ihren Änderungen, da diese schnell in der Produktion verfügbar sind. Dies erleichtert das schnelle Erkennen und Beheben von Fehlern.
298
475
299
-
> Continuous Deployment baut auf der Praxis der Continuous Integration auf, bei der Codeänderungen regelmäßig in ein gemeinsames Repository integriert und getestet werden.
300
-
301
-
Techniken des CD sind:
302
-
303
-
+ Blue-Green Deployment (harter Wechsel zwischen zwei Produktionsumgebung)
304
-
+ Canary Deployment (Selektives Ausrollen der neuen Version)
305
-
306
476
## Einordnung
307
477
308
478
DevOps (eine Kombination aus Development und Operations) ist ein ganzheitlicher Ansatz, der den gesamten Lebenszyklus von Software betrachtet – von der Planung und Entwicklung über das Testen, die Bereitstellung bis hin zum Betrieb und der Überwachung von Anwendungen im Produktivsystem.
309
479
480
+
Klassisch wird DevOps als **Endlosschleife** dargestellt: Die Entwicklung
481
+
(`Dev`) geht nahtlos in den Betrieb (`Ops`) über, und die Erkenntnisse aus dem
482
+
Betrieb (`Monitor`) fließen direkt in die nächste Planung zurück.
483
+
484
+
```ascii
485
+
.----------- Dev -------. .--------- Ops -------------.
486
+
| \ / |
487
+
v \ / v
488
+
Plan → Code → Build → Test ------>O-------> Release → Deploy → Operate → Monitor
Feedback aus dem Betrieb fließt in die nächste Iteration
493
+
```
494
+
310
495
Ziel von DevOps ist es, die Zusammenarbeit zwischen Entwicklungs- und Betriebsteams zu verbessern. Historisch waren diese beiden Bereiche oft getrennt: Entwickler wollten neue Funktionen möglichst schnell implementieren, während das Betriebsteam auf Stabilität und Sicherheit achtete – oft mit widersprüchlichen Zielen. DevOps überbrückt diese Kluft, indem es eine gemeinsame Verantwortung für den gesamten Prozess schafft.
311
496
312
497
Dabei spielen Kultur, Prozesse und Werkzeuge eine zentrale Rolle:
@@ -315,7 +500,7 @@ Dabei spielen Kultur, Prozesse und Werkzeuge eine zentrale Rolle:
315
500
+ Prozesse: DevOps strebt kontinuierliche Verbesserungen durch kurze Feedbackzyklen, häufige Releases und automatisierte Qualitätssicherung an.
316
501
+ Werkzeuge: Die Nutzung von Automatisierungstools zur Codeintegration, Testausführung, Infrastrukturverwaltung und Überwachung ist essenziell, um manuelle Fehler zu reduzieren und schnell auf Änderungen reagieren zu können.
317
502
318
-
> Continuous Integration (CI) und Continuous Delivery bzw. Deployment (CD) sind zentrale Bausteine innerhalb von DevOps.
503
+
> Continuous Integration (CI) sowie Continuous Delivery und Continuous Deployment (beide **CD**) sind zentrale Bausteine innerhalb von DevOps. Delivery und Deployment unterscheiden sich, wie oben gezeigt, nur darin, ob der letzte Schritt in die Produktion manuell freigegeben oder vollautomatisch ausgeführt wird.
0 commit comments