MicroAbstract3: Software-Recyling und zentrales Management durch Repositorys

Wiederverwendbarkeit ist ein zentrales Thema in der Software-Entwicklung. Die Produktion von Quellcode ist ein wesentlicher Faktor bei der zeitlichen Planung eines Software-Projektes. Im Bereich Wartung und Fehlersuche wird ebenfalls deutlich, wie wichtig ein erreichbares Archiv für Software-Module wird. Desweiteren wird durch eine zentrale Verwaltung eine redundante Verteilung vermieden. Somit können Anpassungen einfacher und mit kürzeren Wartungszeiten durchgeführt werden. Gerade in größeren Software-Projekten mit mehreren Subprojekten und dazugehörigen Entwickler-Teams eignet sich ein lokales Repository auch als Proxy, welcher die Anbindung an einen entfernten Proxy verwaltet und im lokalen Cache häufig benötigte Code-Komponenten und Bibliotheken bereitstellt, sodass diese in kürzeren Zeiten von der Entwicklungsumgebungen eingebunden werden können. Das ist vor allem bei öffentlichen Repositorys unabwendbar, denn Entwicklung folgen in den meisten Fällen einem Zeitplan, der keine Verzögerungen durch häufig unzuverlässige öffentliche Proxys zulässt. Maven-Proxy ist ein Produkt der Firma Codehaus und wird in den meisten aktuellen Software-Projekten eingesetzt. Hauptaufgabe ist es, Software-Komponenten innerhalb eines Caches bereitzustellen. Sind diese im lokalen Cache nicht vorhanden, importiert Maven-Proxy die fehlenden Komponenten inklusive ihrer transistiven Abhängigkeiten von vorgelagerten Proxys. Sind diese dort auch nicht vorhanden, werden wieder die vorgelagerten Proxys konsultiert, bis die entsprechende Komponente gefunden ist, oder festgestellt wird, dass es sie nicht gibt. Maven-Proxy arbeitet als Stellvertreter für die lokalen Entwicklungsumgebungen und bietet somit auch die Möglichkeit einer Proxy-Kette für verteilte Umgebungen, wodurch Warte- und Anfrage-Zeiten wesentlich verkürzt werden.

Die Firma JFrog entwickelt aufgrund wachsender Anforderungen das System Artifactory, welches speziell für die Eigenschaften des Maven2-Buildsystems optimiert wurde. Es bietet hierfür drei wichtige Kriterien: Verbesserte Proxy-Anbindung an öffentliche Maven-Java-Repositorys gegenüber anderen Repositorys, optimiertes und verteilbares Caching und verbesserte Sicherheitsoptionen für das Deployment und die Webverwaltung. Ziel von Artifactory ist hierbei die Realisierung einer unabhängigen und robusten Umgebung für Maven2-Entwicklungen. Es greift dabei auf ein Java Content Repository zurück, welches ein vollindiziertes Repository erstellt. Die ajax-basierte Webverwaltung ermöglicht ohne Probleme den Import und Export aus und in andere Maven-Archive wie beispielsweise Maven-Proxy, was zu einer schnellen Verbreitung von Artifactory als Haupt- oder Backup-Repository in bestehende Entwicklungsumgebungen führte. Desweiteren unterstützt Artifactory multiple lokale Repositorys und kann mit Hilfe von LDAP auch in Domänen-basierten Computer-Pools mit einem Single-Sign-On eingesetzt werden. Die administrativen Rechte werden zentral über das Webinterface vergeben.

Ziel und Zweck eines Archivs für eine Software-Produktion ist die Bereitstellung von Komponenten. Das impliziert auch die Möglichkeit, eigene Komponenten in das Repository zu deployen. Somit wird es jedem Entwickler, sobald er in Artifactory mit den notwendigen Rechten administriert wurde, ermöglicht, Software an einem zentralen Punkt bereitzustellen, zu warten und zu erweitern. Benötigt anschließend ein anderer Entwickler die entsprechende Komponente, kann er sie beim zentralen Repository anfordern.