Von klassischen Enterprise Applikationen zu Cloud-Native Anwendungen

Mit meinem Team bei der EXXETA AG arbeite ich unter anderem an Enterprise Software-Lösungen für die Cloud. Moderne Web-Anwendungen und Cloud-Transformationen bilden unseren Tätigkeitsschwerpunkt. Dabei geht es nicht einfach darum, bestehende Applikationen in der Cloud auszuführen. Vielmehr sind maßgeschneiderte Software-Architekturen, die passende Organisation und eine entsprechende Kultur gefordert. Ein Cloud-Native Ansatz.

Was bedeutet Cloud-Native konkret? Die Cloud Native Computing Foundation (www.cncf.io) beantwortet diese Frage aus der technischen Perspektive folgendermaßen: Containerisierung, dynamische Orchestrierung, Microservices. Dies bedeutet zum einen, dass alle relevanten Komponenten in einem Container, z. B. Docker, gekapselt werden. Zum anderen werden die notwendige Verwaltung und das Management komplexer Container-Landschaften durch Orchestrierungs-Lösungen wie Kubernetes übernommen. Die Anwendung selbst setzt sich in diesem Szenario aus einer Vielzahl von Microservices zusammen.

Cloud-Native bedeutet darüber hinaus auch die Abkehr von hierarchischen Organisationen mit Projektmanager und Fachspezialisten. Projekte werden durch crossfunktionale Teams mit starkem Fokus auf ein Produkt und dessen Nutzen umgesetzt. Silos wie Software Entwicklung, System Administration, Qualitätssicherung, Betrieb, Releasemanagement oder Projektmanagement werden aufgelöst und durch neue Modelle der Zusammenarbeit wie z. B. DevOps ersetzt.

Die kontinuierliche Auslieferung neuer Funktionalität an Kunden und Nutzer ist ein weiterer Aspekt von Cloud-Native. Dabei sind auf einer technischen Ebene Prozesse und Werkzeuge für Continous Integration und Continous Delivery in den Entwicklungsteams bereits zum Standard geworden. Cloud-Native bedeutet allerdings mehr. Eine Organisation muss auch tatsächlich darauf ausgerichtet sein, neue Funktionalität direkt und auf Ebene von Business-Funktionen oder Microservices produktiv zu nehmen.

Grundsätzlich stellt sich die Frage, warum wir überhaupt einen Cloud-Native Ansatz verfolgen sollten. Was ist unsere Motivation?

Aktuell herrscht weitestgehend Konsens darüber, dass Unternehmen, die sehr schnell auf Kundenbedürfnisse reagieren können, erfolgreicher sein werden als andere. Geschwindigkeit ist entscheidend. Bei vielen Enterprise Applikationen wird ein Releasezyklus allerdings noch immer in Wochen oder Monaten geplant. Das Risiko für ein einzelnes Release ist sehr hoch, Änderungen der Funktionalität sind teuer und aufwendig. Bei einem Cloud-Native Ansatz können Deployments im Gegensatz dazu mehrmals täglich, stündlich oder minütlich durchgeführt werden. Änderungen lassen sich gewissermaßen direkt umsetzen. Das Risiko ein „Release“ zu veröffentlichen reduziert sich damit drastisch. Auch können bei einer Cloud-Native Anwendung auf Basis von Microservices einzelne Business-Funktionen schnell und unabhängig voneinander deployed werden.

Schnell zu sein alleine ist natürlich nicht ausreichend. Ebenso ist es erforderlich, dass das erstellte System die notwendige Zuverlässigkeit aufweist. Klassische Enterprise Applikationen werden oft in einer Designphase vor Entwicklungsstart entworfen, durch umfangreiche Architektur Reviews überprüft, detailliert dokumentiert und langlaufenden Regressionstests unterzogen. Ziel ist immer, die Zahl der Fehlerfälle in Produktion zu verringern. Leider oft wenig erfolgreich.  Durch die Verwendung von Microservices sind unter anderem beim Auftreten eines Fehlers in einer Cloud Native Applikation nur kleine Anwendungsbereiche betroffen. Im Idealfall eben nur der entsprechende Microservice. Um kaskadierende Fehler zu vermeiden, werden Microservices fehlertolerant ausgelegt und lose gekoppelt. Die transparente Überwachung der Anwendung ermöglicht meist auch eine automatisierte Wiederherstellung im Fehlerfall. Nicht zuletzt ist die Einführung neuer Technologien ohne größeres Risiko für das Gesamtsystem möglich, da nur einzelne Services betroffen sind.

