DevOps Grundlagen
Video2Brain - DevOps Grundlagen
Lesetipp
- DevOps - Phoenix Project - Die DevOps Story
Allgemeines
- Best Practice-Modell
- Automatisierung
- Eisatz von Tools
- Virtualisierung
- Nächste Generation einen Systemadminstrators
- Verbindung Entwicklung und Betrieb
Tätigkeiten
- Automatisierung von Systemadminstration
- Sicherstellen des Betriebs von Anwendungen
- Bereitstellungen für Software Deployment
- Entwurf von techn. Architekturen
Berufsbild - Kenntnisse
- Cloudanbieter kennen (AWS/Azure/GCP)
- Automatisierung von Cloud-Bereitstellungsprozesse
- Integration hybrider Cloud Systeme
- Kenntnisse PaaS Lösungen (z.B DB -> Cosmos , Applicationshosting)
- Lambda Funktionen
- OS Administration (Windows/linux)
- Scripting (Bash/Powershell)
- Konfigurationsmanagement
- Container
- Perfomance und Problemanalyse
- Versionskontrollsysteme (GIT)
- Softwarequalität (Sonarqube)
- CI Systeme (Jenkins, Bamboo)
- Orchestrierung von Systemumgebungen (Openstack, Terraform)
- Agiles Mindset (Scrum, Kanban)
- Kollaborationstools (Jira, Confluence)
Gefahren bei potenziellen Arbeitgebern
- "billiger Entwickler" + "Betreiber der Anwendung"
- Glassdoor Berichte
- Fragen
- Seit wann wird automatisiert?
- Wieviele Devops Ingenieure?
- Welcher Toolstack? Inwieweit in Benutzung?
- Entscheidungsspielraum Toolstack
- Legacy Anwendungen?
Vorteile von DevOps - Warum?
- Agile Transition (Scrum/Kanban)
- technisches Umfeld
- Zunehmenende Komplexität
- Sicherstellen eines Qualitätsnivieaus
- Fokus auf Wertschöpfung
Vorwände - Widersprüche
- Einzigartigkeit
- Security & Compliance
- Trennung von Entwicklung und Betrieb
- Security muss von Beginn an berücksichtigt werden
- Automatisierung von Sicherheit
- Keine AdHoc Zugriffe
- Least Privilege Prinzip
- Audit Logs als Basis
- Schneller Code in Produktion
- Organisationsstrukur passt nicht zu Devops
- Kommunikationstools
- Verteilung von Teams
- regelmäßiger persönlicher Austausch
- Legacy Ressourcen und Systeme
- alte Systeme
- jedes System hat manuelle Vorgänge
- Fähigkeiten ausbauen
Eckpfeiler - Kultur
- Eigenverantwortung
- Verantwortung des Teams fpr das Ergebnis
- Fähigkeit "NEIN" zu sagen
- Ende des "Shame Game"
- Eigentum von Ressourcen
- Zusammenarbeit
- Interdisziplinare Kallaboration (Business,Developement,DevOps)
- Leiter/Manager Teil des Teams
- Vertrauen
- kontinuierliches Lernen
- Lernen fördern - mit Anreizen versehen
- Teilen von Wissen
- Möglichkeiten des Selbststudium
- Brownbag Sessions
- "Post Mortem" für gemeinsames Lernen
- Basis für POC/MVP/Fail-fast schaffen
Teamstrukturen
- Größe Organisation
- Zentralisierung wiederverwendbarer Funktionen
- Aufbau zentraler Service Stacks
- Dev Ops Team
- Automatisierung
- Infrastrukturprovisionierung
- Architekturentwicklung
- Größe Projekt
- Minimierung Teamgröße
- Microservice Strukturen
- Auslagerung an zentrale Funktionen
- Entwicklungsmethodologien
- Scrum (bei grossen Abhängigkeiten)
- Kanban (ohne Abhängigkeiten)
DevOps Pipeline
Ziele
- 100% Automatisierung
- 100% Transpararenz
- Einheitliches Vorgehen
- Sicherstellen von Qualität
Code
- Software Code
- Versionskontrolle
- Basis der Kollaboration
- Basis der Nachvollziehbarkeit
- kleine Inkremente
- Code Quality Gates
- Kommentarabdeckung
- Codestyle
- Standardfehler
- Linting (findbug/JSLint)
- lokale Git Hooks
- Zentrale Statistiken via SonarQube
- Code Reviews
- Early Feedback
- Bug Tracking
- Fehler in Produktion
- Sicherstellen der Behebung von Fehlern
- Issue Tracker
- Automatisierung aus den Monitoring Tools
- Automatisierungscode
- Gleiche Qualitätsansprüche wie SW-Code
- Beschreibungsdateien (Puppet/Chef/Ansible)
Build (CI)
- Automatisierung
- Build Server
- Sicherstellung von Metriken
- Tools: Jenkins, Bamboo
- Bereitstellung von Artefakten
- Archivierung von Artefakten
Test
- Automatisierung von Tests (im Build Server)
- Unit Tests / Regressionstest
- Ausführung auf Build Server
- Sicherstellen von Metriken (Line Coverage)
- Dokumenation von Ergebnissen
- Intergrationstest
- Test von Wirkungen zwischen Apllikationen und Abhängigkeiten
- Test in dedizierten Umgebungen
- Aufbau von virtuellen Umgebungen
- Gesamter Softwarestack
- Aufbau mit Servicestacks
- Tools: Docker, Terraform, Vagrant
- User-Acceptance Test (Systemtest)
- Test in dedizierten Umgebungen
- Aufbau von virtuellen Umgebungen
- Automatisierung von UA Tests
- DevOps Aspekte
- Security
- Performance
- Konfiguration
- Feature Flag
- Bereitstellung alls Technologien für lokalen Test
- Sicherstellen aller Qualitätsaspekte vor Code Push
- Virtuelle Maschinen oder Container
- Reproduktion der Build Umgebung aus lokalen Systemen
- Tools: Vagrant,Docker
- Test von Automatisierungen
- Test in unterschiedlichen Umgebungen
- Virtuelle Maschinen oder Container
- Cloud: Test mit temporären Ressourcen
- Sicherstellung des Aufbaus von Stand Null
Release
- Dokumentation der vorherigen Ergebnissen
- Versionierungskonzept (Commit ID)
- Quality Gates mit Freigabe
Deployment
- Bereitstellen der Software (Plattform/Technologien)
- Konfigurationsmanagement-Tools (Puppet, Ansible)
- Scripts du CI Server
- Push von Images (Container, Virtuelle Maschinen)
- Container
- Image eines Betriebssystems
- Alle Abhängigkeiten im Image
- Generische Server für Deployment
- Konsistentes Artefakt als Deployment
- Container
- Zero Dependency-Deployment
- Definition von Smoke-Tests und Health-Checks
Operations
- Automatisierung
- wiederkehrender Aufgaben
- Stabilisierung von Prozessen
- Scripts/Macros/Selenium
- Stichwort: NoOps
Monitoring
- Umfassendes Monitoring
- APM (Application Process Monitoring)
- Instrumentalisierung von Applikationen
- Messen von
- Antwortzeiten
- Datenbankzugriffen
- Last Hotspots
- Service Kommunikation
- Fehler
- Tools: AppDynamics,Dynatrace,NewRelic
- End-User Monitoring
- Wahrgenommene Störungen
- Einbindung im Frontend der Anwendung
- Meldung von Fehlern
- Absprungrate
- Performance
- Synthetic Monitoring (Prozessüberwachung)
- Überprüfung kritischer Geschäftsprozesse
- Botsystem testet Verfügbarkeit
- Automatisierung von GUI/Web
- Wiederverwendung von UI-Tests
- Sicherstellung der Transparanz
- Tools: Selenium
- Log Monitoring
- Identifizierung von Fehlermeldungen
- Erhebungen von Metriken anhand von Inhalt
- Applikations Logs, Webserver Logs, OS-Logs
- Identifikatoren nutzen
- Tools: ELK, Splunk
- OS Monitoring
- Hardware Metriken
- Baselines definieren
- Visualisierung der Metriken
- Sichtkontakt zu Dashboards
- Tools: Grafana,Prometheus (Darstellung), Nagios (Erhebung)
- APM (Application Process Monitoring)
Feature Flags
- Kontinuierliche Pipelines
- Unfertige Funktionen
- Zieldatum der Bereitstellung
- Abhängigkeiten zu anderen Applikation
- Lösung: Feature Flags
- Softwareseitige Lösung
- Prozess/Oberfläche für Management
- Nutzen für optionale Funktionen
- Keine universelle Lösungen
- Im Rahmen von Microservices
DevSecOps - Security
- Warum?
- Automatisierung
- Faktor Mensch
- Disziplin
- Skalierung von manuellen Eingriffen
- Nachweisbarkeit
- DevSecOps
- Automatisierung von Projekt/Code-Schwachstellen-Prüfung
- Speicherlecks
- Codefehler (Escaping)
- Sicherheitslecks in Applikationen (NodeSecurity.io)
- Automatisierung von Security Tests
- OWASP
- SSL Zertifikate
- Lasttests
- Automatisierung von Security/Penetration-Tests
- Definition von Quality Gates
- Kryptographische Absicherung/Secret Orchestrierung
- Applicationspasswörter, Private Keys
- im Versionkontrollsystem
- im CI Tool
- temporäre Freigabe
- Multi-Passwort-Lösung
- Tools: Vault
- Auditing/Logging
- Konfigurationsmanagement Tool
- Dokumentation von Manipulationen/ Abweichungen
- Dokumentation von Änderungen
- Änderungen in definierten Jobs
- Dokumentation von Versionen und Zeitpunkten
- Zentrale Sammlung von Applikationslogs
- Datenverknüpfung sicherherstellen
- Tools: ELK, Splunk
- Konfigurationsmanagement Tool
- Network Access Control
- Ad-Hoc Änderungen
- Automatisierung:
- Dokumentation
- Dauer
- Abhängigkeit Software Defined Networking (SDN)
- Automatisierung von Projekt/Code-Schwachstellen-Prüfung
BizDevOps
- Erweiterung des DevOps Prozesses (Adapt/Align/Define/Approve)
- Einbindung in den Weg bis zum Kunden
- Sicherstellen von Business Anforderungen
- Beispiel:
- APM-Metriken
- BI-Metriken