diff --git a/Writerside/images/image_859.png b/Writerside/images/image_859.png new file mode 100644 index 0000000..65465c0 Binary files /dev/null and b/Writerside/images/image_859.png differ diff --git a/Writerside/images/image_860.png b/Writerside/images/image_860.png new file mode 100644 index 0000000..9204eb8 Binary files /dev/null and b/Writerside/images/image_860.png differ diff --git a/Writerside/images/image_861.png b/Writerside/images/image_861.png new file mode 100644 index 0000000..dc604b9 Binary files /dev/null and b/Writerside/images/image_861.png differ diff --git a/Writerside/images/image_862.png b/Writerside/images/image_862.png new file mode 100644 index 0000000..9f50d24 Binary files /dev/null and b/Writerside/images/image_862.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index 9550e29..323ad2e 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -113,7 +113,7 @@ - + @@ -131,6 +131,8 @@ + + diff --git a/Writerside/topics/04/Software Engineering/03_ContinousDevelopment.md b/Writerside/topics/04/Software Engineering/03_ContinousDevelopment.md index fb49669..09b1d33 100644 --- a/Writerside/topics/04/Software Engineering/03_ContinousDevelopment.md +++ b/Writerside/topics/04/Software Engineering/03_ContinousDevelopment.md @@ -68,7 +68,7 @@ - Vermeide lange Branches - Überprüfe regelmäßig die Main-Line -### VC - Branching GitFlow +#### VC - Branching GitFlow - ![image_845.png](image_845.png) - Development Branch (develop) - master/main für produktionsfertigen Code @@ -86,4 +86,87 @@ - direkt auf main mergen, ... ### Dependency Management -- \ No newline at end of file +- Komponenten / Module von anderen Teams innerhalb der Organisation +- 3rd Party Bibliotheken + +#### Managing Components +- größere Projekte sollten in mehrere Komponenten zerlegt werden +- ggf. auch separate Pipelines zum builden + +#### Managing External Libraries +- kommen meist in binärer Form +- am besten lokale Kopien in Versionen, welche funktionieren + - latest könnte bugs haben / die Anwendung kaputt machen + - trotzdem regelmäßig updaten! + +### Software Configurations +- sollten gemanaged und getestet werden +- erlauben der Software mehr Flexibilität +- Wann? + - Während des buildens / packaging + - schlecht, dann ist das image nicht universell einsetzbar + - Deployment / Startup / Run Time + - egal wann – sie sollten immer über den gleichen Mechanismus geschehen + - bspw. Passwörter sollten nicht gehardcoded werden + +### Environment Management +- Jede Software benötigt Hardware/Software/Infrastruktur/externe Systeme + - = Environment +- Sollte automatisiert laufen + - sollte einfacher sein einfach den kaputten wegzuwerfen und neu zu erstellen, als zu reparieren + +## CI/CD +![image_859.png](image_859.png) +- Continuous Integration + - kein Dev will immer die gesamte Anwendung testen / laufen lassen + - CI übernimmt + - automatisierte Tests + - Bugs werden früher gefunden +- Continuous Delivery + - Erweiterung von CI um Release in Staging +- Continuous Deployment + - automatisches Deployment in Produktionsumgebung + +### CI/CD Good Practices +- Wenn ein Fehler auftritt, ist es höchste Prio diesen zu fixen + - Vorher keine weiteren Änderungen pushen + - nicht nach Hause gehen, wenns nicht mehr geht + - entweder fixen oder rückgängig machen + - wer Änderungen macht ist auch verantwortlich +- Tests vorher lokal laufen lassen + - wenn welche fehlschlagen → nicht auskommentieren +- Pipeline nach dem pushen beobachten +- Pipeline stoppen lassen bei Fehlern + - fehlschlagende Tests + - langsame Tests + - hässlicher Codestyle + +## Deployment Pipeline +![image_860.png](image_860.png) + +- binarys so selten wie möglich erstellen + - dauert lange + - falls eine doppelt verwendet werden kann → doppelt nutzen + - bspw. Staging/Production +- Smoke-Testing vom Environment + - primitiv checken, ob Anwendung läuft und bspw. Startseite gewünschte Daten zeigt +- Staging-Umgebung nutzen für Acceptance Stage +- Alle Änderungen sollten durch die Pipeline gehen + - Falls irgendwas fehlschlägt → Pipeline stoppen + +### Stages +#### Commit Stage +![image_861.png](image_861.png) +- Bestandteile: + - Code kompilieren + - Tests laufen lassen (Unit, Integration) + - Binaries erstellen + - statische Codeanalyse +- Falls Commit Stage funktioniert → Release Kandidaten erstellen + +#### Acceptance Stage +![image_862.png](image_862.png) +- Bestandteile + - Service Testing + - Laufen in produktionsähnlicher Umgebung + diff --git a/Writerside/topics/04/Software Engineering/04_Operations.md b/Writerside/topics/04/Software Engineering/04_Operations.md new file mode 100644 index 0000000..114493d --- /dev/null +++ b/Writerside/topics/04/Software Engineering/04_Operations.md @@ -0,0 +1 @@ +# Operations