Metaspatial Logo
FOSSGIS Logo Arnulf Christl

DevOps

Neue Trends und Technologien:

Die GDI 4.0 – Agil und Stabil. Ein Erfahrungsbericht mit Open Source Software in der Cloud.

Arnulf Christl

(Consultant)


Scrum Coach & Open Source Professional



Metaspatial

http://www.metaspatial.net

Das Szenario

Die Telekom ist vom Gesetzgeber angehalten, Haushalte im ländlichen Raum an das Hochgeschwindigkeits-Internet anzuschließen.


Siehe Vortrag von Tobias Frechen:

Cloudbasierte Geodateninfrastruktur für den Glasfaserrollout in der Deutschen Telekom AG

Die Umsetzung

Um die Ziele erreichen zu können muss der Planungsprozesses erheblich beschleunigt werden.

Es wird eine GDI aufgebaut, um teil-automatisiert potentielle Trassen für die Glasfaserverlegung zu berechnen.

Software-Entwicklung

Entwicklung in verschiedenen Bereichen:

Datenbeschaffung

Es wird eine Vielzahl unterschiedlicher Daten benötigt, jede mit spezieller, eigener Aufbereitung:

  • Amtliche Katasterdaten (ALKIS)
  • Orthophotos
  • OpenStreetMap
  • Selbst erhobene 3D-Befahrungsdaten
  • Straßennetz
  • Adressdaten
  • etc.

Aufbau der GDI

Alle Komponenten müssen installiert und parametriert werden und dabei den Sicherheits-Anforderungen der Telkom-internen IT folgen. Daten müssen importiert, eingebunden, leistungsoptimiert werden...

Betrieb

Die GDI wird in der Open Telekom Cloud betrieben. Der Aufbau dieser Architektur ist durch die Verwendung von Cloud-Technologie wesentlich komplexer, als bei einem einfachen Server-System.

Agiles Vorgehen

Die Aufgaben müssen parallel erledigt werden, woraus erheblicher Zeitdruck und Koordinationsaufwand resultiert.

Um Risiken rechtzeitig zu erkennen und die kurzen Entwicklungszeiträume optimal nutzen zu können, wird auf die agile Projektmanagement-Methode Scrum gesetzt.

Agile Softwareentwicklung

Agiles Projektmanagement (kurz: Agile), basiert auf der Annahme, dass Änderungen im Plan unvermeidbar sind.

Statt alles Unvorhergesehene voraus zu planen (was unmöglich ist), wird der Plan selbst flexibel.

Scrum

(Agiles Projektmanagement)

Scrum ist eine Methode, bei der Teilprojekte in regelmäßigen Iterationen von 2 bis 4 Wochen (einem Sprint) durchgeführt werden, bis das Produkt fertiggestellt ist.

Konkrete Arbeitspakete werden jeweils nur für einen Sprint zusammengestellt.

Scrum Vorgehen

Diese Vorgehensweise reduziert erheblich das Projektrisiko, weil es hilft, potentielle Verzögerungen und deren Ursachen frühzeitig zu identifizieren und Gegenmaßnahmen zu ergreifen.

Scrum in a nutshell. Source: http://metaspatial.net/wiki/Sprint (2019-02-27)

Der Product-Owner

...setzt die Anforderungen des Kunden in User-Stories um und priorisiert sie.

Product-Owner und Team

...erstellen konkrete Arbeitspakete (Sub-tasks) aus den User-Stories, die am Ende jeden Sprints zu einem funktionierenden Produkt führen.

Das Team

...wählt so viel Arbeitspakete aus, wie in einem Sprint (zwei Wochen) zu schaffen sind und fängt an zu arbeiten.

Der Scrum Master

...moderiert tägliche, kurze Besprechungen (Stand-Ups), in denen das Team den Fortschritt der Arbeiten bespricht und Blocker identifiziert.

Scrum Master & Product Owner

...beseitigen die Blocker und halten das Management aus dem Laufenden.

Review-Meeting

Das Team präsentiert am Ende des Sprints dem Product Owner den Anwendern und den Stakeholdern das Ergebnis (im Idealfall eine neue, funktionierende Version des Produkts).

Iteration

Dieser Prozess wird wiederholt, bis das Ziel erreicht ist.

Das Ergebnis

Das Ergebnis ist immer ein fertiges Produkt, dessen Qualität sich aus der Funktion von Budget, Zeit und Funktionsumfang zusammensetzt.

Source: https://en.wikipedia.org/wiki/Project_management_triangle (2019-03-11)

Merke!

Ein "Sprint" dauert 2 Wochen. Danach gibt es neue Versionen der:

  • Software
  • Schnittstellen
  • Datenformate
  • Komponenten
  • und so weiter...

Cloud

Ein wolkiges Hype-Wort, das inzwischen alle großen Internet- und Telko-Unternehmen anbieten.

Schichten in der Cloud

  • Software as a Service: Anwendungen
    (Google Docs, Office 365, MapBox)
  • Platform as a Service: Webspace
    (Webserver, Orchestrierung)
  • Infrastructures as a Service: System
    (Betriebssystem, Netzwerk, Speicher)

Beispiele bekannter IaaS Clouds

MapBox

Open Telekom Cloud

Die Open Telekom Cloud ist eine klassische IaaS (Infrastructure as a Service) Lösung, die wahlweise skalierend Hardware, Betriebssystem, Speicher, Netz, Container Management und Sicherheitsprodukte enthält.

Eingesetzte Cloud-Technologie

