Zusammenfassung

Die Schulung legt den Grundstein, um den Prozess der Softwareauslieferung zu automatisieren und somit reproduzierbar und effizient zu gestalten. Die Teilnehmerinnen lernen relevante Technologien, Frameworks und Techniken kennen, die zum Aufbau von CI/CD Pipelines nötig sind. Ein Praxisbeispiel (Java & Python) verdeutlicht die Prinzipien für die Einrichtung solcher Pipelines. Dazu wird das Beispiel mit git verwaltet und integriert und in der Cloud (AWS) deployed. Die vorgestellten Prozesse und Konzepte sind auf andere Implementierungen und Plattformen ebenso anwendbar.

Dauer: 2 Tage

Zielgruppe

  • Systemarchitekten
  • Softwarearchitekten
  • Softwareentwickler

Kenntnisse in den Bereichen Softwareentwicklung und Docker. Kenntnisse in der Verwendung der Linux Shell hilfreich.

Gliederung

  1. Introduction
    • Terminology and Motivation
    • Is DevOps right for you?
    • DevOps Culture
    • Continuous X (Continuous Integration, Delivery and Deployment)
  2. Implications on software architecture
    • Architectural Significant Requirements: Deployability, Modifiability, Testability
    • Microservice Architecture
  3. Continuous Integration: Build trust in your software
    • What is CI?
    • Code quality Measurement (e.g. Checkstyle, SonarQube)
    • Test Automation throughout the Test Pyramid
      • Unit-, Integration-, Component-, GUI Tests
      • Typical Problems: Duration, Flaky tests, Coverage
      • Backing Services for Testing (e.g. databases)
    • Automate your build
      • Suitable Tools
      • Stages
      • Management of Versioned Release Artifacts
      • Packaging and Distribution via Docker
      • Multi-Architecture Builds
  4. Manage your Infrastructure
    • Decide on your Target Platform and Neighboring Services
      • Kubernetes Deployment on AWS
      • Database, NoSQL
    • Define and Manage your Infrastructure as Code (IaC)
    • Integrate its Provisioning into the CI/CD Pipeline
  5. Continuous Delivery
    • Integration with the Target Platform (e.g. Docker on Kubernetes)
    • Automatic Versioning
    • Environment-Specific Configuration
    • Rollout/Rollback (Push-Button, Tag-Based, Branch-Based Deployment)
  6. Continuous Deployment
    • Zero-Downtime
    • Dealing with Breaking Changes
  7. Outlook
    • Monitoring
    • Logging
    • Automate Everything (Github Actions, GitOps)