Auch die Wirtschaftlichkeit und Effizienz eines Systems sind wichtige Faktoren. In Bezug auf die Skalierbarkeit wird bei klassischen Enterprise Applikationen in vielen Fällen der Worst Case betrachtet. Die dabei gestellte Frage lautet: Welche maximale Last kann unter Umständen auftreten. Entsprechend werden Server und Infrastruktur bemessen. Die meiste Zeit bleiben diese Ressourcen allerdings ungenutzt. Was wenig effizient und teuer ist. Cloud-Native Anwendungen hingegen skalieren horizontal und nutzen nur die aktuell notwendigen Ressourcen. Verwaltet und bereitgestellt durch den Cloud-Provider kann diese Auslagerung die Investitionskosten für Unternehmen erheblich reduzieren. Die horizontale Skalierung einer Cloud-Native Anwendung wird durch den auf Microservices basierenden Architekturansatz optimal unterstützt.

Nicht zuletzt lautet die Prämisse für eine Cloud-Native Anwendung Mobile-First. Enterprise Applikationen wurden noch vor wenigen Jahren für den typischen Fall eines Desktop-Benutzers entworfen. Dies hat sich grundlegend geändert. Es gibt heute eine Vielzahl von Endgeräten und Zielplattformen, der Desktop spielt eine immer geringere Rolle. Mobile Geräte wie Smartphones und Tablets bilden längst die große Mehrheit und sind für den Benutzer immer verfügbar. Dies macht sich im Nutzerverhalten deutlich bemerkbar und hat Einfluss auf die notwendige Systemarchitektur. Einzelne Business-Funktionen werden viel häufiger und zu jedem denkbaren Zeitpunkt genutzt. In diesem Zusammenhang bedeutet Mobile-First natürlich mehr als nur die optimierte Darstellung auf einem kleineren Bildschirm.

Neben den technischen Aspekten ist für die Entwicklung einer Cloud-Native Anwendung also ein ganzheitlicher Ansatz entscheidend. Sowohl Organisation als auch Kultur spielen eine große Rolle. Wie Eingangs erwähnt wird Software heute zwar mit Hilfe agiler Methoden entwickelt und durch Continous Delivery Prozesse automatisiert „ausgeliefert“. Häufig existiert dann allerdings ein organisatorischer Bruch in Form klassischer Test- oder Releaseprozesse. Den Fokus gilt es daher auf Kunden und Nutzer zu legen. Neue Funktionen und damit Mehrwert müssen kontinuierlich zur Verfügung gestellt werden. Dies erfordert die entsprechende Haltung bei allen Beteiligten an der es beständig zu arbeiten gilt. Ganz im Sinne der agilen Softwareentwicklung durch Inspect and Adapt.

 

Literatur und Quellen

[1] Stine, Matt (2015): Migrating to Cloud-Native Application Architectures. Sebastopol, CA 95472: O’Reilly Media.

[2] Cloud Native Computing Foundation: www.cncf.io

Teamleistung – Mehr als die Summe der Einzelleistungen?

Teamleistung ist nicht zwangsläufig mehr als die Summe von Einzelleistungen. Eher trifft das Gegenteil zu, die Teamleistung ist zunächst geringer als die Summe reiner Einzelleistungen.

Um in der Tat ein „High-Performance“ Team zu formen, gibt es einige Punkte zu beachten. Unter anderem die Auswahl der Teammitglieder, eine geeignete Teamaufgabe, Motivation oder Konflikte.

Eine aus meiner Sicht praxisnahe Zusammenfassung des Themas findet sich hier:

Gruppen und Teams

Agile Day – JAX 2017

Der Agile Day auf der JAX 2017 in Mainz bot in diesem Jahr ein breites Spektrum an Informationen, Beiträgen und Best Practices zum Thema Agilität in Projekten und Organisationen.

Zunächst ging es um die Erkenntnis, dass Agilität auch in großen Unternehmen funktioniert. Der Weg dorthin wird in der vorgestellten Firma allerdings mit „Permanent Beta“ überschrieben. Die Mitarbeiter benötigen Freiraum für Innovationen und die Möglichkeit, dass Dinge auch mal scheitern.

Weiter ging es mit einem entscheidenden Erfolgsfaktor für jedes Projekt, den Stakeholdern. Wie gelingt eine erfolgreiche Zusammenarbeit und wie werden die Stakeholder optimal ins Projekt eingebunden? Als eine Möglichkeit wird die Priorisierung von fachlichen Anforderungen durch ein dem Planning Poker ähnliches „Geschäftswertpoker“ vorgestellt.

Eines der wichtigsten Instrumente innerhalb von Scrum ist die Retrospektive. Ziel ist die ständige Verbesserung oder Optimierung des Scrum Projekts. Präsentiert wurden unterschiedliche Möglichkeiten eine Retrospektive interessant und abwechslungsreich zu gestalten. Eine gute Retrospektive greift dabei den aktuellen Kontext des Projekts auf und leitet daraus die entsprechenden Verbesserungen ab.

