Schnelleinstieg durch Klick öffnen
NL 2021.VOL1

DevOps und der neue ABAP-Software Lifecycle-Prozess

Was ist DevOps und hat das was mit ABAP zu tun? Kurzerklärung: Ein Kofferwort aus Entwicklung und Betrieb (Development & Operations). Beides soll vom gleichen Team übernommen werden.

Was ist DevOps und hat das was mit ABAP zu tun? Kurzerklärung: Ein Kofferwort aus Entwicklung und Betrieb (Development & Operations). Beides soll vom gleichen Team übernommen werden.

Ziel ist es dabei, eine vorteilsbringende DevOps-Kultur zu etablieren und passende Methoden bzw. Tools zu nutzen um ein besseres und zuverlässiges Produkt zu liefern.

Im wesentlichen besteht der DevOps-Prozess auf 5 Komponenten:

Planung & Installation

  • Best-Practice Guidelines seitens SAP
  • Erstellung von Accounts, Einrichtung der Tools
  • Ermöglichung von Continuous Integration & Continuous Deployment (CI/CD)

Entwicklung & Test

  • Mittels IDE (z.B. Eclipse)
  • Programmiermodelle & Unit-Tests
  • Continuous Integration

Auslieferung & Änderungen

  • Transport- und Change-Management
  • Continuous Deployment

Monitoring & Betrieb

Automatisierung und Optimierung

In diesem Artikel werden wir uns auf den entwicklungszentrierten Aspekt von DevOps konzentrieren: CI/CD.

CI/CD

Continuous Integration (CI) und Continuous Deployment (CD) zählen vermutlich zu den häufigsten Buzzwords die durch den Raum fliegen, wenn über einen modernen Software-Entwicklungsprozess gesprochen wird. Aber was ist das überhaupt?

Continuous Integration

  • "Fließendes Änderungsmanagement" von Code der in zentralem Repository liegt. 
  • Automatisierte Testung von Änderungen. Diese Änderungen dürfen nur aufs Produktivsystem übernommen werden, wenn alle Tests erfolgreich waren.
  • Direktes Feedback an Entwickler bezüglich Ausgang dieser Tests.
  • Für die Orchestrierung dieser automatischen Abläufe werden sogenannte Pipelines verwendet, in denen diese einzelnen Steps ausgeführt werden. (Verwendung von CI-Server - z.B. Jenkins)

Continuous Deployment

  •  Automatische Übernahme dieser Änderungen in produktive Systeme aus zentralem Repository (mehrere Releases pro Tag möglich) 

Diese beiden Prinzipien sind das Geheimnis und die Technologie hinter den berühmten mehrfach-täglichen (Cloud-)Software-Releases der Tech-Giganten wie Microsoft, Facebook, Amazon & Co. Das allgemeine Ablauf vom CI/CD Entwicklungsprozess sieht dabei wie folgt aus:

  1. Develop: Entwickler führen Änderungen in IDE (z.B. Eclipse) aus.
  2. Push / Merge: Änderungen werden in ein zentrales Repository (z.B. GIT) übernommen.
  3. Trigger Pipeline: Diese Änderungen triggern automatisierte Prozesse (sogenannte Pipelines) auf einem CI-Server. (Tests & Vorbereitung für Deployment)
  4. Notify: Testergebnisse werden automatisch an den Entwickler übermitteln.
  5. Deliver: Sind alle Tests positiv verlaufen, können die Änderungen sofort auf dem Produktiv-System Live gesetzt werden. 

Was hat das mit ABAP zu tun?

Die SAP arbeitet schon seit einiger Zeit daran das Transportwesen zu modernisieren und somit auch CI/CD zu ermöglichen. Realisiert wird das durch das sogenannte gCTS (GIT-enabled Change & Transport System), welches das allseits bekannte SAP Transportwesen (CTS) mit dem Industriestandard für Code-Versionsverwaltung GIT verheiratet.

