Ausgangslage
Die Ypsomed Holding AG ist ein Schweizer Medizinal Technologie Unternehmen mit rund 1600 Mitarbeitenden. Die Ypsomed ist auf die Entwicklung und Herstellung von Kundenspezifischen Injektions- und Infusionssystemen für die Selbstmedikation spezialisiert.
Von einem einst mehrheitlich, mechanischen Unternehmen verändert sich durch die Digitalisierung einen Grossteil der herkömmlichen Produktepalette. Etablierte Systeme müssen neu durchdacht werden. Medizinprodukte sind in der Lage Therapiedaten zu sammeln oder durch eine App gesteuert zu werden. In diesem Zusammenhang verändert sich das Unternehmen laufend in ein mehr softwaregestütztes Unternehmen mit grossem Wachstum im Bereich Software.
In der Embedded Softareentwicklung wurde ein Projekt gestartet, mit dem Ziel eine State-of-the-Art Infrastruktur zur Implementation von Software aufzubauen. Neu werden Softwareartefakte zentral auf einem lokalen Server gehostet. Serverseitig kommt dazu JFrog Artifactory als Repository Manager zum Hosten von vorkompillierten Softwareartefakten zum Einsatz. Clientseitig wird Conan Package Manager zum Erstellen und Verteilen von Binärdateien verwendet. Conan schreibt dabei «Rezepte» mit allen Abhängigkeiten der verschiedenen Softwarepakete.
Zielsetzung
Mit Conan lässt sich das "Rezept" eines Softwarepakets auslesen. Dies beinhaltet jedoch nur die "Zutaten" (Abhängigkeiten) für das jeweilige Softwarepaket. Im Graph sind das alle Abhängigkeiten gegen unten, vom jeweiligen Softwarepaket aus gesehen.
In der Ypsomed kam der Wunsch auf, eine Webapplikation zu entwickeln, die Abhängigkeiten im Graphen gegen unten, und auch gegen oben auszulesen. Das heisst, welche Abhängigkeiten hat ein Artefakt (gegen unten im Graph), und in welchen Softwarepaketen ist dieses Paket abhängig (gegen oben im Graph). Zusätzlich soll die Applikation mit weiteren Funktionalitäten ausgestattet werden.
Weg zum Ziel
In den Anfangsphasen wurde das Projekt geplant und konzeptioniert. Dabei wurden drei Technologien zur Umsetzung evaluiert - für das Backend wird das Framework Spring Boot verwendet, für das Frontend Angular und Neo4j wird als Datenbank eingesetzt.
Neo4j ist eine Graphdatenbank, die das Rückgrat der Applikation bildet. Eine Graphdatenbank nutzt die mathematische Graphentheorie um Daten zu speichern. Dadurch lassen sich stark vernetzte Informationen speichern und komplexe Abfragen performant ausführen.
Besondere Herausforderungen
Eine der grössten Herausforderungen war das Konzept und die Implementation eines automatisierten Speicherungsprozess der Softwareartefakte in die Datenbank. Dabei wird während einer automatisierten Build-Pipeline ein Prozess ausgelöst, der die Information eines Softwarepakets an das Backend sendet. Diese Informationen sind nur als einzelne, unbestimmte Anzahl n-"Puzzlestücke" vorhanden, und werden im Backend zu einem Graphen zusammengesetzt, und anschliessend im vorhandenen Graphen in der Datenbank integriert.
Docker
Die ganze Applikation wird in Docker Containern entwickelt, gebuildet, getestet und schlussendlich ausgeführt. Dies bildet für jeden Anwendungsfall die gleiche isolierte Umgebung.
Dafür wurden jeweils drei Docker Compose Umgebungen gebaut - eines für die lokale Backend Entwicklung, eines für die lokale Frontend Entwicklung, und eines für das produktive System in welchem alle drei Container integriert sind (Frontend, Backend, Datenbank).
Retrospektive
Bis anhin habe ich noch nie eine komplette Applikation in dieser Grösse Entwickelt. Die Diplomarbeit ist für mich wie ein Puzzle, in dem die gelernten Module des Studiums zu einem Bild zusammengesetzt wurden. Die Arbeit war für mich dementsprechend enorm lehrreich und eine gute Erfahrung für die Zukunft.
Auch habe ich negative Seiten erfahren und kam in gewissen Phasen der Arbeit mit dem Ausmass des Projektes an meine Grenzen.
Rückblickend bin ich jedoch stolz auf mich selbst, diese Applikation umgesetzt zu haben. Sie bildet eine gute Basis auf der weiterhin aufgebaut werden kann. Die Applikation bringt der Firma einen grossen Mehrwert.