Initial commit: IHK Ausbildung materials
This commit is contained in:
181
2-Ausbildungsjahr/LF6-Serviceanfragen/LF6-Notizen.md
Normal file
181
2-Ausbildungsjahr/LF6-Serviceanfragen/LF6-Notizen.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# LF 6: Serviceanfragen bearbeiten
|
||||
|
||||
> **2. Ausbildungsjahr** | Zeitrichtwert: **40 Stunden**
|
||||
|
||||
## Kernkompetenz
|
||||
|
||||
Die Schülerinnen und Schüler verfügen über die Kompetenz, Serviceanfragen einzuordnen, Fehlerursachen zu ermitteln und zu beheben.
|
||||
|
||||
---
|
||||
|
||||
## Lernziele
|
||||
|
||||
Nach diesem Lernfeld kannst du:
|
||||
- [ ] Serviceanfragen analysieren und einordnen
|
||||
- [ ] Service-Level-Agreements (SLA) prüfen
|
||||
- [ ] Ticket-Systeme bedienen
|
||||
- [ ] Fehlerursachen systematisch ermitteln
|
||||
- [ ] Lösungen im Rahmen des Support-Levels erarbeiten
|
||||
- [ ] Mit Kunden situationsgerecht kommunizieren
|
||||
- [ ] Den Bearbeitungsprozess reflektieren
|
||||
|
||||
---
|
||||
|
||||
## ITIL-Grundlagen
|
||||
|
||||
### Service-Struktur
|
||||
|
||||
```
|
||||
ITIL-Prozesse
|
||||
├── Service Strategy
|
||||
├── Service Design
|
||||
├── Service Transition
|
||||
├── Service Operation
|
||||
│ ├── Incident Management
|
||||
│ ├── Problem Management
|
||||
│ └── Request Fulfillment
|
||||
└── Continual Service Improvement
|
||||
```
|
||||
|
||||
### Support-Level
|
||||
|
||||
| Level | Beschreibung | Beispiel |
|
||||
|-------|--------------|----------|
|
||||
| **1st Level** | Erste Ebene, einfache Probleme | Passwort zurücksetzen |
|
||||
| **2nd Level** | Technischer Support | Hard- und Softwareprobleme |
|
||||
| **3rd Level** | Entwicklung/Hersteller | Komplexe Fehler |
|
||||
|
||||
---
|
||||
|
||||
## Ticket-Systeme
|
||||
|
||||
### Ticket-Lebenszyklus
|
||||
|
||||
```
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│ New │───>│ Open │───>│ Pending │───>│ Closed │
|
||||
└─────────┘ └─────────┘ └─────────┘ └─────────┘
|
||||
│ │
|
||||
v v
|
||||
┌─────────┐ ┌─────────┐
|
||||
│ In │ │ Resolved│
|
||||
│ Progress │ └─────────┘
|
||||
└─────────┘
|
||||
```
|
||||
|
||||
### Prioritäten
|
||||
|
||||
| Priorität | Beschreibung | Reaktionszeit |
|
||||
|-----------|--------------|---------------|
|
||||
| **P1 - Kritisch** | Geschäftskritisch | < 1 Stunde |
|
||||
| **P2 - Hoch** | Große Auswirkung | < 4 Stunden |
|
||||
| **P3 - Mittel** | Begrenzte Auswirkung | < 1 Arbeitstag |
|
||||
| **P4 - Niedrig** | Minimaler Impact | < 1 Woche |
|
||||
|
||||
---
|
||||
|
||||
## SLA (Service Level Agreement)
|
||||
|
||||
### Bestandteile
|
||||
|
||||
```
|
||||
SLA-Inhalte
|
||||
├── Verfügbarkeit (z.B. 99,9%)
|
||||
├── Reaktionszeiten
|
||||
├── Wiederherstellungszeiten
|
||||
├── Support-Zeiten (24/7, 9-17 Uhr)
|
||||
├── Eskalationsprozeduren
|
||||
├── Reporting
|
||||
└── Kosten
|
||||
```
|
||||
|
||||
### Berechnung Verfügbarkeit
|
||||
|
||||
```
|
||||
Beispiel: 99,9% Verfügbarkeit
|
||||
|
||||
Jährlich: 365 Tage × 24h = 8760h
|
||||
Erlaubte Ausfallzeit: 8760 × 0,001 = 8,76h
|
||||
Monatlich: 720h × 0,001 = 0,72h
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fehleranalyse
|
||||
|
||||
### Methoden
|
||||
|
||||
| Methode | Beschreibung |
|
||||
|---------|--------------|
|
||||
| **5 Whys** | Warum-Fragen stellen (Root Cause) |
|
||||
| **Ishikawa** | Fischgräten-Diagramm |
|
||||
| **Kepner-Tregoe** | Situationsanalyse |
|
||||
|
||||
### 5-Why-Beispiel
|
||||
|
||||
```
|
||||
Problem: Drucker druckt nicht
|
||||
|
||||
1. Warum? → Kein Toner
|
||||
2. Warum? → Toner wurde nie gewechselt
|
||||
3. Warum? → Keine Warnung bei niedrigem Tonerstand
|
||||
4. Warum? → Einstellungen nicht konfiguriert
|
||||
5. Warum? → Schulung nicht erfolgt
|
||||
|
||||
→ Lösung: Schulung durchführen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kommunikation
|
||||
|
||||
### Vier-Seiten-Modell (Schulz von Thun)
|
||||
|
||||
```
|
||||
Nachricht hat 4 Seiten:
|
||||
┌─────────────────────────────────────┐
|
||||
│ Sachinhalt │ ← Was wurde mitgeteilt?
|
||||
├─────────────────────────────────────┤
|
||||
│ Selbstoffenbarung │ ← Was sagt das über mich aus?
|
||||
├─────────────────────────────────────┤
|
||||
│ Beziehung │ ← Wie stehe ich zum Empfänger?
|
||||
├─────────────────────────────────────┤
|
||||
│ Appelle │ ← Was will ich erreichen?
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Deeskalation
|
||||
|
||||
- **Aktives Zuhören**
|
||||
- **Empathie zeigen**
|
||||
- **Sachlich bleiben**
|
||||
- **Lösungen anbieten**
|
||||
- **Rückmeldung geben**
|
||||
|
||||
---
|
||||
|
||||
## Handlungsphasen
|
||||
|
||||
1. **Aufnehmen**: Ticket erstellen, Kunden kontaktieren
|
||||
2. **Analysieren**: SLA prüfen, Fehler eingrenzen
|
||||
3. **Lösen**: Lösung erarbeiten, umsetzen
|
||||
4. **Dokumentieren**: Ticket aktualisieren, dokumentieren
|
||||
5. **Abschließen**: Kunden informieren, Feedback einholen
|
||||
|
||||
---
|
||||
|
||||
## Prüfungsrelevanz
|
||||
|
||||
- Wichtig für Support-Tätigkeiten
|
||||
- Kommunikationskompetenz wird geprüft
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[1-Ausbildungsjahr/LF5-Datenbanken-anpassen|Vorher: LF 5]]
|
||||
- [[2-Ausbildungsjahr/LF7-Cyber-physische-Systeme|Nachher: LF 7]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|
||||
225
2-Ausbildungsjahr/LF7-Cyber-physische-Systeme/LF7-Notizen.md
Normal file
225
2-Ausbildungsjahr/LF7-Cyber-physische-Systeme/LF7-Notizen.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# LF 7: Cyber-physische Systeme ergänzen
|
||||
|
||||
> **2. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
|
||||
|
||||
## Kernkompetenz
|
||||
|
||||
Die Schülerinnen und Schüler verfügen über die Kompetenz, die physische Welt und IT-Systeme funktional zu einem cyber-physischen System zusammenzuführen.
|
||||
|
||||
---
|
||||
|
||||
## Lernziele
|
||||
|
||||
Nach diesem Lernfeld kannst du:
|
||||
- [ ] Ein CPS analysieren und dessen Komponenten beschreiben
|
||||
- [ ] Datenfluss an Schnittstellen verstehen
|
||||
- [ ] Sensoren und Aktoren auswählen und integrieren
|
||||
- [ ] IoT-Kommunikationsprotokolle anwenden
|
||||
- [ ] Energiebedarf berechnen
|
||||
- [ ] System testen und dokumentieren
|
||||
- [ ] Sicherheitsaspekte berücksichtigen
|
||||
|
||||
---
|
||||
|
||||
## Was ist ein CPS?
|
||||
|
||||
```
|
||||
Cyber-Physical System (CPS)
|
||||
│
|
||||
├── PHYSISCHE WELT
|
||||
│ ├── Sensoren (Messdaten erfassen)
|
||||
│ └── Aktoren (physikalische Aktionen)
|
||||
│
|
||||
├── IT-SYSTEM
|
||||
│ ├── Steuerung/Regelung
|
||||
│ ├── Datenverarbeitung
|
||||
│ └── Speicherung
|
||||
│
|
||||
└── KOMMUNIKATION
|
||||
├── Netzwerkverbindung
|
||||
└── Protokolle (MQTT, REST, etc.)
|
||||
```
|
||||
|
||||
### CPS vs. IoT
|
||||
|
||||
| Merkmal | CPS | IoT |
|
||||
|---------|-----|-----|
|
||||
| Fokus | Steuerung + Regelung | Vernetzung + Daten |
|
||||
| Bereich | Produktion, Auto | Consumer, Gebäude |
|
||||
| Echtzeit | Oft kritisch | Meist weniger |
|
||||
|
||||
---
|
||||
|
||||
## Sensoren
|
||||
|
||||
### Typen
|
||||
|
||||
| Sensortyp | Messgröße | Anwendung |
|
||||
|-----------|-----------|------------|
|
||||
| Temperatursensor | °C/°F | Klimaanlage |
|
||||
| Feuchtigkeitssensor | %rH | Gewächshaus |
|
||||
| Drucksensor | bar/Pa | Hydraulik |
|
||||
| Lichtsensor | Lux | Beleuchtung |
|
||||
| Abstandssensor | cm/mm | Automatisierung |
|
||||
| Füllstandssensor | % | Tank |
|
||||
| Bewegungssensor | bool | Sicherheit |
|
||||
|
||||
### Schnittstellen
|
||||
|
||||
```
|
||||
Sensor-Schnittstellen
|
||||
├── Analog
|
||||
│ ├── 0-10V
|
||||
│ └── 4-20mA (Stromschleife)
|
||||
├── Digital
|
||||
│ ├── I2C (Two-Wire)
|
||||
│ ├── SPI
|
||||
│ ├── 1-Wire
|
||||
│ └── UART
|
||||
└── Funk
|
||||
├── Zigbee
|
||||
├── Bluetooth LE
|
||||
└── LoRa
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Aktoren
|
||||
|
||||
### Typen
|
||||
|
||||
| Aktortyp | Funktion | Beispiel |
|
||||
|---------|---------|---------|
|
||||
| Relais | Schalten | Licht, Motor |
|
||||
| Motor | Drehung | Roboterarm |
|
||||
| Ventil | Durchfluss | Hydraulik |
|
||||
| Heizelement | Wärme | 3D-Drucker |
|
||||
| LED | Lichtsignal | Statusanzeige |
|
||||
| Piezo | Tonalarm | Signalton |
|
||||
|
||||
---
|
||||
|
||||
## Mikrocontroller & Einplatinencomputer
|
||||
|
||||
### Vergleich
|
||||
|
||||
| Plattform | Prozessor | RAM | GPIO | OS |
|
||||
|-----------|-----------|-----|------|-----|
|
||||
| **Arduino Uno** | ATmega328P | 2KB | 14 | Nein |
|
||||
| **Raspberry Pi 4** | ARM Cortex-A72 | 8GB | 40 | Linux |
|
||||
| **ESP32** | Xtensa | 520KB | 34 | FreeRTOS |
|
||||
| **BBC micro:bit** | ARM Cortex-M4 | 256KB | 19 | Keins |
|
||||
|
||||
### Programmierung
|
||||
|
||||
```python
|
||||
# Raspberry Pi / Python Beispiel
|
||||
import RPi.GPIO as GPIO
|
||||
import time
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setup(18, GPIO.OUT)
|
||||
|
||||
try:
|
||||
while True:
|
||||
GPIO.output(18, True) # LED an
|
||||
time.sleep(1)
|
||||
GPIO.output(18, False) # LED aus
|
||||
time.sleep(1)
|
||||
except KeyboardInterrupt:
|
||||
GPIO.cleanup()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## IoT-Kommunikationsprotokolle
|
||||
|
||||
### MQTT
|
||||
|
||||
**Publish/Subscribe-Prinzip:**
|
||||
|
||||
```
|
||||
Publisher Broker Subscriber
|
||||
│ │ │
|
||||
│──Topic: temp───>│ │
|
||||
│ │──temp───> │
|
||||
│ │ │
|
||||
│──Topic: temp───>│ │
|
||||
│ │ │
|
||||
```
|
||||
|
||||
**Beispiel (Python):**
|
||||
|
||||
```python
|
||||
import paho.mqtt.client as mqtt
|
||||
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
client.subscribe("sensor/temperature")
|
||||
|
||||
def on_message(client, userdata, msg):
|
||||
print(f"Temperatur: {msg.payload.decode()}")
|
||||
|
||||
client = mqtt.Client()
|
||||
client.on_connect = on_connect
|
||||
client.on_message = on_message
|
||||
client.connect("broker.example.com", 1883)
|
||||
client.loop_forever()
|
||||
```
|
||||
|
||||
### REST API
|
||||
|
||||
```
|
||||
HTTP-Methoden:
|
||||
GET → Daten abrufen
|
||||
POST → Daten erstellen
|
||||
PUT → Daten vollständig ersetzen
|
||||
PATCH → Daten teilweise ändern
|
||||
DELETE → Daten löschen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Energiebedarf
|
||||
|
||||
### Berechnung
|
||||
|
||||
```
|
||||
P = U × I (Leistung = Spannung × Strom)
|
||||
|
||||
Beispiel:
|
||||
Mikrocontroller: 5V × 0,5A = 2,5W
|
||||
Stunden pro Tag: 24h
|
||||
Verbrauch/Tag: 2,5W × 24h = 60Wh = 0,06kWh
|
||||
Jahr: 0,06kWh × 365 = 21,9kWh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Handlungsphasen
|
||||
|
||||
1. **Analysieren**: Bestehendes System verstehen
|
||||
2. **Informieren**: Technische Dokumentation studieren
|
||||
3. **Planen**: Komponentenauswahl, Konzept erstellen
|
||||
4. **Implementieren**: Software, Hardware integrieren
|
||||
5. **Testen**: Funktion prüfen, dokumentieren
|
||||
6. **Reflektieren**: Optimierungsmöglichkeiten finden
|
||||
|
||||
---
|
||||
|
||||
## Prüfungsrelevanz
|
||||
|
||||
- Wichtig für Anwendungsentwicklung
|
||||
- Projektion in LF 10a-12a
|
||||
- Praxisbezug für Abschlussprojekt
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[2-Ausbildungsjahr/LF6-Serviceanfragen|Vorher: LF 6]]
|
||||
- [[2-Ausbildungsjahr/LF8-Daten-bereitstellen|Nachher: LF 8]]
|
||||
- [[IoT-Programmierung|IoT-Programmierung Vertiefung]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|
||||
32
2-Ausbildungsjahr/LF7-Service/LF7-00-Übersicht.md
Normal file
32
2-Ausbildungsjahr/LF7-Service/LF7-00-Übersicht.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Lernfeld 7: Service und Support
|
||||
|
||||
## Übersicht
|
||||
|
||||
Dieses Lernfeld behandelt die Bearbeitung von Serviceanfragen und den IT-Support.
|
||||
|
||||
## Themen
|
||||
|
||||
| Nr. | Thema | Beschreibung |
|
||||
| --- | --- | --- |
|
||||
| 7.1 | [[LF7-01-ITIL-Grundlagen]] | IT Service Management |
|
||||
| 7.2 | [[LF7-02-Ticketmanagement]] | Ticketsysteme, Prozesse |
|
||||
| 7.3 | [[LF7-03-Support-Stufen]] | 1st/2nd/3rd Level |
|
||||
| 7.4 | [[LF7-04-Kommunikation]] | Kundenkommunikation |
|
||||
|
||||
## Lernziele
|
||||
|
||||
- Serviceanfragen professionell bearbeiten
|
||||
- ITIL-Prozesse anwenden
|
||||
- Support-Stufen unterscheiden
|
||||
- Kundenorientiert kommunizieren
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF6-04-Sicherheit-Web|Zurück: Web-Sicherheit]]
|
||||
- [[LF8-Datenintegration|Nächstes Lernfeld: Datenintegration]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
150
2-Ausbildungsjahr/LF7-Service/LF7-01-ITIL-Grundlagen.md
Normal file
150
2-Ausbildungsjahr/LF7-Service/LF7-01-ITIL-Grundlagen.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# 7.1 ITIL-Grundlagen
|
||||
|
||||
## Was ist ITIL?
|
||||
|
||||
**ITIL** (Information Technology Infrastructure Library) ist ein Framework für **IT Service Management (ITSM)**.
|
||||
|
||||
### Geschichte
|
||||
|
||||
```
|
||||
ITIL-Versionen
|
||||
├── ITIL v1 (1989) → 1990er
|
||||
├── ITIL v2 (2001) → Best Practices
|
||||
├── ITIL v3 (2007) → Service Lifecycle
|
||||
└── ITIL 4 (2019) → Aktuell, flexibler
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ITIL Service Value System (SVS)
|
||||
|
||||
```
|
||||
ITIL 4 - Überblick
|
||||
┌────────────────────────────────────────┐
|
||||
│ Organisation │
|
||||
├────────────────────────────────────────┤
|
||||
│ Service Value Chain │
|
||||
│ Plan → Improve → Engage → Design → │
|
||||
│ Transition → Operation │
|
||||
├────────────────────────────────────────
|
||||
│ ITIL Practices │
|
||||
└────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ITIL Service Value Chain
|
||||
|
||||
```
|
||||
Value Chain - Aktivitäten
|
||||
├── Plan (Planen)
|
||||
│ └── Strategie festlegen
|
||||
├── Improve (Verbessern)
|
||||
│ └── Kontinuierliche Verbesserung
|
||||
├── Engage (Einbeziehen)
|
||||
│ └── Kommunikation mit Stakeholdern
|
||||
├── Design & Transition (Gestalten)
|
||||
│ └── Services entwickeln
|
||||
├── Obtain/Build (Beschaffen)
|
||||
│ └── Komponenten bereitstellen
|
||||
└── Deliver & Operate (Liefern/Betreiben)
|
||||
└── Services bereitstellen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ITIL Practices
|
||||
|
||||
### Service Practices
|
||||
|
||||
| Practice | Beschreibung |
|
||||
|----------|-------------|
|
||||
| Service Desk | Single Point of Contact |
|
||||
| Incident Management | Störungsbearbeitung |
|
||||
| Problem Management | Grundursachenanalyse |
|
||||
| Change Management | Änderungsprozess |
|
||||
| Release Management | Bereitstellung |
|
||||
|
||||
### Technical Practices
|
||||
|
||||
| Practice | Beschreibung |
|
||||
|----------|-------------|
|
||||
| Monitoring | Systemüberwachung |
|
||||
| Event Management | Ereignisverarbeitung |
|
||||
| Incident Response | Reaktionsfähigkeit |
|
||||
|Continual Improvement | KVP |
|
||||
|
||||
---
|
||||
|
||||
## Kernkonzepte
|
||||
|
||||
### Service
|
||||
|
||||
```
|
||||
Service - Definition
|
||||
Ein Service ermöglicht es Kunden,
|
||||
Wert zu erreichen, ohne spezifische
|
||||
Kosten und Risiken zu tragen.
|
||||
```
|
||||
|
||||
### Value
|
||||
|
||||
```
|
||||
Wert - Komponenten
|
||||
├── Nutzen (Utility)
|
||||
│ └── Funktionen, die Kunde braucht
|
||||
└── Ertrag (Warranty)
|
||||
└── Qualität, Verfügbarkeit
|
||||
```
|
||||
|
||||
### Customer Experience
|
||||
|
||||
```
|
||||
Service Relationship
|
||||
┌─────────┐ Service ┌─────────┐
|
||||
│ Service │◄───────────────►│ Kunde │
|
||||
│ Provider│ │ │
|
||||
└─────────┘ └─────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ITIL-Prozesse im Detail
|
||||
|
||||
### Incident Management
|
||||
|
||||
```
|
||||
Incident Lifecycle
|
||||
1. Detect → Erkennen
|
||||
2. Record → Erfassen
|
||||
3. Categorize → Kategorisieren
|
||||
4. Prioritize → Priorisieren
|
||||
5. Diagnose → Diagnostizieren
|
||||
6. Resolve → Beheben
|
||||
7. Close → Abschließen
|
||||
```
|
||||
|
||||
### Problem Management
|
||||
|
||||
```
|
||||
Problem - Ablauf
|
||||
Problem erkannt
|
||||
↓
|
||||
Analyse der Grundursache
|
||||
↓
|
||||
Lösung entwickeln
|
||||
↓
|
||||
Change Request erstellen
|
||||
↓
|
||||
Problem gelöst
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF7-02-Ticketmanagement|Nächstes Thema: Ticketmanagement]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
178
2-Ausbildungsjahr/LF7-Service/LF7-02-Ticketmanagement.md
Normal file
178
2-Ausbildungsjahr/LF7-Service/LF7-02-Ticketmanagement.md
Normal file
@@ -0,0 +1,178 @@
|
||||
# 7.2 Ticketmanagement
|
||||
|
||||
## Ticketsysteme
|
||||
|
||||
### Was ist ein Ticket?
|
||||
|
||||
```
|
||||
Ticket = Strukturierten Erfassung
|
||||
einer Serviceanfrage oder Störung
|
||||
```
|
||||
|
||||
### Lebenszyklus
|
||||
|
||||
```
|
||||
Ticket-Lebenszyklus
|
||||
┌──────────┐
|
||||
│ Neu │ ← Created
|
||||
└────┬─────┘
|
||||
│
|
||||
▼
|
||||
┌──────────┐
|
||||
│ In Bearb.│ ← Assigned
|
||||
└────┬─────┘
|
||||
│
|
||||
▼
|
||||
┌──────────┐
|
||||
│ Gelöst │ ← Resolved
|
||||
└────┬─────┘
|
||||
│
|
||||
▼
|
||||
┌──────────┐
|
||||
│ Geschlos.│ ← Closed
|
||||
└──────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ticket-Kategorien
|
||||
|
||||
### Kategorisierung
|
||||
|
||||
| Kategorie | Beschreibung |
|
||||
|-----------|-------------|
|
||||
| Incident | Störung, Serviceausfall |
|
||||
| Request | Anfrage, Wunsch |
|
||||
| Change | Änderungsanfrage |
|
||||
| Problem | Wiederkehrendes Problem |
|
||||
|
||||
### Prioritäten
|
||||
|
||||
| Priorität | Beschreibung | Reaktionszeit |
|
||||
|-----------|-------------|---------------|
|
||||
| **P1 - Kritisch** | Geschäftskritisch | < 1 Stunde |
|
||||
| **P2 - Hoch** | Wichtige Funktion | < 4 Stunden |
|
||||
| **P3 - Mittel** | Normale Priorität | < 1 Arbeitstag |
|
||||
| **P4 - Niedrig** | Kleinere Probleme | < 1 Woche |
|
||||
|
||||
### Auswirkung (Impact)
|
||||
|
||||
| Level | Beschreibung |
|
||||
|-------|-------------|
|
||||
| 1 - Global | Alle Benutzer betroffen |
|
||||
| 2 - Abteilung | Mehrere Abteilungen |
|
||||
| 3 - Einzelner | Ein Benutzer |
|
||||
|
||||
---
|
||||
|
||||
## Ticketfelder
|
||||
|
||||
### Standardfelder
|
||||
|
||||
```
|
||||
Ticket-Daten
|
||||
├── ID (eindeutig)
|
||||
├── Titel/Zusammenfassung
|
||||
├── Beschreibung
|
||||
├── Kategorie
|
||||
├── Priorität
|
||||
├── Status
|
||||
├── Bearbeiter
|
||||
├── Lösung
|
||||
├── Erstellungsdatum
|
||||
├── Fälligkeitsdatum
|
||||
└── Anhang/Bilder
|
||||
```
|
||||
|
||||
### Beispiel-Ticket
|
||||
|
||||
```markdown
|
||||
# Ticket #12345
|
||||
|
||||
Titel: Drucker druckt nicht
|
||||
Kategorie: Hardware
|
||||
Priorität: P3
|
||||
Status: In Bearbeitung
|
||||
|
||||
Beschreibung:
|
||||
Der Drucker im 2. OG zeigt Fehlermeldung
|
||||
"Papierstau" obwohl kein Papier vorhanden.
|
||||
|
||||
Lösung:
|
||||
Wartung durchgeführt, Walzen gereinigt.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ticketwerkzeuge
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Typ | Eigenschaften |
|
||||
|------|-----|---------------|
|
||||
| Jira Service Management | Cloud | Umfangreich |
|
||||
| OTRS | Open Source | Deutsch |
|
||||
| GLPI | Open Source | Asset-Management |
|
||||
| Zendesk | Cloud | Support-fokussiert |
|
||||
| Freshservice | Cloud | Einfach |
|
||||
|
||||
---
|
||||
|
||||
## SLA (Service Level Agreement)
|
||||
|
||||
### SLA-Komponenten
|
||||
|
||||
```
|
||||
SLA - Inhalt
|
||||
├── Reaktionszeiten
|
||||
├── Lösungszeiten
|
||||
├── Verfügbarkeit
|
||||
├── Support-Zeiten (Business Hours)
|
||||
├── Eskalationsprozeduren
|
||||
└── Kommunikationswege
|
||||
```
|
||||
|
||||
### Eskalation
|
||||
|
||||
```
|
||||
Eskalation - Stufen
|
||||
├── 1. Stufe: Bearbeiter
|
||||
├── 2. Stufe: Teamleiter
|
||||
├── 3. Stufe: Manager
|
||||
└── 4. Stufe: Geschäftsführung
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kennzahlen (KPIs)
|
||||
|
||||
### Wichtige Metriken
|
||||
|
||||
| KPI | Beschreibung | Zielwert |
|
||||
|-----|-------------|----------|
|
||||
| MTTR | Mean Time To Resolve | < 8h |
|
||||
| MTTF | Mean Time To Failure | > 720h |
|
||||
| FCR | First Contact Resolution | > 70% |
|
||||
| CSAT | Customer Satisfaction | > 4.5/5 |
|
||||
|
||||
### Reporting
|
||||
|
||||
```
|
||||
Ticket-Report
|
||||
├── Anzahl offener Tickets
|
||||
├── Durchschnittliche Lösungszeit
|
||||
├── Tickets pro Kategorie
|
||||
├── SLA-Einhaltung
|
||||
└── Kundenfeedback
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF7-01-ITIL-Grundlagen|Zurück: ITIL-Grundlagen]]
|
||||
- [[LF7-03-Support-Stufen|Nächstes Thema: Support-Stufen]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
194
2-Ausbildungsjahr/LF7-Service/LF7-03-Support-Stufen.md
Normal file
194
2-Ausbildungsjahr/LF7-Service/LF7-03-Support-Stufen.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# 7.3 Support-Stufen
|
||||
|
||||
## Support-Struktur
|
||||
|
||||
### Eskalationsmodell
|
||||
|
||||
```
|
||||
Support-Level
|
||||
┌─────────────────────────────────┐
|
||||
│ Service Desk │ ← 1st Level
|
||||
│ (First Line / Front Office) │
|
||||
└───────────────┬─────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────┐
|
||||
│ Technical Support │ ← 2nd Level
|
||||
│ (2nd Line / Backend) │
|
||||
└───────────────┬─────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────┐
|
||||
│ Expert Support │ ← 3rd Level
|
||||
│ (3rd Line / Specialists) │
|
||||
└───────────────┬─────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────┐
|
||||
│ External Vendors/Developers │ ← 4th Level
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Level 1 - First Level Support
|
||||
|
||||
### Aufgaben
|
||||
|
||||
| Aufgabe | Beschreibung |
|
||||
|---------|-------------|
|
||||
| Annahme | Tickets entgegennehmen |
|
||||
| Kategorisierung | Richtige Kategorie zuweisen |
|
||||
| Grunddiagnose | Einfache Probleme lösen |
|
||||
| Lösungswissen | Bekannte Lösungen anwenden |
|
||||
| Eskalation | Komplexe Fälle weitergeben |
|
||||
|
||||
### Fähigkeiten
|
||||
|
||||
```
|
||||
First Level - Anforderungen
|
||||
├── Produktwissen
|
||||
├── Kommunikationsfähigkeit
|
||||
├── Grundlegende Technik
|
||||
├── Dokumentation
|
||||
└── Zeitmanagement
|
||||
```
|
||||
|
||||
### Typische Lösungsquote
|
||||
|
||||
```
|
||||
First Contact Resolution (FCR)
|
||||
Ziel: 60-70% direkt gelöst
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Level 2 - Second Level Support
|
||||
|
||||
### Aufgaben
|
||||
|
||||
| Aufgabe | Beschreibung |
|
||||
|---------|-------------|
|
||||
| Tiefendiagnose | Komplexe Probleme analysieren |
|
||||
| Technische Lösung | Fachliche Probleme beheben |
|
||||
| Workarounds | Temporäre Lösungen finden |
|
||||
| Dokumentation | Wissensdatenbank pflegen |
|
||||
| Schulung | Level 1 unterstützen |
|
||||
|
||||
### Fähigkeiten
|
||||
|
||||
```
|
||||
Second Level - Anforderungen
|
||||
├── Vertieftes Technikwissen
|
||||
├── Erfahrung mit Systemen
|
||||
├── Analysefähigkeit
|
||||
├── Eigenständigkeit
|
||||
└── Mentoring
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Level 3 - Third Level Support
|
||||
|
||||
### Aufgaben
|
||||
|
||||
| Aufgabe | Beschreibung |
|
||||
|---------|-------------|
|
||||
| Expertenwissen | Spezialisten-Know-how |
|
||||
| Grundursachenanalyse | Komplexe Fehler finden |
|
||||
| Entwicklung | Fixes entwickeln |
|
||||
| Architektur | Systemänderungen planen |
|
||||
|Vendor-Kontakt | Hersteller einbinden |
|
||||
|
||||
### Fähigkeiten
|
||||
|
||||
```
|
||||
Third Level - Anforderungen
|
||||
├── Sehr tiefes Fachwissen
|
||||
├── Programmierkenntnisse
|
||||
├── Architekturverständnis
|
||||
├── Innovationskraft
|
||||
└── Dokumentation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Eskalation
|
||||
|
||||
### Wann eskalieren?
|
||||
|
||||
```
|
||||
Eskalations-Kriterien
|
||||
├── Zeitüberschreitung
|
||||
├── Fehlende Kompetenz
|
||||
├── Benutzer-Escalation
|
||||
├── Qualitätsprobleme
|
||||
└── Neue Sachverhalte
|
||||
```
|
||||
|
||||
### Vertikale vs. Horizontale Eskalation
|
||||
|
||||
| Typ | Beschreibung |
|
||||
|-----|-------------|
|
||||
| **Vertikal** | An Vorgesetzte/ höhere Level |
|
||||
| **Horizontal** | An anderes Team/ Thema |
|
||||
|
||||
---
|
||||
|
||||
## Remote Support
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Beschreibung |
|
||||
|------|-------------|
|
||||
| AnyDesk | Fernwartung |
|
||||
| TeamViewer | Universell |
|
||||
| Windows Remote Desktop | Windows |
|
||||
| VNC | Plattformübergreifend |
|
||||
|
||||
### Best Practices
|
||||
|
||||
```
|
||||
Fernwartung - Regeln
|
||||
├── Genehmigung einholen
|
||||
├── Bildschirm freigeben lassen
|
||||
├── Nur auf Abfrage handeln
|
||||
├── Keine privaten Daten ansehen
|
||||
└── Session dokumentieren
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Wissensdatenbank
|
||||
|
||||
### Knowledge Base (KB)
|
||||
|
||||
```
|
||||
KB - Inhalte
|
||||
├── Lösungsschritte (How-To)
|
||||
├── FAQ
|
||||
├── Bekannte Probleme (Known Errors)
|
||||
├── Produktdokumentation
|
||||
└── Anleitungen
|
||||
```
|
||||
|
||||
### Ticket-to-Knowledge
|
||||
|
||||
```
|
||||
Aus Ticket wird Artikel
|
||||
1. Problem reproduziert
|
||||
2. Lösung gefunden
|
||||
3. KB-Artikel erstellen
|
||||
4. Auf Kunden-Ticket verlinken
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF7-02-Ticketmanagement|Zurück: Ticketmanagement]]
|
||||
- [[LF7-04-Kommunikation|Nächstes Thema: Kommunikation]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
161
2-Ausbildungsjahr/LF7-Service/LF7-04-Kommunikation.md
Normal file
161
2-Ausbildungsjahr/LF7-Service/LF7-04-Kommunikation.md
Normal file
@@ -0,0 +1,161 @@
|
||||
# 7.4 Kundenkommunikation
|
||||
|
||||
## Kommunikationsgrundlagen
|
||||
|
||||
### Grundsätze
|
||||
|
||||
```
|
||||
Gute Kommunikation
|
||||
├── Zuhören
|
||||
├── Verständlich erklären
|
||||
├── Geduldig sein
|
||||
├── Freundlich bleiben
|
||||
└── Nicht überfordern
|
||||
```
|
||||
|
||||
### Aktives Zuhören
|
||||
|
||||
```
|
||||
Aktives Zuhören - Techniken
|
||||
├── Augenkontakt
|
||||
├── Nicken
|
||||
├── Nachfragen
|
||||
├── Zusammenfassen
|
||||
└── Nicht unterbrechen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gesprächsführung
|
||||
|
||||
### Am Telefon
|
||||
|
||||
```
|
||||
Telefon - Checkliste
|
||||
├── Begrüßung (Name, Firma)
|
||||
├── Problem aufnehmen
|
||||
├── Fragen stellen
|
||||
├── Lösung anbieten
|
||||
├── Zusammenfassung
|
||||
├── Verabschiedung
|
||||
```
|
||||
|
||||
### Gesprächsphasen
|
||||
|
||||
| Phase | Inhalt |
|
||||
|-------|--------|
|
||||
| Eröffnung | Begrüßung, Vorstellung |
|
||||
| Ermittlung | Problem verstehen |
|
||||
| Lösung | Lösung anbieten |
|
||||
| Abschluss | Zusammenfassung, Nächste Schritte |
|
||||
|
||||
---
|
||||
|
||||
## Technische Erklärungen
|
||||
|
||||
### Kunden verständlich
|
||||
|
||||
```
|
||||
Komplexität reduzieren
|
||||
├── Fachbegriffe vermeiden oder erklären
|
||||
├── Analogien verwenden
|
||||
├── Visuelle Hilfen einsetzen
|
||||
├── Schritt für Schritt arbeiten
|
||||
└── Nachfragen ob verstanden
|
||||
```
|
||||
|
||||
### Analogien
|
||||
|
||||
```
|
||||
Beispiele für Erklärungen
|
||||
|
||||
Netzwerk → Straßennetz
|
||||
Server → Bibliothek
|
||||
Firewall → Sicherheitskontrolle
|
||||
Backup → Sicherheitskopie
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## schwierige Situationen
|
||||
|
||||
### Umgang mit Ärger
|
||||
|
||||
```
|
||||
Ärgerlicher Kunde - Verhalten
|
||||
├── Ruhig bleiben
|
||||
├── Nicht persönlich nehmen
|
||||
├── Verständnis zeigen
|
||||
├── Nicht unterbrechen
|
||||
└── Lösung anbieten
|
||||
```
|
||||
|
||||
### Formulierungen
|
||||
|
||||
| Vermeiden | Besser |
|
||||
|-----------|--------|
|
||||
| Das ist unmöglich | Ich schaue mir das an |
|
||||
| Das ist nicht mein Problem | Ich verbinde Sie mit... |
|
||||
| Das müssen Sie | Hier ist die Lösung |
|
||||
| Keine Ahnung | Das finde ich für Sie heraus |
|
||||
|
||||
---
|
||||
|
||||
## Dokumentation
|
||||
|
||||
### Ticket-Kommunikation
|
||||
|
||||
```
|
||||
Dokumentation - Tipps
|
||||
├── Wichtige Punkte notieren
|
||||
├── Vereinbarungen festhalten
|
||||
├── Nächste Schritte klären
|
||||
├── Zeit notieren
|
||||
└── Professionell bleiben
|
||||
```
|
||||
|
||||
### E-Mail-Kommunikation
|
||||
|
||||
```
|
||||
E-Mail - Struktur
|
||||
├── Aussagekräftiger Betreff
|
||||
├── Höfliche Anrede
|
||||
├── Klare Beschreibung
|
||||
├── Erwartete Antwort
|
||||
├── Signatur
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Feedback und Zufriedenheit
|
||||
|
||||
### Kundenzufriedenheit messen
|
||||
|
||||
```
|
||||
CSAT - Customer Satisfaction
|
||||
└── Nach Ticket-Abschluss:
|
||||
"Wie zufrieden sind Sie?"
|
||||
(Skala 1-5)
|
||||
```
|
||||
|
||||
### NPS - Net Promoter Score
|
||||
|
||||
```
|
||||
Frage: "Wie wahrscheinlich empfehlen Sie uns?"
|
||||
(0-10)
|
||||
|
||||
Berechnung:
|
||||
Promoters (9-10) - Detractors (0-6)
|
||||
= NPS (-100 bis +100)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF7-03-Support-Stufen|Zurück: Support-Stufen]]
|
||||
- [[LF1-06-Eigene-Rolle|Eigene Rolle im Betrieb]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
182
2-Ausbildungsjahr/LF8-Daten-bereitstellen/LF8-Notizen.md
Normal file
182
2-Ausbildungsjahr/LF8-Daten-bereitstellen/LF8-Notizen.md
Normal file
@@ -0,0 +1,182 @@
|
||||
# LF 8: Daten systemübergreifend bereitstellen
|
||||
|
||||
> **2. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
|
||||
|
||||
## Kernkompetenz
|
||||
|
||||
Die Schülerinnen und Schüler besitzen die Kompetenz, Daten aus dezentralen Quellen zusammenzuführen, aufzubereiten und zur weiteren Nutzung zur Verfügung zu stellen.
|
||||
|
||||
---
|
||||
|
||||
## Lernziele
|
||||
|
||||
Nach diesem Lernfeld kannst du:
|
||||
- [ ] Datenquellen analysieren und bewerten
|
||||
- [ ] Heterogene Datenquellen integrieren
|
||||
- [ ] Daten für die Weiterverarbeitung aufbereiten
|
||||
- [ ] APIs und Schnittstellen nutzen
|
||||
- [ ] Datenbanksysteme anbinden
|
||||
- [ ] Dokumentation erstellen
|
||||
|
||||
---
|
||||
|
||||
## Datenquellen
|
||||
|
||||
### Typen
|
||||
|
||||
```
|
||||
DATENQUELLEN
|
||||
├── Relationale Datenbanken
|
||||
│ ├── MySQL/MariaDB
|
||||
│ ├── PostgreSQL
|
||||
│ └── MS SQL Server
|
||||
├── NoSQL-Datenbanken
|
||||
│ ├── MongoDB (Dokument)
|
||||
│ ├── Redis (Key-Value)
|
||||
│ └── Cassandra (Spaltenorientiert)
|
||||
├── Dateien
|
||||
│ ├── CSV, JSON, XML
|
||||
│ └── Excel, PDF
|
||||
├── Web-Services
|
||||
│ ├── REST-APIs
|
||||
│ └── SOAP
|
||||
└── Cloud-Dienste
|
||||
└── AWS S3, Azure Blob, etc.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenintegration
|
||||
|
||||
### ETL-Prozess
|
||||
|
||||
```
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│ Extract │ → │ Transform│ → │ Load │ → │ Target │
|
||||
└─────────┘ └─────────┘ └─────────┘ └─────────┘
|
||||
│ │
|
||||
│ Bereinigung │
|
||||
│ Konvertierung │
|
||||
│ Aggregation │
|
||||
```
|
||||
|
||||
### Herausforderungen
|
||||
|
||||
- **Datenqualität**: Vollständigkeit, Konsistenz
|
||||
- **Formate**: Unterschiedliche Strukturen
|
||||
- **Latenz**: Echtzeit vs. Batch
|
||||
- **Security**: Authentifizierung, Autorisierung
|
||||
|
||||
---
|
||||
|
||||
## APIs (Application Programming Interface)
|
||||
|
||||
### REST-Prinzipien
|
||||
|
||||
```
|
||||
REST-Konventionen:
|
||||
├── Ressourcenorientiert (Nomen)
|
||||
├── HTTP-Methoden nutzen
|
||||
│ ├── GET → Lesen
|
||||
│ ├── POST → Erstellen
|
||||
│ ├── PUT → Ersetzen
|
||||
│ ├── PATCH → Teilaktualisierung
|
||||
│ └── DELETE → Löschen
|
||||
├── Statuscodes
|
||||
│ ├── 200 OK
|
||||
│ ├── 201 Created
|
||||
│ ├── 400 Bad Request
|
||||
│ ├── 401 Unauthorized
|
||||
│ └── 404 Not Found
|
||||
└── Stateless (zustandslos)
|
||||
```
|
||||
|
||||
### API-Beispiel
|
||||
|
||||
```python
|
||||
# Python REST-API mit Flask
|
||||
from flask import Flask, jsonify, request
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# GET - Daten abrufen
|
||||
@app.route('/api/kunden', methods=['GET'])
|
||||
def get_kunden():
|
||||
return jsonify(kunden_liste)
|
||||
|
||||
# POST - Daten erstellen
|
||||
@app.route('/api/kunden', methods=['POST'])
|
||||
def create_kunde():
|
||||
daten = request.json
|
||||
kunden_liste.append(daten)
|
||||
return jsonify(daten), 201
|
||||
|
||||
# PUT - Daten aktualisieren
|
||||
@app.route('/api/kunden/<int:id>', methods=['PUT'])
|
||||
def update_kunde(id):
|
||||
daten = request.json
|
||||
for i, k in enumerate(kunden_liste):
|
||||
if k['id'] == id:
|
||||
kunden_liste[i] = daten
|
||||
return jsonify(daten)
|
||||
return jsonify({'error': 'Not found'}), 404
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenbank-Anbindung
|
||||
|
||||
### Python mit SQLAlchemy
|
||||
|
||||
```python
|
||||
from sqlalchemy import create_engine, Column, Integer, String
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class Kunde(Base):
|
||||
__tablename__ = 'kunden'
|
||||
id = Column(Integer, primary_key=True)
|
||||
name = Column(String(100))
|
||||
email = Column(String(255))
|
||||
|
||||
# Verbindung herstellen
|
||||
engine = create_engine('sqlite:///kunden.db')
|
||||
Base.metadata.create_all(engine)
|
||||
Session = sessionmaker(bind=engine)
|
||||
session = Session()
|
||||
|
||||
# Daten abfragen
|
||||
for kunde in session.query(Kunde).all():
|
||||
print(f"{kunde.id}: {kunde.name}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Handlungsphasen
|
||||
|
||||
1. **Analysieren**: Datenquellen identifizieren, Strukturen verstehen
|
||||
2. **Planen**: Integrationskonzept erstellen
|
||||
3. **Entwickeln**: Schnittstellen implementieren
|
||||
4. **Testen**: Datenfluss prüfen
|
||||
5. **Dokumentieren**: Handhabung beschreiben
|
||||
|
||||
---
|
||||
|
||||
## Prüfungsrelevanz
|
||||
|
||||
- Wichtig für LF 12a (Abschlussprojekt)
|
||||
- Datenintegration in Projekten
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[2-Ausbildungsjahr/LF7-Cyber-physische-Systeme|Vorher: LF 7]]
|
||||
- [[2-Ausbildungsjahr/LF9-Netzwerke-Dienste|Nachher: LF 9]]
|
||||
- [[Programmiersprachen/Python|Python Vertiefung]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|
||||
32
2-Ausbildungsjahr/LF8-Datenintegration/LF8-00-Übersicht.md
Normal file
32
2-Ausbildungsjahr/LF8-Datenintegration/LF8-00-Übersicht.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Lernfeld 8: Daten systemübergreifend bereitstellen
|
||||
|
||||
## Übersicht
|
||||
|
||||
Dieses Lernfeld behandelt die Integration von Daten aus verschiedenen Quellen.
|
||||
|
||||
## Themen
|
||||
|
||||
| Nr. | Thema | Beschreibung |
|
||||
|-----|-------|-------------|
|
||||
| 8.1 | [[LF8-01-Datenquellen|Datenquellen]] | Datenbanken, APIs, Dateien |
|
||||
| 8.2 | [[LF8-02-Schnittstellen|Schnittstellen]] | REST, SOAP, GraphQL |
|
||||
| 8.3 | [[LF8-03-Datenformate|Datenformate]] | JSON, XML, CSV |
|
||||
| 8.4 | [[LF8-04-ETL-Prozesse|ETL-Prozesse]] | Extrahieren, Transformieren, Laden |
|
||||
|
||||
## Lernziele
|
||||
|
||||
- Daten aus verschiedenen Quellen integrieren
|
||||
- Schnittstellen entwickeln und nutzen
|
||||
- Datenformate konvertieren
|
||||
- ETL-Prozesse implementieren
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF7-04-Kommunikation|Zurück: Kommunikation]]
|
||||
- [[LF9-Netzwerke-Dienste|Nächstes Lernfeld: Netzwerke und Dienste]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
130
2-Ausbildungsjahr/LF8-Datenintegration/LF8-01-Datenquellen.md
Normal file
130
2-Ausbildungsjahr/LF8-Datenintegration/LF8-01-Datenquellen.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# 8.1 Datenquellen
|
||||
|
||||
## Arten von Datenquellen
|
||||
|
||||
### Datenbanken
|
||||
|
||||
```
|
||||
Datenbank-Typen
|
||||
├── Relational (MySQL, PostgreSQL, Oracle)
|
||||
├── NoSQL (MongoDB, Cassandra)
|
||||
├── Graph (Neo4j)
|
||||
└── Zeitreihen (InfluxDB)
|
||||
```
|
||||
|
||||
### Dateisysteme
|
||||
|
||||
| Format | Typ | Einsatz |
|
||||
|--------|-----|----------|
|
||||
| CSV | Text | Tabellarische Daten |
|
||||
| JSON | Text | Strukturierte Daten |
|
||||
| XML | Text | Konfiguration, Austausch |
|
||||
| Excel | Binär | Tabellenkalkulation |
|
||||
| PDF | Binär | Dokumente |
|
||||
|
||||
### Externe Quellen
|
||||
|
||||
```
|
||||
Externe Datenquellen
|
||||
├── APIs (REST, SOAP)
|
||||
├── Webservices
|
||||
├── Cloud-Speicher
|
||||
├── Stream-Daten (IoT)
|
||||
└── Drittanbieter
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenbank-Anbindung
|
||||
|
||||
### JDBC (Java)
|
||||
|
||||
```java
|
||||
// Verbindung zu Datenbank
|
||||
Connection conn = DriverManager.getConnection(
|
||||
"jdbc:mysql://localhost:3306/datenbank",
|
||||
"benutzer",
|
||||
"passwort"
|
||||
);
|
||||
|
||||
// Abfrage
|
||||
Statement stmt = conn.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM tabelle");
|
||||
```
|
||||
|
||||
### Python (SQLAlchemy)
|
||||
|
||||
```python
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
engine = create_engine(
|
||||
'postgresql://user:password@localhost:5432/database'
|
||||
)
|
||||
|
||||
# Daten lesen
|
||||
df = pd.read_sql("SELECT * FROM tabelle", engine)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Dateien einlesen
|
||||
|
||||
### CSV
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
|
||||
# CSV einlesen
|
||||
df = pd.read_csv('daten.csv')
|
||||
|
||||
# Mit Trennzeichen
|
||||
df = pd.read_csv('daten.txt', sep='\t')
|
||||
```
|
||||
|
||||
### JSON
|
||||
|
||||
```python
|
||||
import json
|
||||
|
||||
# JSON laden
|
||||
with open('daten.json') as f:
|
||||
daten = json.load(f)
|
||||
|
||||
# Zu DataFrame
|
||||
df = pd.json_normalize(daten)
|
||||
```
|
||||
|
||||
### Excel
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
|
||||
# Excel einlesen
|
||||
df = pd.read_excel('daten.xlsx')
|
||||
|
||||
# Bestimmtes Sheet
|
||||
df = pd.read_excel('daten.xlsx', sheet_name='Tabelle1')
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenbanktypen im Vergleich
|
||||
|
||||
| Kriterium | Relational | NoSQL |
|
||||
|-----------|-----------|-------|
|
||||
| Schema | Fest | Flexibel |
|
||||
| Skalierung | Vertikal | Horizontal |
|
||||
| Transaktionen | ACID | Eventual Consistency |
|
||||
| Komplexität | Mittel | Niedrig |
|
||||
| Beispiele | MySQL, PostgreSQL | MongoDB, Redis |
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF8-02-Schnittstellen|Nächstes Thema: Schnittstellen]]
|
||||
- [[LF3-Datenbanken|Datenbanken]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
185
2-Ausbildungsjahr/LF8-Datenintegration/LF8-02-Schnittstellen.md
Normal file
185
2-Ausbildungsjahr/LF8-Datenintegration/LF8-02-Schnittstellen.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# 8.2 Schnittstellen
|
||||
|
||||
## API-Typen
|
||||
|
||||
### REST (Representational State Transfer)
|
||||
|
||||
```
|
||||
REST-Prinzipien
|
||||
├── Ressourcen-orientiert
|
||||
├── Stateless
|
||||
├── Einheitliche Schnittstelle
|
||||
├── Client-Server
|
||||
└── Cache-fähig
|
||||
```
|
||||
|
||||
### REST-Endpunkte
|
||||
|
||||
```
|
||||
Beispiel: Benutzer-API
|
||||
|
||||
GET /api/benutzer → Alle Benutzer
|
||||
GET /api/benutzer/123 → Ein Benutzer
|
||||
POST /api/benutzer → Erstellen
|
||||
PUT /api/benutzer/123 → Aktualisieren
|
||||
DELETE /api/benutzer/123 → Löschen
|
||||
```
|
||||
|
||||
### REST-Beispiel
|
||||
|
||||
```javascript
|
||||
// Express.js Server
|
||||
const express = require('express');
|
||||
const app = express();
|
||||
|
||||
app.get('/api/benutzer/:id', async (req, res) => {
|
||||
const benutzer = await findBenutzer(req.params.id);
|
||||
res.json(benutzer);
|
||||
});
|
||||
|
||||
app.post('/api/benutzer', async (req, res) => {
|
||||
const neuerBenutzer = await createBenutzer(req.body);
|
||||
res.status(201).json(neuerBenutzer);
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SOAP (Simple Object Access Protocol)
|
||||
|
||||
### Unterschiede zu REST
|
||||
|
||||
| Kriterium | REST | SOAP |
|
||||
|-----------|------|------|
|
||||
| Format | JSON, XML | Nur XML |
|
||||
| Transport | HTTP | HTTP, SMTP |
|
||||
| Stateless | Ja | Optional |
|
||||
| Größe | Klein | Groß |
|
||||
|
||||
### SOAP-Beispiel
|
||||
|
||||
```xml
|
||||
<?xml version="1.0"?>
|
||||
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
||||
<soap:Header/>
|
||||
<soap:Body>
|
||||
<GetUserRequest xmlns="http://beispiel.de/api">
|
||||
<UserId>123</UserId>
|
||||
</GetUserRequest>
|
||||
</soap:Body>
|
||||
</soap:Envelope>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## GraphQL
|
||||
|
||||
### Konzepte
|
||||
|
||||
```
|
||||
GraphQL - Besonderheiten
|
||||
├── Eine Anfrage, viele Daten
|
||||
├── Client definiert benötigte Felder
|
||||
├── Stark typisiert (Schema)
|
||||
└── Keine Over- oder Underfetching
|
||||
```
|
||||
|
||||
### GraphQL-Beispiel
|
||||
|
||||
```graphql
|
||||
# Anfrage
|
||||
query {
|
||||
user(id: "123") {
|
||||
name
|
||||
email
|
||||
orders {
|
||||
id
|
||||
total
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Antwort
|
||||
{
|
||||
"data": {
|
||||
"user": {
|
||||
"name": "Max",
|
||||
"email": "max@example.com",
|
||||
"orders": [
|
||||
{ "id": "1", "total": 99.99 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API-Design Best Practices
|
||||
|
||||
### URL-Design
|
||||
|
||||
```
|
||||
Richtlinien
|
||||
├── Ressourcen plural (benutzer nicht benutzer)
|
||||
├── Bindestrich für Wörter (benutzer-profil)
|
||||
├── Kleinbuchstaben
|
||||
├── Keine Verben im Pfad
|
||||
└── Query-Parameter für Filter
|
||||
```
|
||||
|
||||
### HTTP-Statuscodes
|
||||
|
||||
| Code | Bedeutung | Verwendung |
|
||||
|------|-----------|------------|
|
||||
| 200 | OK | Erfolgreich |
|
||||
| 201 | Created | Erstellt |
|
||||
| 400 | Bad Request | Ungültige Anfrage |
|
||||
| 401 | Unauthorized | Nicht angemeldet |
|
||||
| 404 | Not Found | Nicht gefunden |
|
||||
| 500 | Server Error | Fehler |
|
||||
|
||||
---
|
||||
|
||||
## API-Dokumentation
|
||||
|
||||
### OpenAPI (Swagger)
|
||||
|
||||
```yaml
|
||||
openapi: 3.0.0
|
||||
info:
|
||||
title: Meine API
|
||||
version: 1.0.0
|
||||
paths:
|
||||
/benutzer:
|
||||
get:
|
||||
summary: Alle Benutzer
|
||||
responses:
|
||||
'200':
|
||||
description: Erfolgreich
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Benutzer'
|
||||
```
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Beschreibung |
|
||||
|------|-------------|
|
||||
| Swagger UI | Interaktive Dokumentation |
|
||||
| Postman | API-Testing |
|
||||
| Insomnia | API-Client |
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF8-01-Datenquellen|Zurück: Datenquellen]]
|
||||
- [[LF8-03-Datenformate|Nächstes Thema: Datenformate]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
199
2-Ausbildungsjahr/LF8-Datenintegration/LF8-03-Datenformate.md
Normal file
199
2-Ausbildungsjahr/LF8-Datenintegration/LF8-03-Datenformate.md
Normal file
@@ -0,0 +1,199 @@
|
||||
# 8.3 Datenformate
|
||||
|
||||
## JSON (JavaScript Object Notation)
|
||||
|
||||
### Grundstruktur
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Max Mustermann",
|
||||
"alter": 25,
|
||||
"adresse": {
|
||||
"stadt": "Berlin",
|
||||
"plz": "10115"
|
||||
},
|
||||
"hobbys": ["Lesen", "Programmieren"],
|
||||
"aktiv": true
|
||||
}
|
||||
```
|
||||
|
||||
### Datentypen
|
||||
|
||||
| Typ | Beispiel |
|
||||
|-----|----------|
|
||||
| String | "Hallo" |
|
||||
| Number | 42, 3.14 |
|
||||
| Boolean | true, false |
|
||||
| Array | [1, 2, 3] |
|
||||
| Object | {"key": "value"} |
|
||||
| Null | null |
|
||||
|
||||
### JSON in Python
|
||||
|
||||
```python
|
||||
import json
|
||||
|
||||
# String zu Dictionary
|
||||
daten = json.loads('{"name": "Max"}')
|
||||
|
||||
# Dictionary zu String
|
||||
text = json.dumps(daten, indent=2)
|
||||
|
||||
# Mit Datei
|
||||
with open('daten.json', 'w') as f:
|
||||
json.dump(daten, f, indent=2)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## XML (eXtensible Markup Language)
|
||||
|
||||
### Grundstruktur
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<benutzer>
|
||||
<name>Max Mustermann</name>
|
||||
<alter>25</alter>
|
||||
<adresse>
|
||||
<stadt>Berlin</stadt>
|
||||
</adresse>
|
||||
</benutzer>
|
||||
```
|
||||
|
||||
### XML-Attribute
|
||||
|
||||
```xml
|
||||
<benutzer id="123" typ="admin">
|
||||
<name>Max</name>
|
||||
</benutzer>
|
||||
```
|
||||
|
||||
### XML in Python
|
||||
|
||||
```python
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
# Parsen
|
||||
baum = ET.parse('daten.xml')
|
||||
wurzel = baum.getroot()
|
||||
|
||||
# Element finden
|
||||
for kind in wurzel.findall('.//kind'):
|
||||
print(kind.text)
|
||||
|
||||
# Erstellen
|
||||
root = ET.Element('daten')
|
||||
ET.SubElement(root, 'wert').text = 'test'
|
||||
baum = ET.ElementTree(root)
|
||||
baum.write('ausgabe.xml')
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CSV (Comma Separated Values)
|
||||
|
||||
### Grundstruktur
|
||||
|
||||
```csv
|
||||
Name,Alter,Stadt
|
||||
Max,25,Berlin
|
||||
Anna,30,Hamburg
|
||||
Peter,28,München
|
||||
```
|
||||
|
||||
### Mit Python
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
|
||||
# Lesen
|
||||
df = pd.read_csv('daten.csv', sep=',')
|
||||
|
||||
# Schreiben
|
||||
df.to_csv('ausgabe.csv', index=False)
|
||||
|
||||
# Mit Header überspringen
|
||||
df = pd.read_csv('daten.csv', skiprows=1)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Vergleich
|
||||
|
||||
| Kriterium | JSON | XML | CSV |
|
||||
|-----------|------|-----|-----|
|
||||
| Lesbarkeit | Gut | Gut | Gut |
|
||||
| Datentypen | Ja | Ja | Nein |
|
||||
| Komplexität | Niedrig | Mittel | Niedrig |
|
||||
| Dateigröße | Klein | Groß | Kleinest |
|
||||
| Einsatz | APIs | Konfiguration | Tabellarisch |
|
||||
|
||||
---
|
||||
|
||||
## Datenkonvertierung
|
||||
|
||||
### CSV zu JSON
|
||||
|
||||
```python
|
||||
import pandas as pd
|
||||
import json
|
||||
|
||||
# CSV lesen
|
||||
df = pd.read_csv('daten.csv')
|
||||
|
||||
# Zu JSON
|
||||
json_string = df.to_json(orient='records', indent=2)
|
||||
|
||||
# In Datei schreiben
|
||||
with open('daten.json', 'w') as f:
|
||||
f.write(json_string)
|
||||
```
|
||||
|
||||
### XML zu JSON
|
||||
|
||||
```python
|
||||
import xmltodict
|
||||
import json
|
||||
|
||||
# XML zu Dictionary
|
||||
with open('daten.xml') as f:
|
||||
daten = xmltodict.parse(f)
|
||||
|
||||
# Zu JSON
|
||||
json_string = json.dumps(daten, indent=2)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Datenvalidierung
|
||||
|
||||
### JSON Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"alter": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"required": ["name"]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF8-02-Schnittstellen|Zurück: Schnittstellen]]
|
||||
- [[LF8-04-ETL-Prozesse|Nächstes Thema: ETL-Prozesse]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
217
2-Ausbildungsjahr/LF8-Datenintegration/LF8-04-ETL-Prozesse.md
Normal file
217
2-Ausbildungsjahr/LF8-Datenintegration/LF8-04-ETL-Prozesse.md
Normal file
@@ -0,0 +1,217 @@
|
||||
# 8.4 ETL-Prozesse
|
||||
|
||||
## Was ist ETL?
|
||||
|
||||
**ETL** = Extract, Transform, Load
|
||||
|
||||
```
|
||||
ETL - Prozess
|
||||
┌─────────┐ ┌─────────────┐ ┌─────────┐
|
||||
│ Extract │ → │ Transform │ → │ Load │
|
||||
│(Extrahieren)│ │(Transformieren)│ │(Laden) │
|
||||
└─────────┘ └─────────────┘ └─────────┘
|
||||
```
|
||||
|
||||
### Anwendungsfälle
|
||||
|
||||
| Fall | Beschreibung |
|
||||
|------|-------------|
|
||||
| Data Warehouse | Daten für Analysen konsolidieren |
|
||||
| Migration | Daten auf neues System übertragen |
|
||||
| Integration | Daten aus verschiedenen Quellen zusammenführen |
|
||||
| Reporting | Daten für Reports aufbereiten |
|
||||
|
||||
---
|
||||
|
||||
## Extract (Extraktion)
|
||||
|
||||
### Extraktionsarten
|
||||
|
||||
| Typ | Beschreibung |
|
||||
|-----|-------------|
|
||||
| Full Load | Alle Daten laden |
|
||||
| Incremental | Nur neue/geänderte Daten |
|
||||
| CDC | Change Data Capture |
|
||||
|
||||
### Quelldaten
|
||||
|
||||
```
|
||||
Extraktionsquellen
|
||||
├── Datenbanken
|
||||
├── Dateien (CSV, JSON, XML)
|
||||
├── APIs
|
||||
└── Streams
|
||||
```
|
||||
|
||||
### Beispiel
|
||||
|
||||
```python
|
||||
# Datenbank
|
||||
df_quelle = pd.read_sql("SELECT * FROM tabelle", conn)
|
||||
|
||||
# API
|
||||
response = requests.get('https://api.example.com/daten')
|
||||
df_quelle = pd.DataFrame(response.json())
|
||||
|
||||
# Datei
|
||||
df_quelle = pd.read_csv('daten.csv')
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Transform (Transformation)
|
||||
|
||||
### Transformationstypen
|
||||
|
||||
```
|
||||
Transformationen - Übersicht
|
||||
├── Datentyp-Konvertierung
|
||||
├── Berechnungen
|
||||
├── Aggregationen
|
||||
├── Filterung
|
||||
├── JOINs
|
||||
├── Normalisierung
|
||||
└── Bereinigung
|
||||
```
|
||||
|
||||
### Bereinigung
|
||||
|
||||
```python
|
||||
# Fehlende Werte
|
||||
df['alter'].fillna(df['alter'].mean(), inplace=True)
|
||||
|
||||
# Duplikate entfernen
|
||||
df.drop_duplicates(inplace=True)
|
||||
|
||||
# Groß-/Kleinschreibung
|
||||
df['name'] = df['name'].str.lower()
|
||||
|
||||
# Trimmen
|
||||
df['name'] = df['name'].str.strip()
|
||||
```
|
||||
|
||||
### Berechnungen
|
||||
|
||||
```python
|
||||
# Neue Spalte
|
||||
df['umsatz_mit_mwst'] = df['umsatz'] * 1.19
|
||||
|
||||
# Bedingte Werte
|
||||
df['rabatt'] = df.apply(
|
||||
lambda x: x['umsatz'] * 0.1 if x['umsatz'] > 100 else 0,
|
||||
axis=1
|
||||
)
|
||||
```
|
||||
|
||||
### Aggregation
|
||||
|
||||
```python
|
||||
# Gruppieren und aggregieren
|
||||
df_grouped = df.groupby('kategorie').agg({
|
||||
'umsatz': 'sum',
|
||||
'anzahl': 'count'
|
||||
}).reset_index()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Load (Laden)
|
||||
|
||||
### Ladestrategien
|
||||
|
||||
| Typ | Beschreibung |
|
||||
|-----|-------------|
|
||||
| Full Load | Tabelle komplett ersetzen |
|
||||
| Incremental Load | Nur neue Daten hinzufügen |
|
||||
| Upsert | Update oder Insert |
|
||||
|
||||
### Ziel-Systeme
|
||||
|
||||
```
|
||||
Lade-Ziele
|
||||
├── Datenbank (MySQL, PostgreSQL)
|
||||
├── Data Warehouse (Snowflake, BigQuery)
|
||||
├── Datei (CSV, JSON)
|
||||
└── Cloud Storage
|
||||
```
|
||||
|
||||
### Beispiel
|
||||
|
||||
```python
|
||||
# In Datenbank laden
|
||||
df.to_sql('ziel_tabelle', conn, if_exists='replace', index=False)
|
||||
|
||||
# In CSV schreiben
|
||||
df.to_csv('ausgabe.csv', index=False)
|
||||
|
||||
# In Excel schreiben
|
||||
df.to_excel('ausgabe.xlsx', index=False)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Orchestrierung
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Beschreibung |
|
||||
|------|-------------|
|
||||
| Apache Airflow | Workflow-Orchestrierung |
|
||||
| Luigi | Python-basiert |
|
||||
| dbt | Data Transformation |
|
||||
| Talend | ETL-Werkzeug |
|
||||
| Apache NiFi | Datenfluss |
|
||||
|
||||
### Airflow DAG
|
||||
|
||||
```python
|
||||
from airflow import DAG
|
||||
from airflow.operators.python import PythonOperator
|
||||
from datetime import datetime
|
||||
|
||||
dag = DAG('etl_pipeline', start_date=datetime(2024, 1, 1))
|
||||
|
||||
extract = PythonOperator(
|
||||
task_id='extract',
|
||||
python_callable=extract_daten,
|
||||
dag=dag
|
||||
)
|
||||
|
||||
transform = PythonOperator(
|
||||
task_id='transform',
|
||||
python_callable=transform_daten,
|
||||
dag=dag
|
||||
)
|
||||
|
||||
load = PythonOperator(
|
||||
task_id='load',
|
||||
python_callable=load_daten,
|
||||
dag=dag
|
||||
)
|
||||
|
||||
extract >> transform >> load
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fehlerbehandlung
|
||||
|
||||
```
|
||||
ETL - Fehlerstrategien
|
||||
├── Logging
|
||||
├── Benachrichtigung
|
||||
├── Retry-Logik
|
||||
├── Quarantäne (Problem-Daten)
|
||||
└── Monitoring
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF8-03-Datenformate|Zurück: Datenformate]]
|
||||
- [[LF9-Netzwerke-Dienste|Nächstes Lernfeld: Netzwerke und Dienste]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
32
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-00-Übersicht.md
Normal file
32
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-00-Übersicht.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Lernfeld 9: Netzwerke und Dienste bereitstellen
|
||||
|
||||
## Übersicht
|
||||
|
||||
Dieses Lernfeld behandelt die Bereitstellung von Netzwerken und Netzwerkdiensten.
|
||||
|
||||
## Themen
|
||||
|
||||
| Nr. | Thema | Beschreibung |
|
||||
|-----|-------|-------------|
|
||||
| 9.1 | [[LF9-01-Netzwerkdienste|Netzwerkdienste]] | DHCP, DNS, HTTP |
|
||||
| 9.2 | [[LF9-02-Server|Server]] | Betrieb, Virtualisierung |
|
||||
| 9.3 | [[LF9-03-Virtualisierung|Virtualisierung]] | Container, Cloud |
|
||||
| 9.4 | [[LF9-04-Monitoring|Monitoring]] | Überwachung, Alerts |
|
||||
|
||||
## Lernziele
|
||||
|
||||
- Netzwerkdienste konfigurieren
|
||||
- Server betreiben
|
||||
- Virtualisierung verstehen
|
||||
- Systeme überwachen
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF8-04-ETL-Prozesse|Zurück: ETL-Prozesse]]
|
||||
- [[Wissen/Wirtschafts-Sozialkunde/WISO-Zusammenfassung|WISO: Betriebswirtschaft]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
@@ -0,0 +1,157 @@
|
||||
# 9.1 Netzwerkdienste
|
||||
|
||||
## Wichtige Netzwerkdienste
|
||||
|
||||
### Übersicht
|
||||
|
||||
```
|
||||
Netzwerkdienste
|
||||
├── DHCP (IP-Adressen)
|
||||
├── DNS (Namen auflösen)
|
||||
├── HTTP/HTTPS (Web)
|
||||
├── SMTP (E-Mail)
|
||||
├── FTP/SFTP (Dateien)
|
||||
├── SSH (Remote-Zugriff)
|
||||
└── LDAP (Verzeichnis)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DHCP (Dynamic Host Configuration Protocol)
|
||||
|
||||
### Funktion
|
||||
|
||||
```
|
||||
DHCP - Ablauf
|
||||
Client → DHCP Discover (Broadcast)
|
||||
Server → DHCP Offer
|
||||
Client → DHCP Request
|
||||
Server → DHCP Acknowledge
|
||||
```
|
||||
|
||||
### Konfiguration
|
||||
|
||||
```
|
||||
DHCP-Server - Einstellungen
|
||||
├── IP-Bereich (Pool)
|
||||
├── Subnetzmaske
|
||||
├── Gateway
|
||||
├── DNS-Server
|
||||
├── Lease Time
|
||||
└── Reservierungen
|
||||
```
|
||||
|
||||
### Beispiel
|
||||
|
||||
```yaml
|
||||
# DHCP-Konfiguration (ISC DHCP)
|
||||
subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||
range 192.168.1.100 192.168.1.200;
|
||||
option routers 192.168.1.1;
|
||||
option domain-name-servers 8.8.8.8, 8.8.4.4;
|
||||
default-lease-time 600;
|
||||
max-lease-time 7200;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DNS (Domain Name System)
|
||||
|
||||
### Aufbau
|
||||
|
||||
```
|
||||
DNS - Hierarchie
|
||||
. (Root)
|
||||
├── de
|
||||
│ └── example.de
|
||||
├── com
|
||||
│ └── example.com
|
||||
└── org
|
||||
└── wikipedia.org
|
||||
```
|
||||
|
||||
### DNS-Records
|
||||
|
||||
| Typ | Bedeutung | Beispiel |
|
||||
|-----|----------|----------|
|
||||
| A | IPv4-Adresse | example.com → 93.184.216.34 |
|
||||
| AAAA | IPv6-Adresse | example.com → ... |
|
||||
| CNAME | Alias | www → example.com |
|
||||
| MX | Mail-Server | @ → mail.example.com |
|
||||
| TXT | Text | v=spf1 include:_spf.google.com ~all |
|
||||
|
||||
### nslookup/dig
|
||||
|
||||
```bash
|
||||
# DNS-Abfrage
|
||||
nslookup example.com
|
||||
dig example.com
|
||||
|
||||
# Bestimmter Record-Typ
|
||||
dig MX example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## HTTP/HTTPS
|
||||
|
||||
### HTTP-Request
|
||||
|
||||
```
|
||||
GET /index.html HTTP/1.1
|
||||
Host: www.example.com
|
||||
User-Agent: Mozilla/5.0
|
||||
Accept: text/html
|
||||
```
|
||||
|
||||
### HTTPS/TLS
|
||||
|
||||
```
|
||||
HTTPS - Ablauf
|
||||
1. Client → Server: Hallo
|
||||
2. Server → Client: Zertifikat + Public Key
|
||||
3. Client: Zertifikat prüfen
|
||||
4. Client → Server: Pre-Master-Secret (verschlüsselt)
|
||||
5. Beide: Session Key generieren
|
||||
6. Verschlüsselte Kommunikation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Weitere Dienste
|
||||
|
||||
### SSH (Secure Shell)
|
||||
|
||||
```bash
|
||||
# Verbinden
|
||||
ssh benutzer@server.example.com
|
||||
|
||||
# Datei kopieren
|
||||
scp datei.txt benutzer@server:/pfad/
|
||||
|
||||
# Schlüssel generieren
|
||||
ssh-keygen -t ed25519
|
||||
```
|
||||
|
||||
### SMTP (E-Mail-Versand)
|
||||
|
||||
```
|
||||
SMTP - Ablauf
|
||||
1. EHLO client
|
||||
2. MAIL FROM: absender@example.com
|
||||
3. RCPT TO: empfaenger@example.com
|
||||
4. DATA
|
||||
5. Nachricht
|
||||
6. QUIT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF9-02-Server|Nächstes Thema: Server]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
179
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-02-Server.md
Normal file
179
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-02-Server.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# 9.2 Server
|
||||
|
||||
## Server-Grundlagen
|
||||
|
||||
### Serverarten
|
||||
|
||||
| Typ | Aufgabe |
|
||||
|-----|----------|
|
||||
| Webserver | HTTP bereitstellen |
|
||||
| Datenbankserver | Daten speichern |
|
||||
| Fileserver | Dateien bereitstellen |
|
||||
| Mailserver | E-Mail |
|
||||
| Druckserver | Drucker verwalten |
|
||||
| Authentifizierungsserver | Anmeldung (AD, LDAP) |
|
||||
|
||||
### Betriebssysteme
|
||||
|
||||
```
|
||||
Server-Betriebssysteme
|
||||
├── Windows Server
|
||||
│ ├── 2019
|
||||
│ └── 2022
|
||||
├── Linux
|
||||
│ ├── Ubuntu Server
|
||||
│ ├── CentOS/RHEL
|
||||
│ └── SUSE
|
||||
└── BSD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Linux-Server
|
||||
|
||||
### Grundbefehle
|
||||
|
||||
```bash
|
||||
# Paketverwaltung (Debian/Ubuntu)
|
||||
apt update
|
||||
apt upgrade
|
||||
apt install paketname
|
||||
|
||||
# Systemd
|
||||
systemctl start dienst
|
||||
systemctl stop dienst
|
||||
systemctl status dienst
|
||||
systemctl enable dienst
|
||||
|
||||
# Prozesse
|
||||
ps aux
|
||||
top
|
||||
htop
|
||||
```
|
||||
|
||||
### Benutzerverwaltung
|
||||
|
||||
```bash
|
||||
# Benutzer anlegen
|
||||
sudo useradd -m benutzername
|
||||
|
||||
# Passwort ändern
|
||||
sudo passwd benutzername
|
||||
|
||||
# Zur Gruppe hinzufügen
|
||||
sudo usermod -aG gruppe benutzername
|
||||
|
||||
# Benutzer löschen
|
||||
sudo userdel benutzername
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Windows Server
|
||||
|
||||
### Rollen
|
||||
|
||||
```
|
||||
Windows Server Rollen
|
||||
├── Active Directory (AD DS)
|
||||
├── DNS-Server
|
||||
├── DHCP-Server
|
||||
├── IIS (Webserver)
|
||||
├── Dateiserver
|
||||
├── Drucker-Server
|
||||
└── Hyper-V
|
||||
```
|
||||
|
||||
### PowerShell
|
||||
|
||||
```powershell
|
||||
# Dienst starten
|
||||
Start-Service -Name "Spooler"
|
||||
|
||||
# Prozesse anzeigen
|
||||
Get-Process
|
||||
|
||||
# Benutzer anlegen
|
||||
New-LocalUser -Name "Benutzer" -Password (ConvertTo-SecureString "Passwort" -AsPlainText -Force)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Webserver
|
||||
|
||||
### Apache
|
||||
|
||||
```apache
|
||||
# Virtual Host
|
||||
<VirtualHost *:80>
|
||||
ServerName example.com
|
||||
DocumentRoot /var/www/html
|
||||
|
||||
<Directory /var/www/html>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
### Nginx
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name example.com;
|
||||
|
||||
root /var/www/html;
|
||||
index index.html index.php;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass unix:/var/run/php/php-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Server-Hardware
|
||||
|
||||
### Komponenten
|
||||
|
||||
| Komponente | Bedeutung |
|
||||
|------------|----------|
|
||||
| CPU | Rechenleistung |
|
||||
| RAM | Arbeitsspeicher |
|
||||
| Festplatte | Speicher (SSD bevorzugen) |
|
||||
| Netzwerk | Bandbreite |
|
||||
| USV | Ausfallschutz |
|
||||
|
||||
### RAID
|
||||
|
||||
```
|
||||
RAID - Stufen
|
||||
├── RAID 0: Striping (keine Redundanz)
|
||||
├── RAID 1: Mirroring (Spiegelung)
|
||||
├── RAID 5: Parität (min. 3 Platten)
|
||||
├── RAID 6: Doppelte Parität
|
||||
└── RAID 10: Spiegel + Striping
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF9-01-Netzwerkdienste|Zurück: Netzwerkdienste]]
|
||||
- [[LF9-03-Virtualisierung|Nächstes Thema: Virtualisierung]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
@@ -0,0 +1,175 @@
|
||||
# 9.3 Virtualisierung
|
||||
|
||||
## Virtualisierung - Grundlagen
|
||||
|
||||
### Was ist Virtualisierung?
|
||||
|
||||
```
|
||||
Virtualisierung
|
||||
Mehrere virtuelle Maschinen auf einer
|
||||
physischen Hardware betreiben
|
||||
```
|
||||
|
||||
### Vorteile
|
||||
|
||||
| Vorteil | Beschreibung |
|
||||
|---------|-------------|
|
||||
| Kosteneinsparung | Weniger Hardware |
|
||||
| Flexibilität | Schnell bereitgestellt |
|
||||
| Isolation | Getrennte Umgebungen |
|
||||
| Skalierung | Leicht erweiterbar |
|
||||
| Testumgebung | Schnell aufgesetzt |
|
||||
|
||||
---
|
||||
|
||||
## Virtualisierungstypen
|
||||
|
||||
### Full Virtualization
|
||||
|
||||
```
|
||||
Gast-OS läuft unverändert
|
||||
├── VMware Workstation
|
||||
├── VirtualBox
|
||||
└── Hyper-V
|
||||
```
|
||||
|
||||
### Para-Virtualization
|
||||
|
||||
```
|
||||
Gast-OS weiß von Virtualisierung
|
||||
├── Xen
|
||||
└── Citrix XenServer
|
||||
```
|
||||
|
||||
### Container-Virtualisierung
|
||||
|
||||
```
|
||||
Leichtgewichtige Virtualisierung
|
||||
├── Docker
|
||||
├── Podman
|
||||
└── Kubernetes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Docker
|
||||
|
||||
### Grundlagen
|
||||
|
||||
```
|
||||
Docker - Begriffe
|
||||
├── Image: Vorlage (Template)
|
||||
├── Container: Laufende Instanz
|
||||
├── Dockerfile: Image-Beschreibung
|
||||
├── Registry: Image-Speicher
|
||||
└── Volume: Persistenter Speicher
|
||||
```
|
||||
|
||||
### Docker-Befehle
|
||||
|
||||
```bash
|
||||
# Container starten
|
||||
docker run -d -p 8080:80 nginx
|
||||
|
||||
# Container auflisten
|
||||
docker ps
|
||||
docker ps -a
|
||||
|
||||
# Container stoppen
|
||||
docker stop container_id
|
||||
|
||||
# Image bauen
|
||||
docker build -t mein-image .
|
||||
|
||||
# Container entfernen
|
||||
docker rm container_id
|
||||
```
|
||||
|
||||
### Dockerfile
|
||||
|
||||
```dockerfile
|
||||
# Basis-Image
|
||||
FROM node:18-alpine
|
||||
|
||||
# Arbeitsverzeichnis
|
||||
WORKDIR /app
|
||||
|
||||
# Dateien kopieren
|
||||
COPY package*.json ./
|
||||
COPY . .
|
||||
|
||||
# Abhängigkeiten installieren
|
||||
RUN npm install
|
||||
|
||||
# Port freigeben
|
||||
EXPOSE 3000
|
||||
|
||||
# Startbefehl
|
||||
CMD ["node", "server.js"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kubernetes
|
||||
|
||||
### Architektur
|
||||
|
||||
```
|
||||
Kubernetes - Komponenten
|
||||
├── Master Node
|
||||
│ ├── API Server
|
||||
│ ├── Scheduler
|
||||
│ ├── Controller Manager
|
||||
│ └── etcd
|
||||
├── Worker Nodes
|
||||
│ ├── Kubelet
|
||||
│ ├── Kube Proxy
|
||||
│ └── Container Runtime
|
||||
└── Add-ons (DNS, Dashboard)
|
||||
```
|
||||
|
||||
### Kubernetes-Objekte
|
||||
|
||||
| Objekt | Beschreibung |
|
||||
|--------|-------------|
|
||||
| Pod | Kleinste Einheit (1+ Container) |
|
||||
| Deployment | Replikate, Updates |
|
||||
| Service | Netzwerkzugriff |
|
||||
| Ingress | HTTP-Routing |
|
||||
| ConfigMap | Konfiguration |
|
||||
| Secret | Sensitive Daten |
|
||||
|
||||
---
|
||||
|
||||
## Cloud-Computing
|
||||
|
||||
### Service-Modelle
|
||||
|
||||
```
|
||||
Cloud - Modelle
|
||||
├── IaaS: Infrastructure as a Service
|
||||
│ └── Virtuelle Maschinen, Netzwerk
|
||||
├── PaaS: Platform as a Service
|
||||
│ └── Laufzeitumgebung
|
||||
└── SaaS: Software as a Service
|
||||
└── Fertige Anwendung
|
||||
```
|
||||
|
||||
### Anbieter
|
||||
|
||||
| Anbieter | Service |
|
||||
|----------|----------|
|
||||
| AWS | EC2, S3, Lambda |
|
||||
| Azure | VMs, Blob, Functions |
|
||||
| Google Cloud | Compute Engine, Cloud Storage |
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF9-02-Server|Zurück: Server]]
|
||||
- [[LF9-04-Monitoring|Nächstes Thema: Monitoring]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
176
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-04-Monitoring.md
Normal file
176
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-04-Monitoring.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# 9.4 Monitoring
|
||||
|
||||
## Monitoring - Grundlagen
|
||||
|
||||
### Was wird überwacht?
|
||||
|
||||
```
|
||||
Monitoring-Bereiche
|
||||
├── Verfügbarkeit (Ist das System erreichbar?)
|
||||
├── Performance (CPU, RAM, Disk)
|
||||
├── Netzwerk (Traffic, Latenz)
|
||||
├── Anwendungen (Logs, Fehler)
|
||||
└── Sicherheit (Eindringlinge)
|
||||
```
|
||||
|
||||
### Wichtige Metriken
|
||||
|
||||
| Metrik | Beschreibung | Beispiel |
|
||||
|--------|-------------|----------|
|
||||
| CPU | Auslastung | < 80% |
|
||||
| RAM | Speicherauslastung | < 85% |
|
||||
| Disk | Festplattennutzung | < 90% |
|
||||
| Network | Durchsatz | 100 Mbps |
|
||||
| Latency | Antwortzeit | < 200ms |
|
||||
|
||||
---
|
||||
|
||||
## Monitoring-Tools
|
||||
|
||||
### Nagios
|
||||
|
||||
```
|
||||
Nagios - Features
|
||||
├── Host-Überwachung
|
||||
├── Service-Überwachung
|
||||
├── Alerting
|
||||
├── Plugins
|
||||
└── Web-Interface
|
||||
```
|
||||
|
||||
### Prometheus + Grafana
|
||||
|
||||
```
|
||||
Stack
|
||||
├── Prometheus: Metriken sammeln
|
||||
├── Alertmanager: Alarme
|
||||
├── Grafana: Visualisierung
|
||||
└── Exporters: Datenquellen
|
||||
```
|
||||
|
||||
### Prometheus - Beispiel
|
||||
|
||||
```yaml
|
||||
# prometheus.yml
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: 'node'
|
||||
static_configs:
|
||||
- targets: ['localhost:9100']
|
||||
```
|
||||
|
||||
### Grafana Dashboard
|
||||
|
||||
```
|
||||
Grafana - Verwendung
|
||||
1. Datenquelle hinzufügen (Prometheus)
|
||||
2. Dashboard erstellen
|
||||
3. Panels konfigurieren (Graph, Stat, Table)
|
||||
4. Alerts einrichten
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Logging
|
||||
|
||||
### Log-Management
|
||||
|
||||
```
|
||||
Log-Stufen
|
||||
├── DEBUG: Detaillierte Informationen
|
||||
├── INFO: Allgemeine Informationen
|
||||
├── WARNING: Warnungen
|
||||
├── ERROR: Fehler
|
||||
└── CRITICAL: Kritische Fehler
|
||||
```
|
||||
|
||||
### Zentrales Logging
|
||||
|
||||
```
|
||||
ELK-Stack
|
||||
├── Elasticsearch: Suchmaschine
|
||||
├── Logstash: Verarbeitung
|
||||
├── Kibana: Visualisierung
|
||||
└── Beats: Sammlung
|
||||
```
|
||||
|
||||
### Logging in Python
|
||||
|
||||
```python
|
||||
import logging
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info("Anwendung gestartet")
|
||||
logger.error("Fehler aufgetreten")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Alerting
|
||||
|
||||
### Alert-Regeln
|
||||
|
||||
```yaml
|
||||
groups:
|
||||
- name: example
|
||||
rules:
|
||||
- alert: HighCPU
|
||||
expr: cpu_usage > 80
|
||||
for: 5m
|
||||
labels:
|
||||
severity: warning
|
||||
annotations:
|
||||
summary: "Hohe CPU-Auslastung auf {{ $labels.instance }}"
|
||||
```
|
||||
|
||||
### Benachrichtigungswege
|
||||
|
||||
| Kanal | Einsatz |
|
||||
|-------|----------|
|
||||
| E-Mail | Standard |
|
||||
| Slack | Team-Kommunikation |
|
||||
| PagerDuty | Incident Management |
|
||||
| SMS | Kritische Alarme |
|
||||
|
||||
---
|
||||
|
||||
## Verfügbarkeit
|
||||
|
||||
### Uptime
|
||||
|
||||
```
|
||||
Uptime-Berechnung
|
||||
99% → 7,3 Stunden/Jahr offline
|
||||
99,9% → 8,7 Stunden/Jahr offline
|
||||
99,99% → 52 Minuten/Jahr offline
|
||||
99,999% → 5 Minuten/Jahr offline
|
||||
```
|
||||
|
||||
### Checks
|
||||
|
||||
```
|
||||
Verfügbarkeitsprüfung
|
||||
├── Ping
|
||||
├── Port-Check
|
||||
├── HTTP-Response
|
||||
├── Zertifikat
|
||||
└── Transaktion
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[LF9-03-Virtualisierung|Zurück: Virtualisierung]]
|
||||
- [[Wissen/Wirtschafts-Sozialkunde/WISO-Zusammenfassung|WISO: Betriebswirtschaft]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024*
|
||||
187
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-Notizen.md
Normal file
187
2-Ausbildungsjahr/LF9-Netzwerke-Dienste/LF9-Notizen.md
Normal file
@@ -0,0 +1,187 @@
|
||||
# LF 9: Netzwerke und Dienste bereitstellen
|
||||
|
||||
> **2. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
|
||||
|
||||
## Kernkompetenz
|
||||
|
||||
Die Schülerinnen und Schüler verfügen über die Kompetenz, Netzwerke und Dienste zu planen, zu konfigurieren und zu erweitern.
|
||||
|
||||
---
|
||||
|
||||
## Lernziele
|
||||
|
||||
Nach diesem Lernfeld kannst du:
|
||||
- [ ] Anforderungen an Netzwerke und Dienste ermitteln
|
||||
- [ ] Netzwerkkomponenten auswählen
|
||||
- [ ] Dienste konfigurieren (DNS, DHCP, etc.)
|
||||
- [ ] Netzwerksicherheit implementieren
|
||||
- [ ] Funktionsprüfungen durchführen
|
||||
- [ ] Dokumentation erstellen
|
||||
|
||||
---
|
||||
|
||||
## Netzwerkdienste
|
||||
|
||||
### DNS (Domain Name System)
|
||||
|
||||
**Aufgabe**: Namen zu IP-Adressen auflösen
|
||||
|
||||
**Zonentypen:**
|
||||
- **Master**: Originaldaten, Schreibzugriff
|
||||
- **Slave**: Kopie vom Master
|
||||
- **Forward**: Name → IP
|
||||
- **Reverse**: IP → Name
|
||||
|
||||
**Beispiel named.conf:**
|
||||
```
|
||||
zone "example.com" {
|
||||
type master;
|
||||
file "db.example.com";
|
||||
};
|
||||
```
|
||||
|
||||
### DHCP (Dynamic Host Configuration Protocol)
|
||||
|
||||
**Aufgabe**: IP-Konfiguration automatisch vergeben
|
||||
|
||||
**Konfigurationsbeispiel:**
|
||||
```
|
||||
subnet 192.168.1.0 netmask 255.255.255.0 {
|
||||
range 192.168.1.100 192.168.1.200;
|
||||
option routers 192.168.1.1;
|
||||
option domain-name-servers 8.8.8.8, 8.8.4.4;
|
||||
default-lease-time 86400;
|
||||
}
|
||||
```
|
||||
|
||||
### Weitere Dienste
|
||||
|
||||
| Dienst | Port | Beschreibung |
|
||||
|--------|------|--------------|
|
||||
| HTTP | 80/443 | Webserver |
|
||||
| FTP | 21 | Dateiübertragung |
|
||||
| SSH | 22 | Sichere Shell |
|
||||
| SMTP | 25 | E-Mail-Versand |
|
||||
| IMAP/POP3 | 143/110 | E-Mail-Abruf |
|
||||
| LDAP | 389 | Verzeichnisdienst |
|
||||
| SNMP | 161/162 | Netzwerküberwachung |
|
||||
|
||||
---
|
||||
|
||||
## Netzwerksicherheit
|
||||
|
||||
### Firewall
|
||||
|
||||
**Typen:**
|
||||
- **Paketfilter**: Layer 3/4
|
||||
- **Stateful Inspection**: Verbindungsverfolgung
|
||||
- **Application Layer Gateway**: Layer 7
|
||||
|
||||
**iptables-Beispiel:**
|
||||
```bash
|
||||
# Eingehend blocken, ausgehend erlauben
|
||||
iptables -P INPUT DROP
|
||||
iptables -P OUTPUT ACCEPT
|
||||
# Lokale Kommunikation erlauben
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
# SSH erlauben
|
||||
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
# Bestehende Verbindungen erlauben
|
||||
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||
```
|
||||
|
||||
### VPN (Virtual Private Network)
|
||||
|
||||
**Arten:**
|
||||
- **Site-to-Site**: Netzwerk-zu-Netzwerk
|
||||
- **Remote Access**: Einzelner Client
|
||||
|
||||
**Protokolle:**
|
||||
- **IPsec**: Sicher, weit verbreitet
|
||||
- **OpenVPN**: Open Source, flexibel
|
||||
- **WireGuard**: Modern, einfach
|
||||
|
||||
---
|
||||
|
||||
## VLAN (Virtual Local Area Network)
|
||||
|
||||
### VLAN-Konzepte
|
||||
|
||||
```
|
||||
┌────────────────────────────────────┐
|
||||
│ Switch │
|
||||
├──────┬──────┬──────┬─────────────┤
|
||||
│ VLAN10│ VLAN20│ VLAN30│ Native │
|
||||
│ (Mgmt)│ (Data)│ (Voice)│ │
|
||||
└──────┴──────┴──────┴─────────────┘
|
||||
```
|
||||
|
||||
**VLAN-Tagging (802.1Q):**
|
||||
- Jeder Frame erhält VLAN-ID
|
||||
- Tagged Frames über Trunk-Ports
|
||||
|
||||
### Routing zwischen VLANs
|
||||
|
||||
```
|
||||
┌────────┐ ┌────────┐
|
||||
│ VLAN10 │──────│ │
|
||||
│ 192.168.10.0/24 │ Router│
|
||||
├────────┤ │ │ ┌────────┐
|
||||
│ VLAN20 │──────│ │──────│ VLAN30 │
|
||||
│ 192.168.20.0/24 │ │ │ 192.168.30.0/24
|
||||
└────────┘ └────────┘ └────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Netzwerk-Monitoring
|
||||
|
||||
### Tools
|
||||
|
||||
| Tool | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| Nagios | Monitoring | Verfügbarkeitsprüfung |
|
||||
| Zabbix | Monitoring | Umfassend |
|
||||
| Wireshark | Analyse | Paket Sniffing |
|
||||
| tcpdump | Analyse | Kommandozeile |
|
||||
| Cacti | Visualisierung | Graphen |
|
||||
|
||||
### SNMP (Simple Network Management Protocol)
|
||||
|
||||
**Komponenten:**
|
||||
- **Manager**: Überwachungssystem
|
||||
- **Agent**: Auf überwachtem Gerät
|
||||
- **MIB**: Management Information Base
|
||||
|
||||
**SNMP-Versionen:**
|
||||
- v1: Keine Sicherheit
|
||||
- v2c: Performance, keine Sicherheit
|
||||
- v3: Authentifizierung und Verschlüsselung
|
||||
|
||||
---
|
||||
|
||||
## Handlungsphasen
|
||||
|
||||
1. **Informieren**: Anforderungen erheben, recherchieren
|
||||
2. **Planen**: Konzept erstellen, Komponenten wählen
|
||||
3. **Konfigurieren**: Dienste einrichten, testen
|
||||
4. **Dokumentieren**: Konfiguration beschreiben
|
||||
5. **Reflektieren**: Optimierungsmöglichkeiten finden
|
||||
|
||||
---
|
||||
|
||||
## Prüfungsrelevanz
|
||||
|
||||
- Wichtig für Systemintegration
|
||||
- Netzwerkkenntnisse in Teil 2
|
||||
|
||||
---
|
||||
|
||||
## Querverweise
|
||||
|
||||
- [[2-Ausbildungsyear/LF8-Daten-bereitstellen|Vorher: LF 8]]
|
||||
- [[3-Ausbildungsyear/LF10a-Benutzeroberflächen|Nachher: LF 10a]]
|
||||
|
||||
---
|
||||
|
||||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|
||||
Reference in New Issue
Block a user