Welche Möglichkeiten zur Optimierung gibt es, wenn große Organisation agile Projekte kapern? Wenn Begriffe wie Scrum Master oder Product Owner lediglich Worthülsen für bestehende Organisationsstrukturen sind. Auf der JAX 2017 wird als entscheidendes Kriterium das Mindset aller Beteiligten genannt, dieses gilt es zu fördern. Im Idealfall können durch eine „agile Analyse“ entsprechende Handlungsfelder identifiziert werden.

Und vielleicht stellt sich für diejenigen die Scrum bereits einsetzen einmal die Frage, was tun wenn mein Scrum kaputt ist? Anhand vieler Beispiele aus der Praxis kamen Themen wie Product Owner vs. Team, Technische Schulden oder zu große User Stories zur Sprache. Dabei wurden jeweils konkrete Tipps zur möglichen Problemlösung gegeben.

Zum Abschluss beantworteten die Speaker des Tages gemeinsam die Fragen der Teilnehmer. Ein kleiner Konsens konnte dabei erzielt werden: Auch einmal Nein zu sagen! Vielleicht zum Management das ausführliche Reportings fordert. Oder gegenüber dem  Kunden der einen festen Scope zu einem festen Termin möchte. Die Herausforderung bei erfolgreichen agilen Projekten liegt darin, das Umfeld und das passende Mindset zu schaffen!

Buchtipp: Menschen führen – Leben wecken

Es gibt heute ein unüberschaubares Angebot an Führungsseminaren. Im Mittelpunkt stehen dabei oft die angewandten Methoden und nicht die Führungskraft an sich. Anselm Grün beschreibt in seinem Buch „Menschen führen – Leben wecken“ genau Letzteres – Führung durch Persönlichkeit.

Basis des Buchs von Anselm Grün ist das Cellerarskapitel aus der Regel des heiligen Benedikt, eine ursprünglich als Klosterregel verfasste Schrift aus dem 6. Jahrhundert. Der heilige Benedikt beschäftigt sich in diesem Kapitel mit der Frage, wie jemand beschaffen sein muss, wie jemand an sich arbeiten muss, um führen zu können. Führung durch Persönlichkeit ist für ihn das Wichtigste. Kann dies eine Anleitung für die Führung von Mitarbeitern in heutigen Unternehmen sein?

Zunächst erscheint dies schwierig, zumal uns die verwendete Sprache heute fremd vorkommt. Die erste Brücke in die heutige Unternehmenswelt schlägt Anselm Grün allerdings selbst. Er ist seit vielen Jahren Cellerar, der wirtschaftliche Leiter eines Klosters. Beim Thema Führung orientiert er sich an der Regel des heiligen Benedikt und versucht mit seinen Mitbrüdern und den ca. 270 Mitarbeitern verantwortlich umzugehen. In diesem Buch übersetzt Anselm Grün die Worte Benedikts in unsere heutige Sprache und leitet aus ihnen passende und aktuelle Bilder ab.

Welche Eigenschaften soll der Verantwortliche haben? Als Grundvoraussetzung wird die harte Schule der Selbsterkenntnis genannt. Menschen, die in sich selber ruhen und ihre Stärken und Schwächen kennen, sind für Führungsaufgaben gut geeignet. Nicht eingestandene Bedürfnisse oder unterdrückte Leidenschaften führen zu einer unklaren Führung. Dabei ist jeder zugleich Führer und Geführter. Die Rollen können abhängig von der Situation durchaus wechseln.

Anselm Grün weist darauf hin, dass Führen nicht bedeutet über andere zu herrschen oder andere klein zu machen. Wer andere klein macht, kann auch nur eine kleine Leistung erwarten. Vielmehr muss der Führende in den Menschen „Leben wecken“, nicht nur die Arbeitskraft, sondern das Potential an Ideen und Kreativität sehen. Es ist die Abkehr von der Frage, was die anderen einem bringen. Gleichzeitig darf sich der Verantwortliche nicht von der Meinung anderer abhängig machen. Ansonsten wird er von den Erwartungen der Menschen geführt, er gibt nicht die Richtung vor.

Interessant ist für mich, wie Anselm Grün bei fast allen Themen aus einer alten Sprache scheinbar die Erfahrung von Generationen herzuleiten vermag. Gut gefällt mir der Begriff des Dienens. Das lateinische Wort für Diener „servus“ meint dabei den Läufer. Der Führende kann zum Beispiel dafür sorgen, dass die Kommunikation gut läuft, dass es emotional zwischen den Mitarbeitern gut läuft. Das griechische Wort für Diener „diakonos“ wiederum meint dem Leben dienen. Der Verantwortliche zeichnet sich dadurch aus, dass er Leben hervorzulocken vermag. Er nimmt sich Zeit für die Mitarbeiter, um das vorhandene Potential zu erschließen.

