diff --git a/README.adoc b/README.adoc index 4ec9c23..642877a 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,4 @@ -= Template for https://isaqb.org[iSAQB] Advanced Level Curricula += iSAQB Advanced Level curriculum for CLOUDINFRA - Infrastructure, Container and Cloud Native :toc: :toc-placement!: @@ -23,6 +23,7 @@ This is <>. == Content This repository contains a template for iSAQB Advanced Level *curricula* in AsciiDoc. +This repository contains the iSAQB Advanced Level curriculum for CLOUDINFRA - Infrastructure, Container and Cloud Native in AsciiDoc. toc::[] diff --git a/docs/00b-basics/01-what-to-expect-of-this-module.adoc b/docs/00b-basics/01-what-to-expect-of-this-module.adoc index 90d518a..666e09a 100644 --- a/docs/00b-basics/01-what-to-expect-of-this-module.adoc +++ b/docs/00b-basics/01-what-to-expect-of-this-module.adoc @@ -3,9 +3,9 @@ Microservices, Container und Container-Manager haben die Art und Weise wie wir Software konzipieren, entwickeln und in Produktion bringen in den letzten Jahren stark verändert. Moderne Applikationen müssen in einem Cluster von mehreren Knoten funktionieren, dynamisch platzierbar, skalierbar und fehlertolerant sein. -Die Teilnehmer lernen hier Wege zur Realisierung dynamischer Cloud-Native-Architekturen, Container -Application Design, Logging/Monitoring/Alerting, Container Native Storage und Möglichkeiten zur UIIntegration. Ebenso werden typische Konzepte aktueller Container-Manager aufgezeigt und vermittelt, wie sich damit für größere Webanwendungen gängige Qualitätsanforderungen realisieren lassen. -Zusätzlich werden gängige Cloud-Anbieter klassifiziert, Möglichkeiten zur Automatisierung aufgezeigt, Ansätze der Softwareentwicklung und des Application Lifecycle besprochen. +Die Teilnehmenden lernen in diesem Modul Wege zur Realisierung dynamischer Cloud-Native-Architekturen, Container +Application Design, Logging/Monitoring/Alerting, Container Native Storage und Möglichkeiten zur UI-Integration. Ebenso werden typische Konzepte aktueller Container-Manager aufgezeigt und vermittelt, wie sich damit für größere Webanwendungen gängige Qualitätsanforderungen realisieren lassen. +Zusätzlich werden gängige Services verschiedener Cloud-Anbieter besprochen, Möglichkeiten zur Automatisierung aufgezeigt, Ansätze der Softwareentwicklung und des Application Lifecycle besprochen. Bei {curriculum-short} stehen betriebliche Aspekte im Vordergrund. Die im Modul FLEX detaillierten Konzepte zu Entwurf und Umsetzung von Architekturen werden, wo zum Verständnis notwendig ist, übersichtsweise erläutert. // end::DE[] @@ -16,7 +16,7 @@ Bei {curriculum-short} stehen betriebliche Aspekte im Vordergrund. Die im Modul Microservices, containers, and container managers have greatly changed the way we design, develop, and put software into production in recent years. Modern applications must operate in a cluster of multiple nodes, be dynamically placeable, scalable and fault tolerant. Participants will learn ways to implement dynamic cloud-native architectures, Container Application Design, Logging/Monitoring/Alerting, Container Native Storage and possibilities for UI integration. Likewise, typical concepts of current container managers will be shown and how they can be used to realize common quality requirements for larger web applications. -Additionally, common cloud providers will be classified, possibilities for automation will be shown, software development approaches and application lifecycle will be discussed. +Additionally, common services from various cloud providers will be discussed, possibilities for automation will be shown, software development approaches and application lifecycle will be discussed. In {curriculum-short}, the focus is on operational aspects. The concepts of design and implementation of architectures detailed in the FLEX module are explained in overview where necessary for understanding. // end::EN[] diff --git a/docs/00b-basics/02-curriculum-structure-and-chronological-breakdown.adoc b/docs/00b-basics/02-curriculum-structure-and-chronological-breakdown.adoc index 693d22a..676a9dc 100644 --- a/docs/00b-basics/02-curriculum-structure-and-chronological-breakdown.adoc +++ b/docs/00b-basics/02-curriculum-structure-and-chronological-breakdown.adoc @@ -3,16 +3,16 @@ [cols="<,>", options="header"] |=== -| Inhalt | Empfohlene Mindestdauer (Stunden) -| 1. Grundlagen moderner Infrastrukturen | 2 -| 2. Gängige Architekturkonzepte | 2 -| 3. Cloud Native Journey | 4 -| 4. Hilfreiche Muster (Pattern) | 4 -| 5. Development, CI/CD und Betrieb | 4 -| 6. Automatisierung | 2 -| 7. Case Study | 2 +| Inhalt | Empfohlene Mindestdauer (min) +| 1. Grundlagen moderner Infrastrukturen | 120 +| 2. Gängige Architekturkonzepte | 120 +| 3. Cloud Native Journey | 240 +| 4. Muster für verteilte Anwendungen und Cloud Native Architekturen | 240 +| 5. Development und CI/CD | 180 +| 6. Automatisierung und Betrieb | 180 +| 7. Case Study | 120 | | -| Summe | 20 Stunden +| Summe | 1200 (20h) |=== @@ -24,16 +24,16 @@ [cols="<,>", options="header"] |=== | Content -| Recommended minimum duration (hours) -| 1. Fundamentals of Modern Infrastructures | 2 -| 2. Common Architecture Concepts | 2 -| 3. Cloud Native Journey | 4 -| 4. Helpful Pattern | 4 -| 5. Development, CI/CD and Operation | 4 -| 6. Automation | 2 -| 7. Case Study | 2 +| Recommended minimum duration (min) +| 1. Fundamentals of Modern Infrastructures | 120 +| 2. Common Architecture Concepts | 120 +| 3. Cloud Native Journey | 240 +| 4. Patterns for Distributed Applications and Cloud Native Architectures | 240 +| 5. Development and CI/CD | 180 +| 6. Automation and Operation | 180 +| 7. Case Study | 120 | | -| Total | 20h +| Total | 1200 (20h) |=== diff --git a/docs/00b-basics/04-prerequisites-for-this-training.adoc b/docs/00b-basics/04-prerequisites-for-this-training.adoc index c4bd768..0d051c5 100644 --- a/docs/00b-basics/04-prerequisites-for-this-training.adoc +++ b/docs/00b-basics/04-prerequisites-for-this-training.adoc @@ -1,7 +1,7 @@ // tag::DE[] === Voraussetzungen -Teilnehmerinnen und Teilnehmer **sollten** folgende Kenntnisse und/oder Erfahrung mitbringen: +Teilnehmende **sollten** folgende Kenntnisse und/oder Erfahrung mitbringen: - Praktische Erfahrung in Entwurf und Entwicklung kleiner bis mittelgroßer Softwaresysteme - Erste praktische Erfahrung in Wartung oder Weiterentwicklung von Softwaresystemen diff --git a/docs/01-Fundamentals-of-Modern-Infrastructures/00-structure.adoc b/docs/01-Fundamentals-of-Modern-Infrastructures/00-structure.adoc index b4793b7..0a3c06c 100644 --- a/docs/01-Fundamentals-of-Modern-Infrastructures/00-structure.adoc +++ b/docs/01-Fundamentals-of-Modern-Infrastructures/00-structure.adoc @@ -1,4 +1,4 @@ -// header file for curriculum section 1: ERSTE LERNEINHEIT +// header file for curriculum section 1: Lerneinheit 1 // (c) iSAQB e.V. (https://isaqb.org) // ==================================================== @@ -17,4 +17,4 @@ include::01-duration-terms.adoc[{include_configuration}] include::02-learning-goals.adoc[{include_configuration}] // references (if any!) -include::references.adoc[{include_configuration}] +// include::references.adoc[{include_configuration}] diff --git a/docs/01-Fundamentals-of-Modern-Infrastructures/01-duration-terms.adoc b/docs/01-Fundamentals-of-Modern-Infrastructures/01-duration-terms.adoc index 7cb8980..450aad8 100644 --- a/docs/01-Fundamentals-of-Modern-Infrastructures/01-duration-terms.adoc +++ b/docs/01-Fundamentals-of-Modern-Infrastructures/01-duration-terms.adoc @@ -4,8 +4,7 @@ |=== === Begriffe und Konzepte - -IaaS, SaaS, PaaS, CaaS, FaaS etc. Infrastructure as Code, Umsetzung moderner Microservice-Architekturen, verteilte Anwendungen, Container, Container-Manager, Cloud-Anbieter, Bare Metal, Time-to-Market, Verfügbarkeit, Skalierung, Performance, IOPS, Decoupling Operations, Private/Public Cloud, Networking, Applikations-Orientierung. +Cloud, Cloud-Arten, Cloud-Anbieter, On Premise, Bare Metal, Cloud Service Modelle (*aaS), Vendor Lock-in, Managed Services, Cloud Native Services, Cloud-Muster, Cloud-Migrationsmuster, Multi/Hybrid Cloud, Organisatorische Aspekte der Cloud Migration, Rechtliche Rahmenbedingungen, Time-to-Market, Verfügbarkeit, Skalierung, Geo Redundanz und Skalierung, Performance, IOPS, Decoupling Operations, Networking. // end::DE[] @@ -15,8 +14,7 @@ IaaS, SaaS, PaaS, CaaS, FaaS etc. Infrastructure as Code, Umsetzung moderner Mic |=== === Terms and Principles - -IaaS, SaaS, PaaS, CaaS, FaaS etc. Infrastructure as Code, implementation of modern microservice architectures, distributed applications, containers, container managers, cloud providers, bare metal, time-to-market, availability, scaling, performance, IOPS, decoupling operations, private/public cloud, networking, application orientation. +Cloud, cloud types, cloud provider, on premise, bare metal, cloud service models (*aaS), vendor lock-in, managed services, cloud native services, cloud patterns, cloud migration patterns, multi/hybrid cloud, organizational aspects of cloud migration, legal conditions, time-to-market, availability, geo redundancy and scalability, performance, IOPS, decoupling operations, networking. // end::EN[] diff --git a/docs/01-Fundamentals-of-Modern-Infrastructures/02-learning-goals.adoc b/docs/01-Fundamentals-of-Modern-Infrastructures/02-learning-goals.adoc index dedff0b..9a2e752 100644 --- a/docs/01-Fundamentals-of-Modern-Infrastructures/02-learning-goals.adoc +++ b/docs/01-Fundamentals-of-Modern-Infrastructures/02-learning-goals.adoc @@ -2,40 +2,84 @@ // tag::DE[] [[LZ-1-1]] -==== LZ 1-1: Begriffe und Cloud Anbieter -* wissen die unterschiedlichen *aaS Begriffe, Public/Private Cloud zu unterscheiden und können bestehende Angebote klassifizieren -* kennen und verstehen die Gründe für den Betrieb in der Cloud und können die Vor- und Nachteile einschätzen -* verstehen, wie und in welchem Umfang bei gängigen Cloud-Anbietern VMs und Netzwerke eingerichtet und konfiguriert werden können -* verstehen, dass der hohe mögliche Grad von Automatisierung bei der Provisionierung/Skalierung und die Verfügbarkeit von höherwertigen Diensten Hauptgründe für die Verwendung eines Cloud-Anbieters sind -* wissen, welcher Typ von Anbieter für welchen Einsatz am besten geeignet ist und wann dennoch der Einsatz von eigener Hardware (Bare Metal) sinnvoller sein kann -* lernen, dass sowohl die Aspekte der Datensicherheit für die Entscheidung für oder gegen eine Public Cloud relevant sind, wie auch die Performanz der VMs und die maximal möglichen IOPS -* lernen, dass Moderne Architekturen und deren Anforderungen an die Verfügbarkeit die Verteilung der Applikation auf mehrere Maschinen und Rechenzentren verlangen -* lernen, wie der reduzierte Umfang von notwendigen Hosting-Kompetenzen bei der Verwendung eines Cloud-Anbieters Risiko und Kosten reduziert +==== LZ 1-1: Cloud-Arten, Cloud-Muster und Cloud Migrationsmuster verstehen und unterscheiden + +Softwarearchitekt:innen kennen die gängigen Cloud-Begriffe und können verschiedene Arten wie Public, Private, Hybrid/Multi und On-Premise voneinander unterscheiden. + +Sie verstehen Cloud-Muster und Cloud-Migrationsmuster, sowie deren Anwendung. + +Sie verstehen den Unterschied zwischen Cloud- und On-Premise-Betrieb sowie die Argumente für und gegen den Cloud-Betrieb. Sie erkennen auch, wann der Einsatz von eigener Hardware (Bare Metal) sinnvoller ist. [[LZ-1-2]] -==== LZ 1-2: Container und Container Manager -* verstehen die technischen Grundlagen und den Mehrwert von Containern und Container-Managern -* verstehen, wie die Verwendung von Containern und Container-Manager zu einer besseren Entkopplung von Verantwortlichkeiten und damit zu einer effektiveren Organisation führt -* kennen den Unterschied zwischen konventionellem Deployment und dem mit Containern +==== LZ 1-2: Entscheidungskriterien für die Nutzung von managed Services und self-managed Services verstehen + +Softwarearchitekt:innen kennen unterschiedliche Cloud Service Modelle (*aaS) und können Services anhand dieser Modelle klassifizieren. + +Sie verstehen das Shared-Responsibility-Modell und dessen Relevanz für Kosten- und Risikobewertungen bei der Nutzung von managed Cloud Services. + +Sie kennen das Konzept des Vendor Lock-in und seine Relevanz für die Entscheidungsfindung zwischen managed und self-managed Services. + +[[LZ-1-3]] +==== LZ 1-3: Compliance und organisatorische Aspekte bei der Cloud-Architektur berücksichtigen + +Softwarearchitekt:innen kennen die organisatorischen Aspekte der Cloud Migration und die rechtlichen Rahmenbedingungen für einen Betrieb von Anwendungen in der Cloud, z. b.: + +* DSGVO (GDPR) +* GoBD +* ISO 27001 +* BSI IT-Grundschutz + +Sie verstehen, dass die Aspekte der Datensicherheit für die Entscheidung für oder gegen eine Public Cloud relevant sind und dass organisatorische und/oder rechtliche Anforderungen die Wahl der verwendeten Cloud-Art beeinflussen. + +[[LZ-1-4]] +==== LZ 1-4: Verfügbarkeit, Skalierung und Performance als Anforderungsparameter beim Cloud-Architektur-Design anwenden + +Softwarearchitekt:innen kennen die Auswirkungen der Cloud auf Time-to-Market, Verfügbarkeit, Skalierung, Performance, IOPS, Decoupling Operations und Networking. + +Sie können einschätzen, wann Cloud-Anwendungen eine Verteilung über mehrere Verfügbarkeitszonen und Rechenzentren erfordern. + +Sie kennen die Leistungsanforderungen an die Infrastruktur und die Limitierungen der Public Cloud, wie z.B. IOPS für Speicher. // end::DE[] // tag::EN[] [[LG-1-1]] -==== LG 1-1: Terms and Cloud Provider -* Know how to distinguish the different *aaS terms, public/private cloud and can classify existing offerings -* know and understand the reasons for operating in the cloud and can assess the advantages and disadvantages -* understand how and to what extent VMs and networks can be set up and configured with common cloud providers -* Understand that the high level of automation possible in provisioning/scaling and the availability of higher-value services are key reasons for using a cloud provider -* Know which type of provider is best suited for which deployment, and yet when it may make more sense to use in-house hardware (bare metal) -* learn that data security aspects are relevant for the decision for or against a public cloud, as well as the performance of the VMs and the maximum possible IOPS -* learn that modern architectures and their availability requirements demand that the application be distributed across multiple machines and data centers -* learn how the reduced scope of hosting skills required when using a cloud provider reduces risk and cost +==== LG 1-1: Understand and Distinguish Cloud Types, Cloud Patterns and Cloud Migration Patterns + +Software architects know the common cloud terms and can distinguish between different types such as public, private, hybrid/multi and on-premise. + +They understand cloud patterns and cloud migration patterns, and how to apply them. + +They understand the difference between cloud and on-premise operations, as well as the arguments for and against cloud operations. They also recognize when the use of own hardware (bare metal) is more appropriate. [[LG-1-2]] -==== LG 1-2: Container and Container Manager -* Understand the technical fundamentals and added value of containers and container managers -* understand how the use of containers and container managers leads to a better decoupling of responsibilities and thus to a more effective organization -* Know the difference between conventional deployment and that with containers +==== LG 1-2: Understand Decision Criteria for the Use of Managed Services and Self-Managed Services + +Software architects know different cloud service models (*aaS) and can classify services based on these models. + +They understand the shared responsibility model and its relevance for cost and risk assessments when using managed cloud services. + +They know the concept of vendor lock-in and its relevance for decision-making between managed and self-managed services. + +[[LG-1-3]] +==== LG 1-3: Incorporate Compliance and Organizational Aspects Into Cloud Architecture + +Software architects are familiar with the organizational aspects of cloud migration and the legal framework for operating applications in the cloud, e.g: + +* DSGVO (GDPR) +* GoBD (Principles for electronical accounting and archiving) +* ISO 27001 +* IT-Grundschutz (A systematic basis for information security) + +They understand that the aspects of data security are relevant for the decision for or against a public cloud and that organizational and/or legal requirements influence the choice of the type of cloud used. + +[[LG-1-4]] +==== LG 1-4: Apply Availability, Scaling and Performance Requirements as Parameters in Cloud Architecture Design + +Software architects understand the impact of the cloud on time-to-market, availability, scaling, performance, IOPS, decoupling operations, and networking. + +They can assess when cloud applications require distribution across multiple availability zones and data centers. + +Know infrastructure performance requirements and public cloud limitations, such as IOPS for storage. // end::EN[] diff --git a/docs/02-Common-Architecture-Concepts/00-structure.adoc b/docs/02-Common-Architecture-Concepts/00-structure.adoc index 139dc6a..666073b 100644 --- a/docs/02-Common-Architecture-Concepts/00-structure.adoc +++ b/docs/02-Common-Architecture-Concepts/00-structure.adoc @@ -1,4 +1,4 @@ -// header file for curriculum section 4: Lerneinheit 2 +// header file for curriculum section 2: Lerneinheit 2 // (c) iSAQB e.V. (https://isaqb.org) // ==================================================== diff --git a/docs/02-Common-Architecture-Concepts/01-duration-terms.adoc b/docs/02-Common-Architecture-Concepts/01-duration-terms.adoc index 7eba3b7..8817673 100644 --- a/docs/02-Common-Architecture-Concepts/01-duration-terms.adoc +++ b/docs/02-Common-Architecture-Concepts/01-duration-terms.adoc @@ -4,8 +4,8 @@ |=== === Begriffe und Konzepte -Self-contained Systems, Microservices, Independent Systems Architecture, Integrationskonzepte, -CQRS, Event Sourcing. +Self-contained Systems, Microservices, Independent Systems Architecture, Integrationskonzepte, Service Discovery, +CQRS, Event Sourcing, Eventual Consistency. // end::DE[] @@ -15,8 +15,7 @@ CQRS, Event Sourcing. |=== === Terms and Principles -Self-contained Systems, Microservices, independent systems architecture, integration concepts, -CQRS, Event Sourcing. +Self-contained Systems, Microservices, independent systems architecture, integration concepts, service discovery, CQRS, Event Sourcing, Eventual Consistency. // end::EN[] diff --git a/docs/02-Common-Architecture-Concepts/02-learning-goals.adoc b/docs/02-Common-Architecture-Concepts/02-learning-goals.adoc index 8223133..36d0f1f 100644 --- a/docs/02-Common-Architecture-Concepts/02-learning-goals.adoc +++ b/docs/02-Common-Architecture-Concepts/02-learning-goals.adoc @@ -2,39 +2,59 @@ // tag::DE[] [[LZ-2-1]] -==== LZ 2-1: Modularisierung und Kommunikation -* verstehen die Ansätze moderner Architekturen (speziell Microservices, Self-contained Systems) und die Gründe, die zu diesen Lösungen führen -* verstehen die unterschiedlichen Möglichkeiten der Kommunikation bzw. des Datenaustauschs der Services untereinander, zum Beispiel: -** Event Sourcing -** Messaging Middleware -** RSS-Feeds -* kennen die Auswirkungen einer Shared-Something/Nothing-Architektur, die insbesondere durch eine Skalierung über Container entsteht +==== LZ 2-1: Situativ passende Kommunikations-Konzepte verteilter Anwendungen auswählen + +Softwarearchitekt:innen kennen Muster moderner Architekturen für verteilte Anwendungen (speziell Microservices, Self-contained Systems) und verstehen die Gründe, die zu diesen Lösungen führen. + +* Monolith +* Microsoervices +* Self Contained Systems + +Sie verstehen die unterschiedlichen Technologien entkoppelter Kommunikation und des Datenaustauschs zwischen Services, zum Beispiel: + +* Event Sourcing +* Messaging Middleware +* HTTP feeds + +Softwarearchitekt:innen kennen die Auswirkungen einer Shared-Something/Nothing-Architektur, die insbesondere durch eine Skalierung über Container entsteht. [[LZ-2-2]] -==== LZ 2-2: Modularisierung und Integration -verstehen, wie man mehrere Services über unterschiedliche Wege zu einer Applikation integrieren kann, zum Beispiel durch Integration über: +==== LZ 2-2: Situativ passende Integrationskonzepte verteilter Anwendungen auswählen + +Softwarearchitekt:innen verstehen, wie mehrere Services über unterschiedliche Wege zu einer Applikation integriert werden können, zum Beispiel durch Integration über: + +* Backend (message bus, database, etc.) +* Frontend (UI integration) -* Backend (Message-Bus, Datenbank, etc.) -* Frontend (UI-Integration) +Softwarearchitekt:innen kennen die Auswirkungen von Eventual Consistency auf die Datenintegrität und Datenkonsistenz. // end::DE[] // tag::EN[] [[LG-2-1]] -==== LG 2-1: Modularization and Communication -* understand the approaches of modern architectures (especially microservices, self-contained systems) and the reasons that lead to these solutions -* understand the different ways in which services communicate or exchange data with each other, for example: -** event sourcing -** messaging middleware -** RSS feeds -* understand the implications of a shared-something/nothing architecture, particularly as a result of scaling via containers +==== LG 2-1: Understand Modularization and Communication Options + +Software architects are familiar with patterns of modern architectures for distributed applications (especially microservices, self-contained systems) and understand the reasons that lead to these solutions. + +* Monolith +* Microsoervices +* Self Contained Systems + +They understand the different possibilities of decoupled communication and data exchange between services, for example: + +* Event Sourcing +* Messaging Middleware +* HTTP feeds + +Software architects understand the implications of a shared-something/nothing architecture, particularly as a result of scaling via containers. [[LG-2-2]] -==== LG 2-2: Modularization and Integration -Understand how to integrate multiple services into one application using different paths, for example, integration via: +==== LG 2-2: Understand Modularization and Integration Options -* backend (message bus, database, etc.) -* front-end (UI integration) -// end::EN[] +Software architects understand how multiple services can be integrated into an application through different approaches, such as integration via: +* Backend (message bus, database, etc.) +* Frontend (UI integration) +Software architects understand the impact of eventual consistency on data integrity and consistency. +// end::EN[] diff --git a/docs/02-Common-Architecture-Concepts/references.adoc b/docs/02-Common-Architecture-Concepts/references.adoc index 410f319..e54be8f 100644 --- a/docs/02-Common-Architecture-Concepts/references.adoc +++ b/docs/02-Common-Architecture-Concepts/references.adoc @@ -1,3 +1,3 @@ === {references} - +<>,<>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <>, <> diff --git a/docs/03-Cloud-Native-Journey/01-duration-terms.adoc b/docs/03-Cloud-Native-Journey/01-duration-terms.adoc index 4cf23f9..dac24cc 100644 --- a/docs/03-Cloud-Native-Journey/01-duration-terms.adoc +++ b/docs/03-Cloud-Native-Journey/01-duration-terms.adoc @@ -4,9 +4,7 @@ |=== === Begriffe und Konzepte -"Applications adopting the principles of Microservices, packaged and delivered as Containers, orchestrated by Platforms, running on top of Cloud infrastructure". - -NFRs to the Platform, Cloud Native Storage, Overlay Networking, Network Policies, Container Security, Container Linux. +Qualitätsanforderungen an die Plattform, Cloud Native Storage, Backup & Restore, Overlay Networking, Network Policies, Container Security, Container Linux. // end::DE[] @@ -17,9 +15,7 @@ NFRs to the Platform, Cloud Native Storage, Overlay Networking, Network Policies |=== === Terms and Principles -"Applications adopting the principles of Microservices, packaged and delivered as Containers, orchestrated by Platforms, running on top of Cloud infrastructure". - -NFRs to the Platform, Cloud Native Storage, Overlay Networking, Network Policies, Container Security, Container Linux. +Platform quality requirements, Cloud Native Storage, Backup & Restore, Overlay Networking, Network Policies, Container Security, Container Linux. // end::EN[] diff --git a/docs/03-Cloud-Native-Journey/02-learning-goals.adoc b/docs/03-Cloud-Native-Journey/02-learning-goals.adoc index 7c97608..5320a52 100644 --- a/docs/03-Cloud-Native-Journey/02-learning-goals.adoc +++ b/docs/03-Cloud-Native-Journey/02-learning-goals.adoc @@ -2,90 +2,114 @@ // tag::DE[] [[LZ-3-1]] -==== LZ 3-1: Cloud Native Konzept -verstehen die Vorteile des Cloud Native Konzepts, insbesondere durch einheitliche...: +==== LZ 3-1: Nutzen und Ziele des Cloud Native Konzepts verstehen -* Schnittstellen zur Administration und Konfiguration +Softwarearchitekt:innen verstehen den Nutzen und die Ziele des Cloud Native Konzepts. Sie kennen die Vorteile des Konzepts insbesondere durch: + +* Einheitliche Schnittstellen zur Administration und Konfiguration * Ressourcen-Abstraktion * Lieferartefakte -* Isolation der Applikation u. a. bezüglich des Hostsystems +* Isolation der Applikation vom Hostsystem [[LZ-3-2]] -==== LZ 3-2: Container Manager -* verstehen die Abstraktionskonzepte aktueller Container-Manager und kennen Pattern und Best Practices, wie die Erfüllung nichtfunktionaler Anforderungen (NFR) auf sie übertragen werden kann. Zum Beispiel: -** Finite Workloads wie (Cron-) Jobs -** Health Check und Self Healing -** Skalierung und Load Balancing -** Placement -* kennen die Prinzipien eines Overlay-Networks (VLAN) für Container und Container-Manager und verstehen, wie man verschiedene Services oder Systeme isolieren kann. Z. B. Realisierung einer verteilten Firewall zur Isolation von: -** verschiedenen Mandanten -** Testsystemen im Rahmen einer CI/CD +==== LZ 3-2: Grundlegende Container Konzepte verstehen -[[LZ-3-3]] -==== LZ 3-3: Container -verstehen die Linux-Kernel-Isolationsmechanismen, die bei Containern Anwendung finden (Container Security), u. a.: +Softwarearchitekt:innen verstehen die technischen Grundlagen und den Mehrwert von Containern und kennen den Unterschied zwischen konventionellem Deployment und dem mit Containern. + +Sie verstehen, wie die Verwendung von Containern zu einer besseren Entkopplung von Verantwortlichkeiten und damit zu einer effektiveren Organisation führt. +Softwarearchitekt:innen verstehen Linux-Kernel-Isolationsmechanismen, die bei Containern Anwendung finden (Container Security), u. a.: + +* Namespaces und cgroups * Capabilities -* Privilegierte Container -* AppArmor + +Sie kennen außerdem die Auswirkungen, Nutzungszenarien und Gefahren privilegierter Container. + +[[LZ-3-3]] +==== LZ 3-3: Abstraktionskonzepte von Container-Managern verstehen + +Softwarearchitekt:innen verstehen die Abstraktionskonzepte aktueller Container-Manager und kennen bewährte Muster und Praktiken, wie die Erfüllung von Qualitätsanforderungen auf sie übertragen werden kann. Zum Beispiel: + +* Finite Workloads wie (Cron-) Jobs +* Health Check und Self Healing +* Skalierung und Load Balancing +* Placement + +Softwarearchitekt:innen kennen die Prinzipien eines Overlay-Networks (VLAN) für Container und Container-Manager und verstehen, wie verschiedene Services oder Systeme isoliert werden. Sie kennen Anforderungszenarien wie z. B. die Realisierung einer verteilten Firewall zur Isolation von: + +* Mehreren Mandanten +* Testsystemen im Rahmen von CI/CD [[LZ-3-4]] -==== LZ 3-4: Container Linux -verstehen, wie aktuelle Core/Container-Linux-Distributionen auf den Betrieb von Containern optimiert sind, welche Vorteile sie bieten (u. a. bzgl. Kernel- und Distributionsupdates) und welche Folgen das für die betriebenen Applikationen hat +==== LZ 3-4: Vorteile spezialisierter Linux-Distributionen für den Betrieb von Containern verstehen + +Softwarearchitekt:innen verstehen, wie aktuelle Core/Container-Linux-Distributionen auf den Betrieb von Containern optimiert sind, welche Vorteile sie bieten (u. a. bzgl. Kernel- und Distributionsupdates) und welche Folgen das für die betriebenen Applikationen hat. [[LZ-3-5]] -==== LZ 3-5: Persistenz -verstehen die verschiedenen Wege um Daten zu persistieren: - -* verstehen den Unterschied von Object- und Block-Storage -* können die verschiedenen Storage-Dienste der Cloud-Anbieter, unterschiedliche COTS-Produkte und selbstverwaltete Lösungen für unterschiedliche Einsatzszenarien klassifizieren -* verstehen die Vor- und Nachteile einer Cloud-Native-Storage-Lösung -* verstehen die höherwertigen Managed Services (wie etwa RDBMS) der CloudAnbieter mit der Verwendung selbstverwalteter Lösungen zu vergleichen -* kennen verschiedene Konzepte, um Backup und Restore zu realisieren +==== LZ 3-5: Persistenzlösungen in Cloud-Umgebungen bewerten und auswählen + +Softwarearchitekt:innen kennen verschiedene Wege, um Daten zu persistieren. + +Sie kennen den Unterschied von Object- und Block-Storage und können verschiedene Storage-Dienste der Cloud-Anbieter, unterschiedliche COTS-Produkte und selbstverwaltete Lösungen für unterschiedliche Einsatzszenarien klassifizieren. + +Softwarearchitekt:innen verstehen die Vor- und Nachteile einer Cloud-Native-Storage-Lösung und können die höherwertigen Managed Services (wie etwa RDBMS) der Cloud-Anbieter mit der Verwendung selbstverwalteter Lösungen vergleichen. + +Sie kennen verschiedene Konzepte, um Backup und Restore von persistenten Daten in der Cloud zu realisieren. // end::DE[] // tag::EN[] [[LG-3-1]] -==== LG 3-1: Cloud Native Concept -Understand the benefits of the Cloud Native concept, particularly through unified...: +==== LG 3-1: Understand the Cloud Native Concept + +Software architects understand the benefits and goals of the Cloud Native concept. They are familiar with the advantages of the concept, particularly through: -* Interfaces for administration and configuration +* Unified interfaces for administration and configuration * Resource abstraction * Delivery artifacts -* Isolation of the application, with respects to the host, etc. [[LG-3-2]] -==== LG 3-2: Container Manager -* Understand the abstraction concepts of current container managers and know patterns and best practices for how to apply non-functional requirements (NFR) fulfillment to them. For example: -** Finite workloads such as (cron) jobs -** Health Check and Self Healing -** Scaling and Load Balancing -** Placement -* Know the principles of an overlay network (VLAN) for containers and container managers and understand how to isolate different services or systems. E.g., implement a distributed firewall to isolate: -** different clients -** test systems in the context of a CI/CD +==== LG 3-2: Understand Basic Container Concepts -[[LG-3-3]] -==== LG 3-3: Container -Understand the Linux kernel isolation mechanisms that apply to containers (container security), including: +Software architects understand the technical basics and the added value of containers and know the difference between conventional deployment and deployment with containers. + +They understand how the use of containers leads to a better decoupling of responsibilities and thus to a more effective organization. +Software architects understand Linux kernel isolation mechanisms that apply to containers (container security), including: + +* Namespaces and cgroups * Capabilities -* Privileged Containers -* AppArmor + +They also understand the implications, usage scenarios, and threats of privileged containers. + +[[LG-3-3]] +==== LG 3-3: Understand Container Manager Abstraction Concepts + +Software architects understand the abstraction concepts of current container managers and know best patterns and practices on how to apply quality requirements to them. For example: + +* Finite workloads such as (cron) jobs. +* Health Check and Self Healing +* Scaling and load balancing +* Placement + +Software architects know the principles of an overlay network (VLAN) for containers and container managers and understand how different services or systems are isolated. They are familiar with requirement scenarios such as implementing a distributed firewall for isolating: + +* Multiple tenants +* Test systems in the context of CI/CD [[LG-3-4]] -==== LG 3-4: Container Linux -understand how current core/container Linux distributions are optimized for running containers, what advantages they offer (including kernel and distribution updates), and what the consequences are for the applications they run. +==== LG 3-4: Understand the Benefits of Specialized Linux Distributions for Operating Containers + +Software architects understand how current core/container Linux distributions are optimized for operating containers, the benefits they offer (including kernel and distribution updates), and the implications for the applications being run. [[LG-3-5]] -==== LG 3-5: Persistence -understand the different ways to persist data: - -* understand the difference between object and block storage -* can classify the different cloud vendor storage services, different COTS products, and self-managed solutions for different deployment scenarios -* understand the advantages and disadvantages of a cloud-native storage solution -* understand the higher-end managed services (such as RDBMS) offered by cloud providers versus using self-managed solutions -* know different concepts to implement backup and restore -// end::EN[] +==== LG 3-5: Evaluate and Select Persistence Solutions in Cloud Environments +Software architects are familiar with the different ways to persist data. +They understand the difference between object and block storage and can classify the different storage services provided by cloud providers, various COTS products, and self-managed solutions for different use cases. + +Software architects understand the advantages and disadvantages of a cloud-native storage solution and can compare higher-level managed services (such as RDBMS) provided by cloud providers with the use of self-managed solutions. + +They are familiar with various concepts for backing up and restoring persistent data in the cloud. + +// end::EN[] diff --git a/docs/03-Cloud-Native-Journey/references.adoc b/docs/03-Cloud-Native-Journey/references.adoc index 972bab5..3711852 100644 --- a/docs/03-Cloud-Native-Journey/references.adoc +++ b/docs/03-Cloud-Native-Journey/references.adoc @@ -1,4 +1,3 @@ === {references} - - +<>, <>, <> diff --git a/docs/04-Helpful-Patterns/01-duration-terms.adoc b/docs/04-Helpful-Patterns/01-duration-terms.adoc deleted file mode 100644 index 35fa189..0000000 --- a/docs/04-Helpful-Patterns/01-duration-terms.adoc +++ /dev/null @@ -1,23 +0,0 @@ -// tag::DE[] -|=== -| Dauer: 240 Min. | Übungszeit: 20 Min. -|=== - -=== Begriffe und Konzepte -Resilience Pattern, Container Application Design, Container Pattern, Service Mesh - - -// end::DE[] - -// tag::EN[] -|=== -| Duration: 240 min | Practice time: 20 min -|=== - -=== Terms and Principles -Resilience Pattern, Container Application Design, Container Pattern, Service Mesh -// end::EN[] - - - - diff --git a/docs/04-Helpful-Patterns/02-learning-goals.adoc b/docs/04-Helpful-Patterns/02-learning-goals.adoc deleted file mode 100644 index 2ec48e4..0000000 --- a/docs/04-Helpful-Patterns/02-learning-goals.adoc +++ /dev/null @@ -1,52 +0,0 @@ -=== {learning-goals} - -// tag::DE[] -[[LZ-4-1]] -==== LZ 4-1: Container Application Design -* kennen die Konzepte des Container Application Designs (Container Pattern), um... -** Software-Komponenten moderner Architekturen in Container modularisieren zu können. Zum Beispiel: -*** Ambassador/Adapter/Sidekick -*** Scatter & Gather -*** Work Queue -** technische von fachlichen Aufgaben durch getrennte Container zu realisieren -** bei Verwendung eines Container-Managers übliche Aufgaben zu realisieren, insbesondere: -*** Konfiguration und Initialisierung der Applikation -*** Adaptierte Skalierung über Custom Metrics -*** Managed Container durch Operator bzw. Controller - -[[LZ-4-2]] -==== LZ 4-2: Resilience -* verstehen, dass bei einer verteilten Anwendung die Kommunikation von außen und zwischen den Services fehlertolerant realisiert werden muss -** verstehen durch welche Pattern die notwendige Fehlertoleranz auf der Kommunikationsebene sichergestellt werden kann -** verstehen wie man gängige Service-Mesh-Konzepte verwenden kann, um Resilience Patterns vom fachlichen Code zu trennen und warum ein Service Mesh für moderne Webanwendungen sinnvoll ist. Besprochene Pattern sind u. a.: -*** Circuit Breaker -*** Conditional Rate Limits -*** Traffic Shifting - -// end::DE[] - -// tag::EN[] -[[LG-4-1]] -==== LG 4-1: Container Application Design -* know the concepts of container application design (container pattern) in order... -** to be able to modularize software components of modern architectures into containers. For example: -*** Ambassador/Adapter/Sidekick -*** Scatter & Gather -*** Work Queue -** to realize technical and business tasks through separate containers -** to realize common tasks when using a container manager, in particular: -*** Configuration and initialization of the application -*** adapted scaling via custom metrics -*** Managed container by Operator or Controller - -[[LG-4-2]] -==== LG 4-2: Resilience -* Understand that with a distributed application, communication from the outside and between services must be implemented in a fault-tolerant manner -** Understand which patterns can be used to ensure the necessary fault tolerance at communication level -** understand how to use common service mesh concepts to separate resilience patterns from business code and why a service mesh makes sense for modern web applications. Patterns discussed include: -*** Circuit Breaker -*** Conditional Rate Limits -*** Traffic Shifting -// end::EN[] - - diff --git a/docs/05-Development-CICD-and-Operation/00-structure.adoc b/docs/04-Patterns/00-structure.adoc similarity index 63% rename from docs/05-Development-CICD-and-Operation/00-structure.adoc rename to docs/04-Patterns/00-structure.adoc index 0efbdb2..8a61126 100644 --- a/docs/05-Development-CICD-and-Operation/00-structure.adoc +++ b/docs/04-Patterns/00-structure.adoc @@ -1,13 +1,13 @@ -// header file for curriculum section 5: Lerneinheit 5 +// header file for curriculum section 4: Lerneinheit 4 // (c) iSAQB e.V. (https://isaqb.org) // ==================================================== // tag::DE[] -== Development, CI/CD und Betrieb +== Muster für verteilte Anwendungen und Cloud Native Architekturen // end::DE[] // tag::EN[] -== Development, CI/CD and Operation +== Patterns for Distributed Applications and Cloud Native Architectures // end::EN[] include::01-duration-terms.adoc[{include_configuration}] diff --git a/docs/04-Patterns/01-duration-terms.adoc b/docs/04-Patterns/01-duration-terms.adoc new file mode 100644 index 0000000..a13d49e --- /dev/null +++ b/docs/04-Patterns/01-duration-terms.adoc @@ -0,0 +1,23 @@ +// tag::DE[] +|=== +| Dauer: 240 Min. | Übungszeit: 20 Min. +|=== + +=== Begriffe und Konzepte +Resilienz Muster, Container Application Design, Cloud Native Architekturen, Container Pattern, Service Mesh + +// end::DE[] + +// tag::EN[] +|=== +| Duration: 240 min | Practice time: 20 min +|=== + +=== Terms and Principles +Resilience Patterns, Container Application Design, Cloud Native Architectures, Container Patterns, Service Mesh + +// end::EN[] + + + + diff --git a/docs/04-Patterns/02-learning-goals.adoc b/docs/04-Patterns/02-learning-goals.adoc new file mode 100644 index 0000000..18eb22c --- /dev/null +++ b/docs/04-Patterns/02-learning-goals.adoc @@ -0,0 +1,71 @@ +=== {learning-goals} + +// tag::DE[] +[[LZ-4-1]] +==== LZ 4-1: Verschiedene Muster für die Modularisierung von Cloud-Native Architekturen kennen + +Softwarearchitekt:innen kennen die Konzepte des Container Application Designs (Container Pattern), um Softwarekomponenten in Container modularisieren zu können und Cloud-native Architekturen zu realisieren. + +Sie kennen verschiedene Container Application Design Muster, wie zum Beispiel: + +* Ambassador/Adapter/Sidecar +* Scatter & Gather +* Work Queue + +Softwarearchitekt:innen kennen Methoden, um technische von fachlichen Aufgaben durch getrennte Container zu realisieren und verstehen, wie Container-Manager über dieses Prinzip technische Aufgaben übernehmen, insbesondere: + +* Konfiguration und Initialisierung von Anwendungen +* Adaptive Skalierung über Custom Metrics +* Container Management durch Operator bzw. Controller + +[[LZ-4-2]] +==== LZ 4-2: Passende Resilienzmuster zur Erhöhung von Fehlertoleranz auswählen + +Softwarearchitekt:innen verstehen, wie bei einer verteilten Anwendung die Kommunikation zwischen den Services fehlertolerant realisiert werden kann. + +Sie verstehen, durch welche Muster Fehlertoleranz auf der Kommunikationsebene erhöht werden kann und wie gängige Service-Mesh-Konzepte verwendet werden können, um die Implementation von Resilienzmustern vom fachlichen Code zu trennen. + +Softwarearchitekt:innen kennen u. a. folgende Resilienzmuster: + +* Circuit Breaker +* Conditional Rate Limits +* Traffic Shifting + +Sie kennen das Konzept von Chaos Engineering und dessen Methoden, die Systemresilienz durch gezieltes Einbringen von Störungen zu testen. + +// end::DE[] + +// tag::EN[] +[[LG-4-1]] +==== LG 4-1: Know Different Patterns for Modularizing Cloud-Native Architectures + +Software architects are familiar with the concepts of container application design (container pattern) to modularize software components into containers and implement cloud-native architectures. + +They are aware of various container application design patterns, such as: + +* Ambassador/Adapter/Sidecar +* Scatter & Gather +* Work Queue + +Software architects are familiar with methods for separating technical and business tasks through separate containers and understand how container managers handle technical tasks through this principle, particularly: + +* Configuration and initialization of applications +* Adaptive scaling using custom metrics +* Container management through operators or controllers + +[[LG-4-2]] +==== LG 4-2: Ability to Select Appropriate Resilience Patterns to Increase Fault Tolerance + +Software architects understand how communication between services in a distributed application can be made fault-tolerant. + +They understand which patterns can increase fault tolerance at the communication level and how common service mesh concepts can be used to separate the implementation of resilience patterns from the business code. + +Software architects are familiar with the following resilience patterns, among others: + +* Circuit Breaker +* Conditional Rate Limits +* Traffic Shifting + +They are familiar with the concept of chaos engineering and its methods to test system resilience by deliberately introducing disruptions. + +// end::EN[] diff --git a/docs/04-Patterns/references.adoc b/docs/04-Patterns/references.adoc new file mode 100644 index 0000000..3711852 --- /dev/null +++ b/docs/04-Patterns/references.adoc @@ -0,0 +1,3 @@ +=== {references} + +<>, <>, <> diff --git a/docs/05-Development-CICD-and-Operation/01-duration-terms.adoc b/docs/05-Development-CICD-and-Operation/01-duration-terms.adoc deleted file mode 100644 index 65ae61d..0000000 --- a/docs/05-Development-CICD-and-Operation/01-duration-terms.adoc +++ /dev/null @@ -1,23 +0,0 @@ -// tag::DE[] -|=== -| Dauer: 240 Min. | Übungszeit: 20 Min. -|=== - -=== Begriffe und Konzepte -Development Environment, Application Lifecycle Management, Canary Releases, Blue Green Deployment, Backup und Restore, Logging, Monitoring, Alerting, Distributed Tracing - -// end::DE[] - -// tag::EN[] -|=== -| Duration: 240 min | Practice time: 20 min -|=== - -=== Terms and Principles -Development Environment, Application Lifecycle Management, Canary Releases, Blue Green Deployment, Backup und Restore, Logging, Monitoring, Alerting, Distributed Tracing - -// end::EN[] - - - - diff --git a/docs/05-Development-CICD-and-Operation/02-learning-goals.adoc b/docs/05-Development-CICD-and-Operation/02-learning-goals.adoc deleted file mode 100644 index 4d18b41..0000000 --- a/docs/05-Development-CICD-and-Operation/02-learning-goals.adoc +++ /dev/null @@ -1,65 +0,0 @@ -=== {learning-goals} - - -// tag::DE[] -[[LZ-5-1]] -==== LZ 5-1: Projekte in oder mit der Cloud -* kennen verschiedene Vorgehensweisen, um Projekte in oder mit der Cloud zu durchzuführen. Zum Beispiel: -** Organisatorische Best Practices -** Development- und CI/CD-Umgebungen -* kennen Möglichkeiten, um in einer Cloud-Umgebung mit Container-Managern Deployments und ein Application Lifecycle Management zu realisieren, insbesondere: -** Versionierung von Containern und Deployment-Spezifikationen etc. -** Canary Releases und Blue Green Deployment -* lernen Komponenten und Vorgehensmodelle kennen, um einen schnellen Test- und Deployment-Prozess zu realisieren. Insbesondere Konzepte zum Dev/Test/Prod Cluster wie: -** Verantwortlichkeiten und Zugriffskontrolle -** Best Practices zur Komponentengruppierung -** Tests und Testbarkeit - -[[LZ-5-2]] -==== LZ 5-2: Beobachtbarkeit -* lernen, wie die für eine verteilte Anwendung essentielle Beobachtbarkeit sichergestellt werden kann -** Logging -** Monitoring/Metriken und Alerting -** Distributed Tracing -* lernen Wege und Verantwortlichkeiten zur Erstellung möglichst fehlervorhersagenden Time Series Queries für Alerts kennen - -[[LZ-5-3]] -==== LZ 5-3: Berechnungen -können u. a. folgende Berechnungen überschlägig durchführen: - -* Verfügbarkeit -* Größe eines Clusters -// end::DE[] - -// tag::EN[] -[[LG-5-1]] -==== LG 5-1: Projects in or with the cloud -* Know different approaches to execute projects in or with the cloud. For example: -** Organizational best practices -** Development and CI/CD environments -* Know ways to implement deployments and application lifecycle management in a cloud environment with container managers, specifically: -** Container versioning and deployment specifications, etc. -** Canary Releases and Blue Green Deployment -* get to know components and procedure models to realize a fast test and deployment process. In particular, concepts related to the Dev/Test/Prod cluster such as: -** responsibilities and access control -** Best practices for component clustering -** Tests and testability - -[[LG-5-2]] -==== LG 5-2: Observability -* learn how to ensure observability, which is essential for a distributed application -** logging -** Monitoring/metrics and alerting -** Distributed Tracing -* learn ways and responsibilities to create time series queries for alerts that are as predictive of errors as possible. - -[[LG-5-3]] -==== LG 5-3: Calculations -can perform the following calculations, among others, on a approximate basis: - -* Availability -* Size of a cluster - -// end::EN[] - - diff --git a/docs/05-Development-CICD-and-Operation/references.adoc b/docs/05-Development-CICD-and-Operation/references.adoc deleted file mode 100644 index 972bab5..0000000 --- a/docs/05-Development-CICD-and-Operation/references.adoc +++ /dev/null @@ -1,4 +0,0 @@ -=== {references} - - - diff --git a/docs/06-Automation/00-structure.adoc b/docs/05-Development-and-CICD/00-structure.adoc similarity index 88% rename from docs/06-Automation/00-structure.adoc rename to docs/05-Development-and-CICD/00-structure.adoc index 1636e36..c1af0bc 100644 --- a/docs/06-Automation/00-structure.adoc +++ b/docs/05-Development-and-CICD/00-structure.adoc @@ -3,11 +3,11 @@ // ==================================================== // tag::DE[] -== Automatisierung +== Development und CI/CD // end::DE[] // tag::EN[] -== Automation +== Development and CI/CD // end::EN[] include::01-duration-terms.adoc[{include_configuration}] diff --git a/docs/05-Development-and-CICD/01-duration-terms.adoc b/docs/05-Development-and-CICD/01-duration-terms.adoc new file mode 100644 index 0000000..fb684a7 --- /dev/null +++ b/docs/05-Development-and-CICD/01-duration-terms.adoc @@ -0,0 +1,21 @@ +// tag::DE[] +|=== +| Dauer: 180 Min. | Übungszeit: 20 Min. +|=== + +=== Begriffe und Konzepte +Development Environment, CI/CD Environment, Mean Time To Recovery (MTTR), Application Lifecycle Management, Formen von Deployments wie Rolling-, Canary- und Blue/Green Deployment, Cluster Design, Logging, Monitoring, Metriken, Distributed Tracing, Time Series Queries, Alerting +// end::DE[] + +// tag::EN[] +|=== +| Duration: 180 min | Practice time: 20 min +|=== + +=== Terms and Principles +Development environment, CI/CD environment, Mean Time To Recovery (MTTR), application lifecycle management, forms of deployments like Rolling-, Canary- and Blue/Green deployment, cluster design, logging, monitoring, metrics, distributed tracing, time series queries, alerting +// end::EN[] + + + + diff --git a/docs/05-Development-and-CICD/02-learning-goals.adoc b/docs/05-Development-and-CICD/02-learning-goals.adoc new file mode 100644 index 0000000..2576f70 --- /dev/null +++ b/docs/05-Development-and-CICD/02-learning-goals.adoc @@ -0,0 +1,78 @@ +=== {learning-goals} + + +// tag::DE[] +[[LZ-5-1]] +==== LZ 5-1: Projekte in Cloud-Umgebungen umsetzen + +Softwarearchitekt:innen wissen, dass es bei der Arbeit in Cloud-Umgebungen neue Anforderungen an den Softwareentwicklungsprozess gibt. + +Sie kennen verschiedene Vorgehensweisen, um Projekte in Cloud-Umgebungen durchzuführen. Zum Beispiel: + +* Organisatorische Good Practices +* Development- und CI/CD-Umgebungen + +Sie kennen Möglichkeiten, um in einer Cloud-Umgebung Deployments und ein Application Lifecycle Management zu realisieren, insbesondere: + +* Versionierung von Containern und Deployment-Spezifikationen etc. +* Etablierte Formen der Bereitstellung von Anwendungen, wie z. B.: +** Rolling Deployment +** Canary Deployment +** Blue/Green Deployment + +Sie kennen Komponenten und Vorgehensmodelle, um einen schnellen Test- und Deployment-Prozess zu realisieren. Insbesondere Konzepte zum Dev/Test/Prod Cluster wie: + +* Verantwortlichkeiten und Zugriffskontrolle +* Good Practices zur Komponentengruppierung + +[[LZ-5-2]] +==== LZ 5-2: Wege der Beobachtbarkeit von verteilten Applikationen kennen + +Softwarearchitekt:innen wissen, dass es durch die verteilte Ausführung von Prozessen neue Herausforderungen an die Beobachtbarkeit verteilter Applikationen gibt. + +Sie kennen die besonderen Rahmenbedingungen verteilter Anwendung und den Einfluss auf die Beobachtbarkeit mittels: + +* Logging +* Monitoring/Metriken und Alerting +* Distributed Tracing + +Sie kennen Wege und Verantwortlichkeiten zur Erstellung möglichst fehlervorhersagenden Time Series Queries für Alerts. +// end::DE[] + +// tag::EN[] +[[LG-5-1]] +==== LG 5-1: Implementing Projects in Cloud Environments + +Software architects are aware that working in cloud environments brings new requirements to the software development process. + +They are familiar with different approaches to implementing projects in cloud environments, such as: + +* Organizational good practices +* Development and CI/CD environments + +They understand the possibilities of implementing deployments and application lifecycle management in a cloud environment, particularly: + +* Versioning of containers and deployment specifications, etc. +* Established forms of application deployment, such as: +** Rolling deployment +** Canary deployment +** Blue/green deployment + +They are familiar with components and models for achieving a fast testing and deployment process, particularly concepts related to dev/test/prod clusters, such as: + +* Responsibilities and access control +* Good practices for component grouping + +[[LG-5-2]] +==== LG 5-2: Understanding approaches for observability of distributed applications + +Software architects know that the distributed execution of processes presents new challenges for observability of distributed applications. + +They understand the unique conditions of distributed applications and their impact on observability through: + +* Logging +* Monitoring/metrics and alerting +* Distributed tracing + +They are familiar with approaches and responsibilities for creating predictive time series queries for alerts. +// end::EN[] diff --git a/docs/05-Development-and-CICD/references.adoc b/docs/05-Development-and-CICD/references.adoc new file mode 100644 index 0000000..8a8d5b7 --- /dev/null +++ b/docs/05-Development-and-CICD/references.adoc @@ -0,0 +1,3 @@ +=== {references} + +<>, <>, <> diff --git a/docs/04-Helpful-Patterns/00-structure.adoc b/docs/06-Automation-and-Operation/00-structure.adoc similarity index 74% rename from docs/04-Helpful-Patterns/00-structure.adoc rename to docs/06-Automation-and-Operation/00-structure.adoc index 25b4e95..8cb6e75 100644 --- a/docs/04-Helpful-Patterns/00-structure.adoc +++ b/docs/06-Automation-and-Operation/00-structure.adoc @@ -1,13 +1,13 @@ -// header file for curriculum section 4: Lerneinheit 4 +// header file for curriculum section 6: Lerneinheit 6 // (c) iSAQB e.V. (https://isaqb.org) // ==================================================== // tag::DE[] -== Hilfreiche Patterns +== Automatisierung und Betrieb // end::DE[] // tag::EN[] -== Helpful Patterns +== Automation and Operation // end::EN[] include::01-duration-terms.adoc[{include_configuration}] diff --git a/docs/06-Automation-and-Operation/01-duration-terms.adoc b/docs/06-Automation-and-Operation/01-duration-terms.adoc new file mode 100644 index 0000000..ce19524 --- /dev/null +++ b/docs/06-Automation-and-Operation/01-duration-terms.adoc @@ -0,0 +1,21 @@ +// tag::DE[] +|=== +| Dauer: 180 Min. | Übungszeit: 20 Min. +|=== + +=== Begriffe und Konzepte +DevOps, DevSecOps, Site Reliability Engineering (SRE), Konfiguration, Provisionierung, Infrastructure as Code, Cloud Provider APIs, Abstraktionsebenen von Container-Managern, Berechnung Verfügbarkeit, Berechnung Cluster Größe +// end::DE[] + +// tag::EN[] +|=== +| Duration: 180 min | Practice time: 20 min +|=== + +=== Terms and Principles +DevOps, DevSecOps, Site Reliability Engineering (SRE), configuration, provisioning, Infrastructure as Code, Cloud Provider APIs, abstraction levels of container manager, calculate availability, calculate cluster size +// end::EN[] + + + + diff --git a/docs/06-Automation-and-Operation/02-learning-goals.adoc b/docs/06-Automation-and-Operation/02-learning-goals.adoc new file mode 100644 index 0000000..b464188 --- /dev/null +++ b/docs/06-Automation-and-Operation/02-learning-goals.adoc @@ -0,0 +1,87 @@ +=== {learning-goals} + + +// tag::DE[] +[[LZ-6-1]] +==== LZ 6-1: Neue Rollen und deren Aufgaben kennen und unterscheiden + +Softwarearchitekt:innen kennen die neuen Rollen, die im Kontext des Betriebs von Applikationen in der Cloud populär geworden sind, wie DevOps, DevSecOps und SRE. + +Sie verstehen die Herausforderungen der Adaption dieser neuen Rollen in klassischen Organisationsstrukturen. + +[[LZ-6-2]] +==== LZ 6-2: Wege zur Schaffung von skalierbaren und hochzuverlässigen Systeme verstehen + +Softwarearchitekt:innen verstehen die Möglichkeiten zur Schaffung skalierbarer und hochzuverlässiger Systeme. + +Sie kennen die Definition, Methoden und die Herausforderungen des Site Reliability Engineerings. + +[[LZ-6-3]] +==== LZ 6-3: Automatisierungskonzepte zum vorhersehbaren Erzeugen, Verändern und Verbessern der Infrastruktur verstehen + +Softwarearchitekt:innen verstehen, dass Automatisierung durch Infrastructure as Code eine Schlüsselmethode modernen Betriebs und eine Komponente des Continuous Delivery ist. + +Sie kennen die Möglichkeiten der Automatisierung und verstehen, wie dies mit Werkzeuge zur automatisierten Bereitstellung von Cloud Infrastruktur über die APIs unterschiedlicher Cloud-Anbieter realisiert werden kann. + +Sie kennen den Unterschied zwischen Infrastrukturkonfiguration und -Provisionierung, sowie etablierte Vorgehensweisen der Infrastruktur-Verwaltung. + + +[[LZ-6-4]] +==== LZ 6-4: Verschiedene Abstraktionsebenen von Container-Managern unterscheiden und verstehen + +Softwarearchitekt:innen wissen, dass sich durch Container-Manager die Grundfunktionalität der Container-Orchestrierungswerkzeuge erweitern lassen. + +Sie kennen die Einsatzmöglichkeiten vom Container-Managern und können ihre Abstraktionsebenen unterscheiden. + +[[LZ-6-5]] +==== LZ 6-5: Berechnungsmethoden zur Dimensionierung von Ressourcen kennen + +Softwarearchitekt:innen kennen Methoden zur Berechnung des Ressourcenbedarfs für: + +* Verfügbarkeit +* Größe eines Clusters + +// end::DE[] + +// tag::EN[] +[[LG-6-1]] +==== LG 6-1: Understand and Differentiate New Roles and Their Responsibilities + +Software architects are familiar with the new roles that have become popular in the context of operating applications in the cloud, such as DevOps, DevSecOps, and SRE. + +They understand the challenges of adapting these new roles in traditional organizational structures. + + +[[LG-6-2]] +==== LG 6-2: Understand Ways to Create Scalable and Highly Reliable Systems + +Software architects understand the possibilities for creating scalable and highly reliable systems. + +They are familiar with the definition, methods, and challenges of Site Reliability Engineering. + +[[LG-6-3]] +==== LG 6-3: Understand Automation Concepts for Predictable Infrastructure Creation, Modification, and Improvement + +Software architects understand that automation through Infrastructure as Code is a key method of modern operations and a component of Continuous Delivery. + +They are familiar with the possibilities of automation and understand how this can be realized using tools for automated provisioning of cloud infrastructure through the APIs of different cloud providers. + +They understand the difference between infrastructure configuration and provisioning, as well as established practices for infrastructure management. + +[[LG-6-4]] +==== LG 6-4: Differentiate and Understand Different Abstraction Layers of Container Managers + +Software architects are aware that container managers can extend the basic functionality of container orchestration tools. + +They are familiar with the use cases for container managers and can differentiate their abstraction layers. + +[[LG-6-5]] +==== LG 6-5: Understand Resource Sizing Calculation Methods + +Software architects are familiar with methods for calculating resource requirements for: + +* Availability +* Cluster size +// end::EN[] + + diff --git a/docs/06-Automation-and-Operation/references.adoc b/docs/06-Automation-and-Operation/references.adoc new file mode 100644 index 0000000..c772f5c --- /dev/null +++ b/docs/06-Automation-and-Operation/references.adoc @@ -0,0 +1,3 @@ +=== {references} + +<>, <> diff --git a/docs/06-Automation/01-duration-terms.adoc b/docs/06-Automation/01-duration-terms.adoc deleted file mode 100644 index 1b44c68..0000000 --- a/docs/06-Automation/01-duration-terms.adoc +++ /dev/null @@ -1,23 +0,0 @@ -// tag::DE[] -|=== -| Dauer: 120 Min. | Übungszeit: 20 Min. -|=== - -=== Begriffe und Konzepte -Provisionierung, Infrastructure as Code, Configuration - -// end::DE[] - -// tag::EN[] -|=== -| Duration: 120 min | Practice time: 20 min -|=== - -=== Terms and Principles -Provisioning, Infrastructure as Code, Configuration - -// end::EN[] - - - - diff --git a/docs/06-Automation/02-learning-goals.adoc b/docs/06-Automation/02-learning-goals.adoc deleted file mode 100644 index d19ee5f..0000000 --- a/docs/06-Automation/02-learning-goals.adoc +++ /dev/null @@ -1,43 +0,0 @@ -=== {learning-goals} - - -// tag::DE[] -[[LZ-5-1]] -==== LZ 5-1: Infrastructure as Code -* lernen die Möglichkeiten der Automatisierung zum vorhersehbaren Erzeugen, Verändern und Verbessern der Infrastruktur kennen und zu unterscheiden, u. a.: -** Ansible -** Chef -** Terraform -* kennen Best Practices, um unterschiedliche Konfigurationen der Infrastruktur verwalten -* lernen die API unterschiedlicher Cloud-Anbieter kennen und einzusetzen - -[[LZ-5-2]] -==== LZ 5-2: Container-Management-Plattformen -lernen vollständige Container-Management-Plattformen und Tools zur Administration kennen, wie zum Beispiel: - -* Rancher -* Tectonic, Kops oder Kubeadm -* OpenShift - -// end::DE[] - -// tag::EN[] -[[LG-5-1]] -==== LG 5-1: Infrastructure as Code -* Learn about and distinguish between automation options for predictably creating, modifying, and improving infrastructure, including: -** Ansible -** Chef -** Terraform -* Know best practices to manage different configurations of infrastructure -* learn about and use the API of different cloud providers - -[[LG-5-2]] -==== LG 5-2: Container Management Platforms -learn complete container management platforms and tools for administration, such as: - -* Rancher -* Tectonic, Kops or Kubeadm -* OpenShift -// end::EN[] - - diff --git a/docs/06-Automation/references.adoc b/docs/06-Automation/references.adoc deleted file mode 100644 index 410f319..0000000 --- a/docs/06-Automation/references.adoc +++ /dev/null @@ -1,3 +0,0 @@ -=== {references} - - diff --git a/docs/07-Case-Study/00-structure.adoc b/docs/07-Case-Study/00-structure.adoc new file mode 100644 index 0000000..21520f8 --- /dev/null +++ b/docs/07-Case-Study/00-structure.adoc @@ -0,0 +1,17 @@ +// header file for curriculum section 7: Lerneinheit 7 +// (c) iSAQB e.V. (https://isaqb.org) +// ==================================================== + +// tag::DE[] +== Case Study +// end::DE[] + +// tag::EN[] +== Case Study +// end::EN[] + +include::01-duration-terms.adoc[{include_configuration}] + +include::02-learning-goals.adoc[{include_configuration}] + +// include::references.adoc[{include_configuration}] diff --git a/docs/07-Case-Study/01-duration-terms.adoc b/docs/07-Case-Study/01-duration-terms.adoc new file mode 100644 index 0000000..844a2be --- /dev/null +++ b/docs/07-Case-Study/01-duration-terms.adoc @@ -0,0 +1,27 @@ +// tag::DE[] +|=== +| Dauer: 120 Min. | Übungszeit: 120 Min. +|=== + +Dieser Abschnitt ist nicht prüfungsrelevant. + +=== Begriffe und Konzepte +Innerhalb einer lehrplankonformen Schulung muss mindestens eine Fallstudie die Konzepte praktisch erläutern. + +Art und Ausprägung der vorgestellten Fallstudie kann von der Schulung bzw. den Interessen der Teilnehmenden abhängen. +// end::DE[] + + +// tag::EN[] +|=== +| Duration: 120 min | Practice time: 120 min +|=== + +This section is not examinable. + +=== Terms and Principles +Within a curriculum-compliant training course, at least one case study must practically explain the concepts. + +The type and nature of the case study presented may depend on the training or the interests of the participants. +// end::EN[] + diff --git a/docs/07-Case-Study/02-learning-goals.adoc b/docs/07-Case-Study/02-learning-goals.adoc new file mode 100644 index 0000000..7c73adf --- /dev/null +++ b/docs/07-Case-Study/02-learning-goals.adoc @@ -0,0 +1,16 @@ +=== {learning-goals} + +// tag::DE[] +[[LZ-7-1]] +==== LZ 7-1: Vertiefung durch praktische Übungen +Die Fallstudie soll die Themen durch praktische Übungen vertiefen und die Praxis verdeutlichen. + +// end::DE[] + + +// tag::EN[] +[[LG-7-1]] +==== LG 7-1: Deepening the Understanding by Practical Exercises +The Case Study is intended to deepen the topics through practical exercises and to clarify the practice. +// end::EN[] + diff --git a/docs/04-Helpful-Patterns/references.adoc b/docs/07-Case-Study/references.adoc similarity index 100% rename from docs/04-Helpful-Patterns/references.adoc rename to docs/07-Case-Study/references.adoc diff --git a/docs/98-examples/00-examples.adoc b/docs/98-examples/00-examples.adoc deleted file mode 100644 index da44e62..0000000 --- a/docs/98-examples/00-examples.adoc +++ /dev/null @@ -1,7 +0,0 @@ -== {examples} - -include::01-examples-duration-terms.adoc[{include_configuration}] - -include::02-learning-goals.adoc[{include_configuration}] - -include::references.adoc[{include_configuration}] diff --git a/docs/98-examples/01-examples-duration-terms.adoc b/docs/98-examples/01-examples-duration-terms.adoc deleted file mode 100644 index 0e6d401..0000000 --- a/docs/98-examples/01-examples-duration-terms.adoc +++ /dev/null @@ -1,28 +0,0 @@ -// tag::DE[] -|=== -| Dauer: 120 Min. | Übungszeit: 120 Min. -|=== - -Dieser Abschnitt ist nicht prüfungsrelevant. - -=== Begriffe und Konzepte -Innerhalb jeder lizenzierten Schulung muss mindestens ein Beispiel für {curriculum-short} vorgestellt werden. - -Art und Ausprägung der vorgestellten Beispiele können von der Schulung bzw. den Interessen der Teilnehmer abhängen und werden seitens iSAQB nicht vorgegeben. -// end::DE[] - - -// tag::EN[] -|=== -| Duration: 120 min | Practice time: 120 min -|=== - -This section is not examinable. - -=== Terms and Principles -In every licensed training session, at least one example for {curriculum-short} must be presented. - -Type and structure of the examples presented may depend on the training and participants' interests. -They are not prescribed by iSAQB. -// end::EN[] - diff --git a/docs/98-examples/02-learning-goals.adoc b/docs/98-examples/02-learning-goals.adoc deleted file mode 100644 index f58d86a..0000000 --- a/docs/98-examples/02-learning-goals.adoc +++ /dev/null @@ -1,16 +0,0 @@ -=== {learning-goals} - -// tag::DE[] -[[LZ-98-1]] -==== LZ 98-1: Vertiefung -Die Case Study soll die Themen durch praktische Übungen vertiefen und die Praxis verdeutlichen - -// end::DE[] - - -// tag::EN[] -[[LG-98-1]] -==== LG 98-1: In-depth -The Case Study is intended to deepen the topics through practical exercises and to clarify the practice -// end::EN[] - diff --git a/docs/98-examples/references.adoc b/docs/98-examples/references.adoc deleted file mode 100644 index 972bab5..0000000 --- a/docs/98-examples/references.adoc +++ /dev/null @@ -1,4 +0,0 @@ -=== {references} - - - diff --git a/docs/99-references/00-references.adoc b/docs/99-references/00-references.adoc index 01b9fff..fb3bb2a 100644 --- a/docs/99-references/00-references.adoc +++ b/docs/99-references/00-references.adoc @@ -6,26 +6,49 @@ == {references} // tag::DE[] -Dieser Abschnitt enthält Quellenangaben, die ganz oder teilweise im Curriculum referenziert werden. +Dieser Abschnitt enthält Ressourcen, die zur Erfüllung des Lehrplans verwendet werden sollten. // end::DE[] // tag::EN[] -This section contains references that are cited in the curriculum. +This section contains resources that should be used to fulfill the curriculum. // end::EN[] -[NOTE] -==== -Aufbau eines Eintrags-Ankers: -``` -- [[[label,Text der erscheint]]] -``` -ACHTUNG: Die Labels dürfen nur Buchstaben beinhalten, keine Zahlen oder Sonderzeichen - -= = = - -Structure of an anchor: -``` -- [[[label,text that will be shown]]] -``` -ATTENTION: labels have to be non-numeric. -==== +- [[[awati_wigmore,Awati, R. & Wigmore, I.: Monolithic architecture. WhatIs.com]]] Awati, R. & Wigmore, I. (2022). Monolithic architecture. WhatIs.com. https://www.techtarget.com/whatis/definition/monolithic-architecture + +- [[[backend_integration,Backend integration. microservice-api-patterns.org]]] Backend integration. microservice-api-patterns.org. 04.10.2023 retrieved from https://www.microservice-api-patterns.org/patterns/foundation/BackendIntegration + +- [[[betsy,Beyer Betsy et al.: Site Reliability Engineering]]] Beyer Betsy, Chris Jones, Jennifer Petoff, Niall Richard Murphy: Site Reliability Engineering. How Google Runs Production Systems. O'Reilly, 2016 + +- [[[bilgin_huss,Ibryam Bilgin, Roland Huss: Kubernetes Patterns.]]] Ibryam Bilgin, Roland Huss: Kubernetes Patterns. Reusable Elements for Designing Cloud Native Applications. O'Reilly Media, Second edition, 2023 + +- [[[burns,Brendan Burns: Designing Distributed Systems]]] Brendan Burns: Designing Distributed Systems. Patterns and Paradigms for Scaleable, Reliable Services. O'Reilly Media, 2018 + +- [[[cncf_landscape_streaming_messaging,Cloud Native landscape]]] Cloud Native landscape. 04.10.2023 retrieved from https://landscape.cncf.io/card-mode?category=streaming-messaging&grouping=category + +- [[[davis,Cornelia Davis: Cloud Native Patterns]]] Cornelia Davis: Cloud Native Patterns. Designing Change-tolerant Software. Manning, 2019 + +- [[[fowler_monolith,Dehghani, Z.: How to break a monolith into microservices. martinfowler.com]]] Dehghani, Z. How to break a monolith into microservices. martinfowler.com. 04.10.2023 retrieved from https://martinfowler.com/articles/break-monolith-into-microservices.html + +- [[[microservices_event-sourcing,Event sourcing. microservices.io]]] Event sourcing. microservices.io. 04.10.2023 retrieved from https://microservices.io/patterns/data/event-sourcing.html + +- [[[frontend_integration,Frontend Integration. microservice-api-patterns.org]]] Frontend Integration. microservice-api-patterns.org. 04.10.2023 retrieved from https://www.microservice-api-patterns.org/patterns/foundation/FrontendIntegration + +- [[[kim,Gene Kim et al.: The Devops Handbook]]] Gene Kim, Jez Humble, Patrick Debois, John Willis, John Allspaw: The Devops Handbook. How to Create World-Class Agility Reliability and Security in Technology Organizations. IT Revolution Press, Second edition, 2021 + +- [[[microservices_messaging,Messaging. microservices.io]]] Messaging. microservices.io. 04.10.2023 retrieved from https://microservices.io/patterns/communication-style/messaging.html + +- [[[fowler_microservices,Lewis, J.: Microservices. martinfowler.com]]] Lewis, J. Microservices. martinfowler.com. 04.10.2023 retrieved from https://martinfowler.com/articles/microservices.html + +- [[[microservices_microservice,Microservice Architecture Pattern. microservices.io]]] Microservice Architecture Pattern. microservices.io. 04.10.2023 retrieved from https://microservices.io/patterns/microservices.html + +- [[[microservices_monolith,Monolithic architecture pattern. microservices.io]]] Monolithic architecture pattern. microservices.io. 04.10.2023 retrieved from https://microservices.io/patterns/monolithic.html + +- [[[fowler_monolithfirst,Fowler, M.: MonolithFirst. martinfowler.com]]] Fowler, M. (2015). MonolithFirst. martinfowler.com. 04.10.2023 retrieved from https://www.martinfowler.com/bliki/MonolithFirst.html + +- [[[richardson,Chris Richardson: Microservice Patterns]]] Chris Richardson: Microservice Patterns. Manning, 2018 + +- [[[rss,RSS 2.0 specification (Current)]]] RSS 2.0 specification (Current). 04.10.2023 retrieved from https://www.rssboard.org/rss-specification + +- [[[scs,SCS: Self-contained systems]]] SCS: Self-contained systems. 04.10.2023 retrieved from https://scs-architecture.org/ + +- [[[scs_wolff,Wolff, E.: Self Contained Systems (SCS)]]] Wolff, E. (2017). Self Contained Systems (SCS): Microservices done right. InfoQ. 04.10.2023 retrieved from https://www.infoq.com/articles/scs-microservices-done-right/ diff --git a/docs/curriculum-cloudinfra.adoc b/docs/curriculum-cloudinfra.adoc index 0d0de86..775a110 100644 --- a/docs/curriculum-cloudinfra.adoc +++ b/docs/curriculum-cloudinfra.adoc @@ -47,16 +47,16 @@ include::02-Common-Architecture-Concepts/00-structure.adoc[{include_configuratio include::03-Cloud-Native-Journey/00-structure.adoc[{include_configuration}] <<< -include::04-Helpful-Patterns/00-structure.adoc[{include_configuration}] +include::04-Patterns/00-structure.adoc[{include_configuration}] <<< -include::05-Development-CICD-and-Operation/00-structure.adoc[{include_configuration}] +include::05-Development-and-CICD/00-structure.adoc[{include_configuration}] <<< -include::06-Automation/00-structure.adoc[{include_configuration}] +include::06-Automation-and-Operation/00-structure.adoc[{include_configuration}] <<< -include::98-examples/00-examples.adoc[{include_configuration}] +include::07-Case-Study/00-structure.adoc[{include_configuration}] <<< include::99-references/00-references.adoc[{include_configuration}]