DevOps auf Cloud Native Stack mit Apache Kafka

Softwareentwicklung mit Open Source
11.09.2018
13.09.2018


9:10 – 17:00 Uhr
ETH Zürich
Max. Teilnehmer: 15

Einleitung

Der Workshop behandelt hauptsächlich zwei Aspekte: Erstens wird die Transformation des Vorgehensmodells vom klassischen Wasserfall über agile Ansätze bis hin zu DevOps aufgezeigt und zweitens wird gezeigt, was mit aktuellen OpenSource Tools, im speziellen mit dem CloudNative-Stack, alles möglich ist. Wer würde glauben, dass der Bau einer Zeitmaschine möglich ist?

Das Ziel ist es den Teilnehmenden die unterschiedlichen Denkmustern und Vorgehen in einem DevOps-Projekt zu erläutern und folgende Fragestellungen zu beantworten:

  • Was bedeutet es für Entwickler, wenn man mehrmals pro Tag in Produktion deployed?
    • Trunk-Based-Development
    • Feature Toggles
    • Microservices
  • Warum ist DevOps nicht gleichbedeutend mit admin-Rechten für alle?
  • Warum wird Testing bei einem DevOps-Projekt noch wichtiger?
  • Welche Rolle spielt dabei CI/CD?
  • Die Technische Implementierung einer Zeitmaschine

Im Verlauf des Workshops wird eine digitale Zeitmaschine entwickelt. Dabei handelt es sich um eine Applikation, die auf der CNCF Toolbox (https://www.cncf.io/) sowie Kafka basiert. Hauptaspekt dieser Anwendung ist die Eigenschaft, dass sie sich zu jedem Zeitpunkt wiederherstellen kann. Diese Wiederherstellung beinhaltet sowohl die Daten (hier spielt EventSourcing mit Kafka eine grosse Rolle), sowie auch das UI und das Verhalten der Applikation. Bei Letzterem stehen Container im Mittelpunkt.

Bei der gesamten Entwicklung dieser Applikation werden zudem die theoretischen Praktikenaus dem oben erwähnten Teil angewendet.

Programm

Was ist DevOps und warum brauche ich das überhaupt?

  • Warum reichen die agilen Vorgehensmodelle nicht?
  • Was haben Microservices damit zu tun?
  • Wann brauche ich kein DevOps?
  • Wie kann ich die hohen Anforderungen, die durch DevOps entstehen, befriedigen?
  • Was ist das CNCF (https://www.cncf.io/)?
    • Docker
    • Kubernetes
    • Prometheus
    • OpenTracing

Die zentrale Rolle von CI/CD!

  • Jenkins 2 Pipelines
  • Erstellen eines einfachen CRUD Rest-Services
  • Verpacken in Docker
  • Deployen in Kubernetes
  • Erstellen der Jenkins-Pipeline

Wie gehe ich in dieser Stateless Umgebung mit Persistenz um?

  • EventSourcing mit Kafka
  • Umschreiben des Services von CRUD zu EvenSourcing mit Kafka
  • Erstellen eines Canary-Releases wobei die Versionen ein unterschiedliches DB-Schema haben

Warum ist Automatisieren so wichtig?

  • Semantic-Releasing, was heisst das?
  • Implementierung von Semantic-Releasing
  • Erweiterung der Jenkins-Pipeline zu einem One-Click-Deployment

Wie wird die Qualität bei täglichen Deployments sichergestellt?

  • Zentrale Rolle der Akzeptanzkriterien von UserStories
  • Wann ziehe ich die Versionen von meiner Dependencies nach?
  • Was muss ich bei Konfiguration der statischen Codeanalyse beachten?
  • Erstellen von UI-Tests anhand der Akzeptanzkriterien
  • Vulnerability Check sowohl für Java/NPM Dependencies wie auch für Docker Images
  • Konfiguration von Sonar

Wie finde ich Fehler in einer verteilen Architektur?

  • Was ist Tracing?
  • Unterschied von technischem und fachlichem Monitoring
  • Implementierung von Tracing mit OpenTracing und Zipkin
  • Implementierung von Monitoring mit Prometheus und Grafana

Fertigstellung der Zeitmaschine

  • Welche Teile fehlen noch damit wir zu jedem Zeitpunkt der Applikation zurückkehren
    können?
  • Fertigstellen der Zeitmaschinen-Applikation

Feedback-Runde

Kursziel

Überall hört und liest man von DevOps, BizDevOps, GitOps, Microservices, OpenShift, Kubernetes, usw.

  • Was aber bedeuten und beinhalten all diese Begriffe?
  • Warum sollte mich das überhaut interessieren?
  • Was davon kann ich in mein Unternehmen/Projekt mitnehmen?
  • Wie spielen diese Begriffe zusammen?

Dieser Workshop beantwortet diese sowie weitere ganz konkrete Fragen von Teilnehmenden zu diesem Thema.

Adressaten

EntwicklerInnen, technische ProjektleiterInnen, CIOs, CTOs sowie alle, die schon immer einmal eine Zeitmaschine bauen wollten.

Voraussetzungen

Kenntnisse in Entwicklung und Betrieb Service-Orientierter Software

Infrastruktur

  • Notebook mit mindestens 8GB Ram und 2 CPUs.
  • Vagrant und/oder VirtualBox müssen installiert sein.
  • Es wird vor dem Workshop eine virtuelle Maschine zur Verfügung gestellt.

Referenten

Robert Brem

adesso Schweiz


Im Bereich "Technology Innovation" der adesso Schweiz tätig und darin für alles, was mit DevOps, Cloud und Microservices zu tun hat, zuständig. Sowohl an Microservices Projekten beratend und entwickelt die mehrmals pro Tag in Produktion setzen, sowie in Projekten, welche aus klassischen Ops- und Dev-Teams zusammengesetzt sind.