DevOps
Mehr Geschwindigkeit auf der Schiene
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
2
DevOps?
https://xkcd.com/2261/Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
3
http://modernagile.org
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Unsere Mission als Plattform
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Innovationsgeschwindigkeit erhöhen
API Ökosystem betreiben
Wissensaufbau für Developer im
Bereich Cloud/K8S
4
5
Unser Team: BusinessHub doPlatform
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
6
DB API Strategie
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Greenfield – Yay!
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 7
Oops!
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 8
You build it, you run it, you are responsible
Lilienthal, Carola. Langlebige Software-Architekturen: Technische Schulden analysieren, begrenzen und abbauen.
dpunkt. verlag, 2019.
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 9
Jeder muss alles können!
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 10
Polyglotte Softwareentwicklung
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 11
ToolzooCarsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 12
13
Beispiel für Team-Tool-Entscheidung
-> Diagramme
PlantUML
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
14
Beispiel für Team-Tool-Entscheidung
-> Diagramme
ü Speichern aller Diagramme als .drawio.png in Git
Repositories
ü Quelldatei=Zielformat
ü Zugriff für jeden auf jedem Endgerät
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
15
Beispiel für Einzel-Tool-Entscheidungen
-> Code Dev Tools
q Keine Projektdateien in Git
q .editorconfig (https://editorconfig.org/)
q Projekt muss ohne IDE ausführbar sein
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Geschwindigkeit erhöhen
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 16
Beispiel einer zentralen Pipeline
healthPath: '/actuator/health'
displayName: 'Spring Boot Template’
srcType: Maven
testing:
acceptance:
command: 'node /opt/app/src/runner application/xml `pwd`/test-reports/test-results.xml'
image: services/bh-images/newman-sidecar-image:latest
environment:
COLLECTION_FILE: src/test/resources/SpringBoot-AcceptanceTest.postman_collection.json
apis:
- name: ${APPLICATION_NAME}
uris: /${NAMESPACE_NAME}/${APPLICATION_NAME}
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Zentrale Pipeline skaliert nicht!
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 18
19
pipeship bringt:
Workflow
Danke an Thomas Kappatsch & Nicolas Byl für diese FolienCarsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Beispiel einer dezentralen Pipeline
---
include:
- https://.../rgbs-generic-stage-dev-local/release/0.71.0-20201029160137-b802e13-pipeship-pipeline.yaml
- https://.../business-hub-generic-prod-local/bizhub-pipeline/2.0.26-20201116165355-f538ec3-bizhub-
pipeline.yml
variables:
APPLICATION_URL_SUFFIX_TEST: ".berlin.dbcs.db.de"
APPLICATION_URL_SUFFIX_PROD: ".berlin.dbcs.db.de"
MAVEN_SETTINGS_PATH: "./pipeship/.m2/settings.xml"
# Run Postman/newman acceptance tests
automatic_test_run:
tags:
- test
variables:
STAGE: at
image:
name: postman/newman:4.5-alpine
entrypoint: [""]
script:
- 'newman run --insecure --env-var
"baseUrl=${GATEWAY_URL}/${CI_PROJECT_NAME}/${STAGE}/${CI_COMMIT_REF_NAME}/spring-boot-
template/v1" src/test/resources/SpringBoot-AcceptanceTest.postman_collection.json'
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Complex Off-The-Shelf Software (COTSS)
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 21
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 22
23
Einführung von COTSS
v Tätigkeiten dauern seit ca. 27 Monaten an
v Bisher kein produktiver Nutzen
v Qualitätsprobleme
v Microservicearchitektur die durch komplizierte Automatisierung gemanaged wird
v DB hat den Hersteller dazu “überredet” OpenShift zu unterstützen
v Mehrfach Probleme entdeckt, die nur in OpenShift auftreten, da der Hersteller
den Support zwar zugesichert hat, aber nicht von Anfang an geplant hatte
v Abbruch der Installation auf OpenShift à Entscheidung für AWS EKS
v Viele “Monsterstories”, da das Zerteilen der technischen Integrationsaufgaben in
kleinere Stories häufig nicht sinnvoll möglich war. -> Wochenlange Laufzeit.
v Fehler die nicht nachvollziehbar waren, nur bei uns auftraten, und meistens nur in
Produktion.
v Ohne Konfigurationsänderungen unsererseits
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Strategien für COTSS
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 24
Permanentes Testen
execute continious tests
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
Automatisierung von Workarounds
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 26
Architekturdokumentation
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
28
Tool Tips
Artillery – Simple Loadtesting
Diagrams.net – Versionierbare Diagramme für jeden (formerly known as draw.io)
Mocha, Chai, Sinon – Unser Javascript UnitTestStack
Spock – Java Tests mit Groovy
renovatebot – Automatische Dependency Updates per MergeRequest
Zalando API Guidelines – Beispiel für API Guidelines als Startpunkt
docToolchain – docs as code als fertige Toolchain
Postman/Newman – REST-Client: exploratives und automatisiertes Testen
excote – npm package für permanentes Testen (github.com/dbsystel/excote)
k9s – Kubernetes CLI-UI
mob – Simple CLI für remote mob programming
Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
www.dbsystel.de
Kontakt
Carsten.C.Hoffmann@deutschebahn.com
@Morl99
Carsten Hoffmann
Architekturschaffendes DevOps-Teammitglied
DB Systel GmbH

DevOps - Mehr Geschwindigkeit auf der Schiene

  • 1.
    DevOps Mehr Geschwindigkeit aufder Schiene Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 2.
  • 3.
    3 http://modernagile.org Carsten Hoffmann |@Morl99 @DBSystel @DevOps_DB
  • 4.
    Unsere Mission alsPlattform Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB Innovationsgeschwindigkeit erhöhen API Ökosystem betreiben Wissensaufbau für Developer im Bereich Cloud/K8S 4
  • 5.
    5 Unser Team: BusinessHubdoPlatform Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 6.
    6 DB API Strategie CarstenHoffmann | @Morl99 @DBSystel @DevOps_DB
  • 7.
    Greenfield – Yay! CarstenHoffmann | @Morl99 @DBSystel @DevOps_DB 7
  • 8.
    Oops! Carsten Hoffmann |@Morl99 @DBSystel @DevOps_DB 8
  • 9.
    You build it,you run it, you are responsible Lilienthal, Carola. Langlebige Software-Architekturen: Technische Schulden analysieren, begrenzen und abbauen. dpunkt. verlag, 2019. Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 9
  • 10.
    Jeder muss alleskönnen! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 10
  • 11.
    Polyglotte Softwareentwicklung Carsten Hoffmann| @Morl99 @DBSystel @DevOps_DB 11
  • 12.
    ToolzooCarsten Hoffmann |@Morl99 @DBSystel @DevOps_DB 12
  • 13.
    13 Beispiel für Team-Tool-Entscheidung ->Diagramme PlantUML Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 14.
    14 Beispiel für Team-Tool-Entscheidung ->Diagramme ü Speichern aller Diagramme als .drawio.png in Git Repositories ü Quelldatei=Zielformat ü Zugriff für jeden auf jedem Endgerät Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 15.
    15 Beispiel für Einzel-Tool-Entscheidungen ->Code Dev Tools q Keine Projektdateien in Git q .editorconfig (https://editorconfig.org/) q Projekt muss ohne IDE ausführbar sein Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 16.
    Geschwindigkeit erhöhen Carsten Hoffmann| @Morl99 @DBSystel @DevOps_DB 16
  • 17.
    Beispiel einer zentralenPipeline healthPath: '/actuator/health' displayName: 'Spring Boot Template’ srcType: Maven testing: acceptance: command: 'node /opt/app/src/runner application/xml `pwd`/test-reports/test-results.xml' image: services/bh-images/newman-sidecar-image:latest environment: COLLECTION_FILE: src/test/resources/SpringBoot-AcceptanceTest.postman_collection.json apis: - name: ${APPLICATION_NAME} uris: /${NAMESPACE_NAME}/${APPLICATION_NAME} Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 18.
    Zentrale Pipeline skaliertnicht! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 18
  • 19.
    19 pipeship bringt: Workflow Danke anThomas Kappatsch & Nicolas Byl für diese FolienCarsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 20.
    Beispiel einer dezentralenPipeline --- include: - https://.../rgbs-generic-stage-dev-local/release/0.71.0-20201029160137-b802e13-pipeship-pipeline.yaml - https://.../business-hub-generic-prod-local/bizhub-pipeline/2.0.26-20201116165355-f538ec3-bizhub- pipeline.yml variables: APPLICATION_URL_SUFFIX_TEST: ".berlin.dbcs.db.de" APPLICATION_URL_SUFFIX_PROD: ".berlin.dbcs.db.de" MAVEN_SETTINGS_PATH: "./pipeship/.m2/settings.xml" # Run Postman/newman acceptance tests automatic_test_run: tags: - test variables: STAGE: at image: name: postman/newman:4.5-alpine entrypoint: [""] script: - 'newman run --insecure --env-var "baseUrl=${GATEWAY_URL}/${CI_PROJECT_NAME}/${STAGE}/${CI_COMMIT_REF_NAME}/spring-boot- template/v1" src/test/resources/SpringBoot-AcceptanceTest.postman_collection.json' Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 21.
    Complex Off-The-Shelf Software(COTSS) Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 21
  • 22.
    Carsten Hoffmann |@Morl99 @DBSystel @DevOps_DB 22
  • 23.
    23 Einführung von COTSS vTätigkeiten dauern seit ca. 27 Monaten an v Bisher kein produktiver Nutzen v Qualitätsprobleme v Microservicearchitektur die durch komplizierte Automatisierung gemanaged wird v DB hat den Hersteller dazu “überredet” OpenShift zu unterstützen v Mehrfach Probleme entdeckt, die nur in OpenShift auftreten, da der Hersteller den Support zwar zugesichert hat, aber nicht von Anfang an geplant hatte v Abbruch der Installation auf OpenShift à Entscheidung für AWS EKS v Viele “Monsterstories”, da das Zerteilen der technischen Integrationsaufgaben in kleinere Stories häufig nicht sinnvoll möglich war. -> Wochenlange Laufzeit. v Fehler die nicht nachvollziehbar waren, nur bei uns auftraten, und meistens nur in Produktion. v Ohne Konfigurationsänderungen unsererseits Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 24.
    Strategien für COTSS CarstenHoffmann | @Morl99 @DBSystel @DevOps_DB 24
  • 25.
    Permanentes Testen execute continioustests Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 26.
    Automatisierung von Workarounds CarstenHoffmann | @Morl99 @DBSystel @DevOps_DB 26
  • 27.
    Architekturdokumentation Carsten Hoffmann |@Morl99 @DBSystel @DevOps_DB
  • 28.
    28 Tool Tips Artillery –Simple Loadtesting Diagrams.net – Versionierbare Diagramme für jeden (formerly known as draw.io) Mocha, Chai, Sinon – Unser Javascript UnitTestStack Spock – Java Tests mit Groovy renovatebot – Automatische Dependency Updates per MergeRequest Zalando API Guidelines – Beispiel für API Guidelines als Startpunkt docToolchain – docs as code als fertige Toolchain Postman/Newman – REST-Client: exploratives und automatisiertes Testen excote – npm package für permanentes Testen (github.com/dbsystel/excote) k9s – Kubernetes CLI-UI mob – Simple CLI für remote mob programming Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB
  • 29.