In einer superkurzen Zeit von nur wenigen Wochen stellte unser Team remote eine Entwicklungsumgebung vollständig in der Amazon Cloud bereit. Bestückt mit einem MVP-Testvehicle auf Basis von Alexa kam dabei eine Entwicklungsumgebung zustande, die einen Meilenstein der zukünftigen Softwareentwicklungsumgebung markiert.

Der technologische Stack kann als Blaupause für „Lean Startups“ dienen.

Tech-Stack

Mit diesen Tools (und noch ein paar mehr) erstellten wir eine Continuous-Integration-Umgebung, deren Infrastruktur vollständig in Ansible-Scripts und Docker-Containern abgebildet ist. Eine von uns erstellte Provisioning-App versetzt die Entwickler unseres Kunden jetzt in die Lage, sich via erweiterbarer Quickstarter das Projektsetup auszuwählen, das für sein Projekt passend ist (Frontend und/oder Backend).

Die Quickstarter stellen einen Basisrumpf einer Applikation in einer bestimmten Technologie dar (z. B. Angular, NodeJS Backend, Sprint Boot Backend, …). Die Provisioning App sorgt dann dafür, dass die notwendigen Projekte in den einzelnen Tools (Jira, Confluence, Bitbucket, OpenShift) angelegt werden. Gleichzeitig installiert es einen Applikationsrumpf, stellt diesen in Bitbucket bereit und richtet Webhooks ein. Es werden notwendige OpenShift-Projekte und Ressourcen erzeugt.

Nach Beendigung eines Provisioning-Vorgangs kann der Entwickler den Code aus den neu angelegten Repositories clonen, entwickeln und dann pushen. Ohne weiteres Zutun wird der Code gebaut, unit- und integrationsgetestet und dann auf OpenShift deployed. Es bleibt einzig noch übrig, eine Route einzurichten, wenn die Anwendung aus dem Internet erreichbar ein soll.

„The Story behind“ unseres Auftrages beschrieb unser Kunde so:

Mit vielen kleine Teams wollen wir in der Lage sein mit hoher Geschwindigkeit zu entwickeln und mit Daten zu arbeiten, die wir in einem Data Lake speichern. Es gilt dabei keine Zeit mit Projekt-Setup, Erstellung eines Repositories oder dem sonst üblichen „first week waste“ zu verschwenden.
Sobald das Team zusammengestellt und die Technologie, die wir nutzen wollen, klar sind, muss in wenigen Minuten eine Entwicklungsumgebung aufgebaut und zur Verfügung stehen.
Als Beispiel ist eine Gruppe von 5 Entwicklern zu nennen, die in Java / Node / Python ein Backend schreiben sollen, welches Daten über JNDI / SSH / REST abruft und es va REST / Websocket einer Frontend-Anwendung auf der Grundlage von Angular 2 bereitstellt. Eine Provisioning-App nimmt die Mitarbeiter-IDs, die Backend-Tech- und Frontend-Tech-Vorgaben auf und initiiert einen Confluence-, Jira- und Git-Bereich sowie eine Jenkins-Pipeline, die automatisch auf einem Master-Branch-Push baut, testet und deployt, sowie ein Peer-Review-Prozesse nach Best-Practice einfordert. Die Entwickler werden über ihre Anmeldeinformationen, die entsprechenden URLs zu den Systemen sowie einer Dokumentation, wie die Systeme zu nutzen sind, informiert. Sie können sofort mit der Codierung/Entwicklung beginnen, ohne dass sie Server, Firewall-Regeln, Wiki-Räume oder den üblichen Overhead anfordern müssen.
Wenn die Anwendung ein Erfolg ist, kann der ganze Stack dann in unsere Vor-Ort-Systeme geschoben werden, denn alles ist auf Docker aufgebaut. Die Daten hinter der Applikation sind nun Teil unseres gesamten Data Lake und nicht mehr nur eine in AWS gespeicherte Entwicklung.

Alle Beiträge von djaehrling

Senior Manager Solutions bei OPITZ CONSULTING GmbH

Schreibe einen Kommentar