Im Projekt "Fibre to the Home" der Telekom AG wird eine Open Source basierte GDI auf Basis von RedHat Linux Servern mit OpenShift aufgebaut.

Im folgenden wird kurz ein Teil der Komponenten vorgestellt.

OpenShift

OpenShift bietet Container-Orchestrierung. Die Container haben vollständig abstrahierten Zugriff auf das Netzwerk, verschiedene Speichermöglichkeiten, Überwachungs-, Backup- und Sicherheitsmodule, ...

Source: https://www.openshift.com/ (2019-01-14)

OpenShift

...bildet Systeme über APIs ab, die den Rahmen für viele weitere Werkzeuge bilden:

...und so weiter.

Source: https://gitlab.com/ (2018-07-01)

GitLab Source Code Versioning... with Google Kubernetes Engine (GKE) Integration

Source: https://kubernetes.io/ (2018-07-01)

Kubernetes: Production-Grade Container Orchestration

Ein Exkurs:
Wie aus Kubernetes Open Source wurde.

Source: http://memory-beta.wikia.com/ (2018-07-04)

In Docker-Containern sind die eigentlichen Anwendung enthalten:

Source: https://docker.com/ (2018-07-01)

  • Postgresql, PostGIS
  • GeoServer, Actinia, ShoGUN
  • GeoNetwork, geOrchestra
  • OpenLayers, etc

Infrastructure as Code

Terraform ist ein Open Source Werkzeug, das (OpenShift) APIs in deklarative Konfigurationsdateien abbildet, die wie Software Code von Teams bearbeitet werden können und Reviews und Versionierung unterliegen.

Source: https://www.terraform.io/ (2019-03-11)

Continuous Integration

Source: https://jenkins.org/ (2018-07-01)

Jenkins CI ist ein Open Source Continuous Integration Server (build and test code).

CI/CD

Durch Continuous Integration kann neu entwickelte Software (und Infrastruktur) umgehend in Staging- und Integrationsumgebung getestet werden. Mit Continuous Deployment wird die Software (und Infrastruktur) automatisiert in die Produktionsumgebung überführt und ist innerhalb von kurzer Zeit produktiv nutzbar.

Zusammenfassung

Cloud-Techologie is komplex.

  • Deployment-Prozess kann erheblich beschleunigt werden.
  • Cloud-Infrastruktur ist (meist) einfacher zu skalieren.
  • Bei sporadischer Nutzung kann die Cloud Kosten sparen.
  • Cloud-Infrastrukur hat eine steile Lernkurve.

IT-System Life-Cycle

Der Life-Cycle herkömmlicher
IT-Systeme
beträgt
Jahre.

Agile
Software-Entwicklung
und professioneller IT-Betrieb
sind (eigentlich) vollkommen inkompatibel!

DevOps

Hier kommt DevOps (Development & Operations) ins Spiel, eine Spielart des IT-Systembetriebs.

IT-Infrastrukturbetrieb

Die IT-Infrastruktur ist heute zu einem geschäftskritischen Faktor geworden.

Dem reibungslosen Funktionieren der Infrastruktur kommt ein erhebliches Gewicht zu.

Geschäftskritisch!

Schnelle Entwicklungszyklen
&
zuverlässiger Betrieb
(sicher, ununterbrochen, statisch)

Konsequente Qualitätssicherung

  • Ausgezeichnete Qualitätssicherung muss integraler Bestandteil agiler Softwarenetwicklung sein.
  • Deployment muss hoch-automatisiert sein, um neue Software in den stabilen Betrieb zu integrieren.

CI/CD Prozess. Source: https://thenewstack.io/ci-cd-with-kubernetes-tools-and-practices/ (2019-03-10)

Continuous Automated Testing

Testing, Integration und Deployment müssen
hoch-automatisiert sein,
um einen stabilen Betrieb zu gewährleisten.

Source: https://en.wikipedia.org/wiki/DevOps (2018-07-04)

DevOps

...ist die Zusammenführung von Softwareentwicklung, Systemadministration und Betrieb bei kontinuierlicher Qualitätsüberprüfung (Testing, CI/CD, Monitoring).

(Siehe auch Infrastructure as Code slide). Source: https://en.wikipedia.org/wiki/DevOps (2019-02-24)

Zusammenfassung IaaS

Cloud-Infrastrukturen bieten hohe Stabilität und Flexibilität, aber auch

  • Aufwändige Erst-Implementierung
  • Sperrig bei Infrastruktur-Konzernvorgaben
  • Hohe Sicherheit beim Betrieb(?)
  • Massenhaft Power für Anwender-Funktionalität
  • Schnelle Skalierbarkeit
  • Hohe Management-Kosten

Herausforderung an die Projektsteuerung

Kommunikation und Priorisierung

  • Fachanforderungen
  • Softwareentwicklung
  • Systemadministration
  • Sicherheit
  • Betrieb

Caveats beim Aufbau einer eigenen Cloud-Lösung

Projektmanagement muss alle Bereiche optimal integrieren. Strategische Abwägungen betreffen:

  • Entwicklung (Agil vs. Stabil)
  • Infrastruktur (Vorgabe vs. Best Practices)
  • Betrieb (Sicherheit vs. Flexibilität)
  • Anwender (Standard- vs. fachliche Anforderungen)
  • Management (Kosten, Personal, Abhängigkeiten)



Vielen Dank für Ihre Aufmerksamkeit!


Zeit für Fragen?


Arnulf Christl
http://www.metaspatial.net