Skip to content

Commit

Permalink
Merge pull request #21 from isaqb-org/original-dev
Browse files Browse the repository at this point in the history
Rework curriculum
  • Loading branch information
programming-wolf authored Nov 24, 2023
2 parents b208fe8 + e49f567 commit d8d765f
Show file tree
Hide file tree
Showing 44 changed files with 654 additions and 471 deletions.
3 changes: 2 additions & 1 deletion README.adoc
Original file line number Diff line number Diff line change
@@ -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!:
Expand All @@ -23,6 +23,7 @@ This is <<copyrighted,copyrighted work>>.

== 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::[]

Expand Down
8 changes: 4 additions & 4 deletions docs/00b-basics/01-what-to-expect-of-this-module.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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[]
Expand All @@ -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[]
Original file line number Diff line number Diff line change
Expand Up @@ -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)

|===

Expand All @@ -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)

|===

Expand Down
2 changes: 1 addition & 1 deletion docs/00b-basics/04-prerequisites-for-this-training.adoc
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
// ====================================================

Expand All @@ -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}]
Original file line number Diff line number Diff line change
Expand Up @@ -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[]

Expand All @@ -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[]


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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[]


2 changes: 1 addition & 1 deletion docs/02-Common-Architecture-Concepts/00-structure.adoc
Original file line number Diff line number Diff line change
@@ -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)
// ====================================================

Expand Down
7 changes: 3 additions & 4 deletions docs/02-Common-Architecture-Concepts/01-duration-terms.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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[]

Expand All @@ -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[]

Expand Down
66 changes: 43 additions & 23 deletions docs/02-Common-Architecture-Concepts/02-learning-goals.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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[]
Loading

0 comments on commit d8d765f

Please sign in to comment.