Slide 1

Slide 1 text

07. – 10.12.2020 #ittage @Morl99 @DBSystel @DevOps_DB DevOps Carsten Hoffmann Mehr Geschwindigkeit auf der Schiene

Slide 2

Slide 2 text

3 DevOps? https://xkcd.com/2261/ Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 3

Slide 3 text

4 http://modernagile.org Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 4

Slide 4 text

Ein Reisebericht Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 5 1. Kontext 2. Polyglotte Softwareentwicklung 3. CI/CD Pipelines 4. COTSS 5. Dezentrale Dokumentation

Slide 5

Slide 5 text

Unsere Mission als Plattform Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB Innovationsgeschwindigkeit erhöhen API Ökosystem betreiben Wissensaufbau für Developer im Bereich Cloud/K8S 6

Slide 6

Slide 6 text

7 Unser Team: BusinessHub doPlatform Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 7

Slide 7 text

8 DB API Strategie Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 8

Slide 8 text

Greenfield – Yay! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 9

Slide 9

Slide 9 text

Oops! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 10

Slide 10

Slide 10 text

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 11 Create Refactor Abandon Replace

Slide 11

Slide 11 text

Jeder muss alles können! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 12

Slide 12

Slide 12 text

Polyglotte Softwareentwicklung Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 13

Slide 13

Slide 13 text

Toolzoo Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 14

Slide 14

Slide 14 text

Jeder muss alles können können! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 15

Slide 15

Slide 15 text

16 Beispiel für Team-Tool-Entscheidung -> Diagramme PlantUML Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 16

Slide 16 text

17 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 formerly known as draw.io

Slide 17

Slide 17 text

18 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

Slide 18

Slide 18 text

Geschwindigkeit erhöhen Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 19

Slide 19

Slide 19 text

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 20

Slide 20

Slide 20 text

Zentrale Pipeline skaliert nicht! Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 21

Slide 21

Slide 21 text

22 pipeship bringt: Workflow Danke an Thomas Kappatsch & Nicolas Byl für diese Folien Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB @mcpipeface

Slide 22

Slide 22 text

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 23

Slide 23

Slide 23 text

Complex Off-The-Shelf Software (COTSS) Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 24

Slide 24

Slide 24 text

Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 25

Slide 25

Slide 25 text

26 Einführung von COTSS v Tätigkeiten dauern seit ca. 27 Monaten an (and counting) 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

Slide 26

Slide 26 text

Strategien für COTSS Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 27

Slide 27

Slide 27 text

Permanentes Testen execute continious tests Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB https://github.com/dbsystel/excote 28

Slide 28

Slide 28 text

Automatisierung von Workarounds Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 29

Slide 29

Slide 29 text

Architekturdokumentation Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB 30

Slide 30

Slide 30 text

31 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 (@simonharrer) Carsten Hoffmann | @Morl99 @DBSystel @DevOps_DB

Slide 31

Slide 31 text

www.dbsystel.de Kontakt [email protected] @Morl99 Carsten Hoffmann Architekturschaffendes DevOps-Teammitglied DB Systel GmbH