In diesem Teil m枚chte ich beschreiben, wie die Softwareentwicklung in unserem Projekt technisch abgelaufen ist und welche Werkzeuge wir dabei genutzt haben, damit alles rund l盲uft und wir uns auf das Wesentliche konzentrieren konnten. Zudem werde ich auf das Thema Cloud eingehen, denn die Cloud wird immer wichtiger, wenn es darum geht, Anwendungen schnell und unkompliziert zu deployen.
Aufgrund des explorativen Ansatzes in unserem Projekt FINAS Quick-Check 脰D war es besonders wichtig, dass wir nach dem Prinzip von CI/CD entwickeln. Was bedeutet das? Mit dem Aufkommen agiler Methoden in der IT laufen Entwicklung, Qualit盲tssicherung (QS) und Bereitstellung der Software nicht mehr als einzelne Stufen nacheinander ab, sondern werden immer mehr miteinander verzahnt. Die Ergebnisse der Entwicklung sollen m枚glichst schnell zur Verf眉gung stehen. In den letzten Jahren hat sich daher zunehmend die Praxis von Continuous Integration (CI) und Continuous Delivery bzw. Continuous Deployment (CD) etabliert. Das hei脽t, dass wir 脛nderungen in kurzen Zyklen in die Software integrieren k枚nnen (CI) und sie zeitnah an die Anwender ausliefern, damit sie f眉r einen schnellen Test und f眉r fachliche R眉ckl盲ufe genutzt werden k枚nnen. In agilen Projekten werden die 脛nderungen, also z.B. die Ergebnisse eines Sprints, auch oft kurzfristig in einer Live-Produktivumgebung bereitgestellt (CD).
Unser Ziel war es vor allem, dass Softwareentwicklung, Test und Deployment so weit wie m枚glich automatisiert werden und zugleich daf眉r gesorgt ist, dass die Qualit盲t der ausgebrachten Software stimmt. Um dies zu erreichen, kam unsere 鈥濪evelopment Pipeline鈥� zum Einsatz.
Das, was alles zusammenh盲lt: die Development Pipeline
Unsere Development Pipeline beschreibt den gesamten Entwicklungs颅prozess, inklusive der von uns im Projekt verwendeten Tools. Zur Automatisierung und Steuerung des Prozesses haben wir ein Pipeline-Tool genutzt. Machen wir zun盲chst eine Bestandsaufnahme, welche Tools f眉r die Entwicklung f眉r uns unverzichtbar waren:
- Zum einen nat眉rlich die Entwicklungsumgebung, die jeder Softwareentwickler und jede Softwareentwicklerin auf dem eigenen Rechner hat, um den Sourcecode zu programmieren, die Anwendung lokal zu starten sowie zu testen.
- Zum anderen eine Source-Verwaltung, in der der gemeinsam entwickelte Code ablegt wird.
- Um gegenseitig unseren Code nach dem Vier-Augen-Prinzip 眉berpr眉fen zu k枚nnen, haben wir ein Code-Review-Tool genutzt.
- Ein Build-Server, um die Software zentral zu bauen und die Unit-Tests auszuf眉hren.
- Au脽erdem ein QS-Tool zur automatischen Kontrolle der Codequalit盲t/Testabdeckung.
- Zu guter Letzt eine Deployment-Umgebung, in der die Software deployt wird.
In der folgenden Grafik habe ich die Development Pipeline, wie wir sie in unserem Projekt FINAS Quick-Check 脰D verwendet haben, einmal grob skizziert:
/1.%20Visuals/Website/Germany/04%20-%20blogs/Jenkins-Pipeline-quickcheck-%C3%B6d.drawio-1.png?width=600&height=395&name=Jenkins-Pipeline-quickcheck-%C3%B6d.drawio-1.png)
Am Anfang steht 鈥� wie sollte es anders sein 馃槈 鈥� immer ein Entwickler oder eine Entwicklerin, um den Code vom lokalen Rechner auszuchecken, 脛nderungen an der Software zu programmieren und dann in die gemeinsame Source-Verwaltung einzubringen (鈫抪ushen). Als Source-Verwaltung haben wir das weit verbreitete Git mit dem vorgelagerten Code-Review-Tool Gerrit verwendet. Damit 脛nderungen final in der Source-Verwaltung 鈥瀡erewigt鈥� werden konnten, wurde zun盲chst ein Prozess in Gang gesetzt, in dessen Verlauf der Code zwei wichtige H眉rden nehmen musste.
Erstens, und das geschieht ganz automatisch mit dem Push, wird die Pipeline gestartet, in deren Verlauf
- die Software auf dem Build-Server ausgecheckt, gebaut und die Unit-Tests ausgef眉hrt,
- die Codequalit盲t und die Testabdeckung von einem Code-QS-Tool gepr眉ft (wir verwenden SonarQube),
- und die Software f眉r das Deployment als Docker-Image gebaut und dann in der Azure-Cloud als Container in einem Kubernetes-Cluster deployt werden.
Wenn auch nur an einer Stelle dieses Prozesses etwas schiefgeht, z.B. ein Unit-Test fehlschl盲gt oder die Testabdeckung nicht das gew眉nschte Ma脽 erreicht, wird der Prozess abgebrochen und der Entwickler bzw. die Entwicklerin benachrichtigt (鈫払uild ist rot). Wird der Prozess bis zum Deployment erfolgreich durchlaufen, sind die 脛nderungen schon testbar.
Die zweite H眉rde, die der eingecheckte Code 眉berwinden musste, war die Kontrolle durch ein weiteres Teammitglied. Dieses pr眉ft die Code盲nderungen nach dem Vier-Augenprinzip und bringt ggfs. noch 脛nderungsw眉nsche ein. F眉r eine solche Kontrolle stellt das Tool Gerrit eine komfortable Benutzeroberfl盲che zur Verf眉gung. Erst wenn die Pipeline erfolgreich durchgelaufen ist und der Reviewer zu den Code盲nderungen sein OK gegeben hat, werden die 脛nderungen in die Source-Verwaltung dauerhaft 眉bernommen (鈫抯ubmitted).
Das Ergebnis
Am Schluss hatten wir also einen manuell und automatisch qualit盲ts颅gesicherten Code sowie einen testbaren Stand der Anwendung in der Cloud mit dem neuen Feature. Und das Ganze so von Tools unterst眉tzt, dass alle Beteiligten sich auf das Wesentliche konzentrieren konnten: Die korrekte Umsetzung der Vorgaben und die Qualit盲t des Codes.
Im Zusammenhang mit dem Deployment habe ich eben einige Begriffe verwendet, auf die ich im folgenden Absatz noch etwas n盲her eingehen m枚chte.
Cloud, Container und Cluster
Mein Rechenzentrum im Internet
Wie wir gesehen haben, ist die Endstation der Pipeline das Deployment in der Cloud. Was aber verbirgt sich genau dahinter? 鈥濪IE CLOUD鈥�, das war f眉r mich anfangs immer ein etwas schwammiger Begriff. Einerseits ein Ablageort von Dateien, auf die man dann von 眉berall und von allen Ger盲ten zugreifen konnte, andererseits gab es da dann auch noch das hochkomplex erscheinende Konzept des Cloud-Computing. Nachdem ich mich ein bisschen damit besch盲ftigt hatte, bin ich f眉r mich pers枚nlich zu dem Schluss gekommen, dass die Cloud einfach mein 鈥濺echenzentrum im Internet鈥� ist. Also eigentlich alles wie bisher, nur dass ich mich nicht mehr um Dinge wie Serverr盲ume, Server, K眉hlung, Wartung, Softwareupdate, Netzwerke etc. k眉mmern muss, da die Cloud mir das alles zur Verf眉gung stellt.
Theoretisch ist alles viel einfacher und flexibler geworden: Mit ein paar Klicks bestelle ich mir die n枚tigen Server颅kapazit盲ten und mit ein paar weiteren Klicks bestelle ich sie auch wieder ab. In der Praxis ist es dann aber meist doch nicht immer ganz so einfach. Die M枚glichkeiten sind quasi unendlich gro脽 und als Nutzer der Cloud muss man sich oft durch einen Dschungel von Konfigurationsm枚glichkeiten k盲mpfen.
鈥� Kein individuelles Hosten von Servern in Rechenzentren oder vor Ort notwendig
鈥� Infrastruktur skaliert einfach
鈥� Viele Anforderungen an IT-Sicherheit werden vom Cloud-Anbieter gew盲hrleistet
鈥� Ausfallsicherheit
鈥� Monitoring
Wir hatten uns dazu entschieden, den FINAS Quick-Check 脰D selbst zu betreiben und auch als Software as a Service bereitzustellen. Unsere Kunden erhalten jeweils einen (individualisierten) Link, 眉ber den sich die Anwendung aufrufen und z. B. in den eigenen Internetauftritt einbinden l盲sst. Der Grund f眉r ein Deployment in der Cloud war, dass es uns auf der einen Seite die M枚glichkeit gibt, die Anwendung ohne gr枚脽ere Aufw盲nde direkt in Produktion zu bringen. Auf der anderen Seite k枚nnen wir durch den Betrieb in der Cloud einfach und schnell auf einen Anstieg der Nutzerzahlen reagieren und die Anwendung entsprechend skalieren.
Inzwischen gibt es viele gro脽e Cloudanbieter, z. B. Amazon Web Services, Google Cloud Platform, IBM Cloud etc. In unserem Projekt haben wir die Azure-Cloud von Microsoft verwendet, da sie viele M枚glichkeiten und eine gute Kostenkontrolle bietet. Die Lernkurve empfand ich pers枚nlich f眉r den Einstieg aber auch als sehr steil.
Container
Unser FINAS Quick-Check 脰D l盲uft in einem Container 鈥� also einem "Beh盲lter鈥� f眉r die Anwendung. Hierbei handelt es sich um eine gekapselte Laufzeit颅umgebung f眉r die Applikation. Man kann es sich wie eine Miniaturversion einer virtuellen Maschine vorstellen, die ihr eigenes kleines Betriebssystem dabei hat, mit allem was die Anwendung braucht 鈥� und auch nur das. Dadurch ist sie von dem Betriebssystem, auf dem der Container l盲uft, unabh盲ngig.
Um eine Anwendung in der Cloud zu deployen, wird sie in einem Container 鈥瀡erpackt鈥� und daraus ein Image erstellt, sprich eine Bauanleitung f眉r den Container, die in einer Registry abrufbar ist. In unserem Projekt haben wir 鈥濪ocker鈥� verwendet, die am weitesten verbreitete Containertechnologie.
Cluster
In der Cloud l盲uft unsere Anwendung in einem sogenannten Cluster. Das ist eigentlich nichts anderes als ein St眉ck Software, mit dem man 鈥瀋ontainerisierte" Anwendungen (s.o.) laufen lassen kann und das einem einige grundlegende w眉nschenswerte Eigenschaften einer Webanwendung erm枚glicht. Stichworte sind hier:
- Skalierbar: Der Cluster sorgt daf眉r, dass bei einem erh枚hten Bedarf automatisch zus盲tzliche zus盲tzliche Container gestartet werden.
- Verteilt: Die Anwendung kann z.B. auf verschiedene geografische Zonen verteilt werden. Dies sorgt u.a. f眉r Ausfallsicherheit.
- 脺产别谤飞补肠丑产补谤: Der Cluster erm枚glicht das 脺berwachen von Ressourcenverbrauch, Zugriffen und sowie das Logging.
Den Kontext von Cloud, Container und Cluster habe ich hier noch einmal in einer Grafik dargestellt:
/1.%20Visuals/Website/Germany/04%20-%20blogs/Grafik-Cloud-Container-1.jpeg?width=600&height=314&name=Grafik-Cloud-Container-1.jpeg)
R眉ckblickend kann ich sagen: Wir haben im Rahmen des Projekts alles geschafft, was wir uns vorgenommen hatten. Wir haben die Ergebnisse, die zuvor in der Foundation Phase f眉r den FINAS Quick-Check 脰D erarbeitet wurden, umgesetzt und die Anwendung in verh盲ltnism盲脽ig kurzer Zeit auf die Beine gestellt. Dabei haben wir mit modernen Frameworks gearbeitet. Dies hat uns die Arbeit enorm erleichtert und es erm枚glicht, eine Anwendung zu erstellen, die nicht morgen bereits wieder 眉berholt ist. Mit unserer Development Pipeline haben wir den Entwicklungsprozess schlank und gleichzeitig effizient gestaltet 鈥� immer mit Blick auf die Qualit盲t sowie die Anforderungen von CI/CD.
Mir pers枚nlich hat das Projekt extrem viel Spa脽 gemacht. Jeder im Team war an allen Entscheidungen beteiligt und hat sich sowohl fachlich als auch technisch voll eingebracht, damit wir unser gemeinsames Ziel erreichen. Au脽erdem war es nochmals eine gute Gelegenheit, mich mit den Aspekten Betrieb bzw. Hosting einer Anwendung zu besch盲ftigen und mein Wissen 眉ber Cloud-Technologien zu vertiefen und anzuwenden.
So, jetzt aber genug geredet. Wer neugierig auf unseren FINAS Quick-Check 脰D geworden ist und ihn selbst einmal ausprobieren m枚chte 鈥� die Standardversion der Anwendung und weitere Informationen gibt es hier.
FINAS Suite - Softwarekomponenten zur Unterst眉tzung Ihrer Vertriebsprozesse
Seit 眉ber 30 Jahren sind wir ein f眉hrender IT-Dienstleister und verl盲sslicher Partner f眉r Versicherungen und Banken. Die Beratungsanwendungen unserer FINAS Suite unterst眉tzen den gesamten Vertriebsprozess: vom Verkaufseinstieg 眉ber Beratung und Analyse bis hin zum Antrag inklusive Druckerstellung. Komplexe Berechnungen werden 眉ber eigene finanz- und versicherungsmathematische Rechenkerne professionell abgedeckt.