Ich empfehle das Buch allen, die davon überzeugt sind oder sich überzeugen möchten, dass Führung von Menschen mehr ist als das Anwenden von Methoden.

IPMA Zertifizierung Level D bis A

Bei einer Zertifizierung nach IPMA (International Project Management Association) Standard liegt der Fokus auf den für das Projektmanagement notwendigen Kompetenzen. Vier Stufen führen zum „Erfolg“: Level D bis A.

Das Zertifizierungssystem der IPMA umfasst vier Stufen, vom Projektmanagement-Fachmann (Level-D) bis zum Projektdirektor (Level-A). Die einzelnen Stufen können nacheinander durchlaufen werden und bauen aufeinander auf. Sind die Voraussetzungen für ein bestimmtes Level erfüllt, ist allerdings auch die direkte Zertifizierung möglich.

Die Definition der geforderten Kompetenzen ist in der IPMA Competence Baseline (ICB) beschrieben. Insgesamt werden 46 Kompetenzelemente definiert, verteilt auf folgende Bereiche:

  • PM-technische Projektmanagement-Kompetenzen (20 Elemente)
  • PM-Verhaltenskompetenzen (15 Elemente)
  • PM-Kontextkompetenzen (11 Elemente)

Der deutsche Vertreter der IPMA ist die Deutsche Gesellschaft für Projektmanagement (GPM). Als unabhängige Zertifizierungsstelle der GPM fungiert die PM-ZERT, sie erteilt Zertifikate nach dem IPMA 4-Level-System.

MS Project und Jira synchronisieren

In diesem Beitrag möchte ich eine kleine Anwendung für die Synchronisierung von MS Project und Jira vorstellen. Arbeitspakete aus MS Project können automatisch in Jira angelegt und aktualisiert werden. Der Projektplan wiederum wird aus Jira heraus auf dem richtigen Stand gehalten.

Ein MS Project Add-In der Firma Ceptah Solutions ermöglicht genau dies. Die Software nennt sich Ceptah Bridge und ist nach der Installation im MS Project Menü unter Add In verfügbar. Damit die Verbindung mit Jira grundsätzlich zustande kommt muss auf dem Jira-Server die Option Accept remote API calls aktiviert sein.

Welche Felder synchronisiert werden, und in welcher Richtung dies geschieht, kann im Konfigurationsmenü von Ceptah Bridge recht übersichtlich definiert werden. Synchronisiert wird manuell, die Änderungen können vor der Übernahme geprüft und gegebenenfalls verworfen werden.

Sinn und Zweck des Ganzen ist die einfache Übertragung geplanter Arbeitspakete an die entsprechenden Entwickler. Wenn Jira als Bug-Tracker und MS Project als Planungswerkzeug bereits im Einsatz sind, kann mit dieser kostengünstigen Lösung durchaus ein effizienter Entwicklungsprozess realisiert werden.

Zugriffsrechte für ein Jira-Projekt konfigurieren

Sie möchten einer Gruppe von Benutzern, z. B. einem Lieferanten, den Zugriff auf ein bestimmtes Jira Projekt gestatten. Alle übrigen Projekte sollen vom Lieferanten nicht einsehbar sein. Ihre internen Mitarbeiter müssen natürlich weiterhin auf alle Projekte zugreifen können.

Der wichtigste Punkt gleich zu Beginn, alle Benutzer müssen in Jira einer Gruppe angehören die unter Global Permissions -> JIRA Users festgelegt wird. Zum einen muss ein Benutzer Mitglied dieser Gruppe sein, um sich einloggen zu können. Zum anderen wird jeder neue Benutzer automatisch Mitglied dieser Gruppe. Für den oben genannten Anwendungsfall sind daher zwei weitere Gruppen notwendig.

Insgesamt werden drei Gruppen jira-users, jira-intern und jira-lieferant mit entsprechenden Rollen Users, Intern und Lieferant benötigt. Dabei sind alle Benutzer der Gruppe jira-users und wahlweise der Gruppe jira-intern oder jira-lieferant zugeordnet.

Im Default Permission Scheme sollte Browse Projects nur die Rolle Intern zugeordnet sein. Entsprechend erhält auch nur Intern alle weiteren gewünschten Rechte.

Das Lieferant Permission Scheme kann aus einer Kopie von Default Permission Scheme erzeugt werden. Danach wird allen Rechten denen die Rolle Intern zugeordnet ist zusätzlich die Rolle Lieferant hinzugefügt. Entscheidend ist, dass Browse Projects beide Rollen (Intern und Lieferant) zugeordnet sind.

Allen internen Projekten wird das Default Permission Scheme, dem Projekt des Lieferanten das Lieferant Permission Scheme zugeordnet.