Das heißt: Zukünftig sollen die auf Entwicklungssystemen erstellten Artefakte (Dictionary-Elemente, ABAP-Klassen, Customizing, usw.) in ein zentrales GIT-Repository abgelegt werden. Die Zielsysteme können sich dann die entsprechenden Versionsstände vom Repository (automatisiert) abholen. Dazwischen laufen die Pipelines um die Qualität sicherzustellen.

Konkret sieht die Vision vom neuen ABAP-Entwicklungs-Lifecyle so aus:

Entwicklung

  • Unsere Heimatwelt...  Hier findet alles weiterhin statt wie bekannt (inkl. Schreiben von ABAP Unit-Tests): 
  • Erstellen eines Transportauftrags, danach Durchführung der Änderungen. (ADT, SE80, SPRO, ...)
  • Nach Fertigstellung: Freigabe des Transportauftrags (SE09)

Continuous Integration

  • gCTS & GIT: Nach entsprechender Konfiguration auf den SAP-Systemen wird dafür gesorgt, dass die Änderungen im Transportauftrag in das Git-Repository übernommen werden. (COMMIT). Das GIT-Repository steckt hinter der angegebenen Transportschiene (virtuelles Zielsystem).
  • Der CI-Server (z.B: Jenkins) triggert nach dem Commit den Start der Pipelines. Die Änderungen werden auf das QA-System gebracht und die automatisierten Tests (z.B. ABAP Unit-Tests) ausgeführt.
  • SAP stellt dafür eine Jenkins-Library zur Verfügung: Project Piper.
  • Danach wird Feedback an den Entwickler übermittelt.

Continuous Deployment

  • Nach erfolgreichen Tests sollen die Änderungen produktiv gesetzt werden.
  • Basierend auf den Änderungen (COMMIT in GIT) wird von gCTS ein Transportauftrag erstellt, der alle relevanten Objekte enthält und auf dem Zielsystem importiert.

Voraussetzungen

  • SAP-System:
  • SAP S/4HANA 1909 (2020 für Customizing-Support)
  • Java Runtime Environment (SapMachine Version 11) → Ein SAP Fork von OpenJDK
  • Zentraler Hinweis: https://launchpad.support.sap.com/#/notes/2821718
  • GIT-Repository: Es kann im Prinzip frei gewählt werden - GitHub, BitBucket, GitLab, etc.
  • CI-Server: z.B. Jenkins 

Was ist neu mit S/4HANA 2020?

Support von Customizing-Objekten

  • TDAT (Customizing Tabelleninhalt)
  • VDAT (View Maintenance Data)
  • TABU (Löschung von einzelnen Einträgen)
  • Aber kein CDAT (View Cluster Maintenance Data)

Health Check Funktionalität in gCTS Fiori-App

  • Zeigt Informationen über Status des Systems, Berechtigungen (z.B. Zugriff auf Filesystem) und Versionsstände.

Vereinfachungen bei Konfiguration von gCTS (Wizard)

Standard-Format von Repository wurde geändert

  • Nur noch JSON (statt XML) für neu erstelle Repositories
  • Support von XML läuft weiter

Erster rudimentärer Support für Konfliklösungen beim Mergen von Branches.

Ausblick

Weitere Features zur Verbesserung von verteilter Entwicklung & Wartung

  • Merge von Branches, Konfliktlösungen, etc.
  • Support von weiteren GIT-Features wie z.B. Pull Requests (Teilen von Commits mit anderen Entwicklern, damit diese die Änderungen prüfen können bevor sie in die Code-Basis einfließen)

Verbessertes Error-Handling und Logging

Integration mit bestehenden Lösungen

  • gCTS und ChaRM (SAP Change Request Management)
  • Integration von gCTS in SAP Transport Organizer (SE09)

Quellen

Definition DevOps von Microsoft: https://azure.microsoft.com/de-de/overview/what-is-devops/

SAP TechEd 2020

Events

Anfrage

Ihr Interesse
In dringenden Fällen rufen Sie uns bitte an!
  • +49 811 124400-0 (DE)
  • +43 1 617 57 840 (AT)