Software Inbetriebnahme beim Kunden

Es kann vorkommen, dass deine Kunden eigene Server betreiben und deine Software zB dort installiert haben möchten. Das kommt häufig in der Industrie und bei größeren Betrieben vor die eine eigene IT Abteilung haben und strikt gegen eine Auslagerung in ein Rechenzentrum sind. Das mag gute Gründe haben, behindert dich aber bei deiner Arbeit und Aufsetzen und Installation der Software zieht sich in die Länge. Damit du das Ding trotzdem so schnell wie möglich beim Kunden am Laufen hast habe ich hier ein paar Tipps zusammengetragen.

Fernzugriff zum Server

Zwar nicht immer möglich aber du musst alles daran setzen, einen Fernzugriff über VPN zum Server zu bekommen. Die Installation kannst du vielleicht noch vor Ort machen aber sobald es Fehlermeldungen gibt oder du Updates einspielen musst ist ein Fernzugriff Gold wert. Das erspart dir viel Zeit und du kannst viel schneller auf Fehler reagieren. Ausserdem ist Bugfixing direkt am Kundenserver vor Ort sehr schwierig und kann viel Zeit verschlingen da du deine gewohnte Entwicklungsumgebung nicht zur Verfügung hast.

Keine Bugfixes direkt am Kundenserver

Damit kommen wir schon zum nächsten Punkt den du beachten solltest. Bei Software die noch nicht vollständig ausgereift und stabil ist kommt es fast täglich vor, dass der Kunde anruft oder Emails mit Fehlermeldungen schickt. Bei kleinen Fehlern die mit ein paar Zeilen Änderungen behoben sind ist die Versuchung groß, den Fehler direkt am Kundenserver im Code zu fixen und damit die Aufgabe zu erledigen. Wenn ein direkter Subversion Zugriff vorhanden ist und der Code aus dem Repository ausgecheckt wurde spricht nichts dagegen, da man den geänderten Code schnell und einfach wieder committen kann. Der Bugfix ist somit für alle Programmierer zugänglich und beim nächsten Update bei allen vorhanden.

Wenn du aber keinen direkten Subversion Zugriff hast oder einfach den Bugfix nicht committen möchtest dann wirds schwierig. Vorerst nicht. aber wenn du das ein paar Wochen so machst hast du folgende Probleme:

  • Beim updaten kann es zu Konflikte kommen wenn die gleichen Dateien im Büro bearbeitet und erweitert wurden. Dann darfst du mühsam jede einzelne Datei mergen.
  • Niemand weiß mehr welche Codestand beim Kunden aktiv ist, welche Bugs behoben wurden und welche alten Bugs noch vorhanden sind, weil gewisse Dateien nicht aktualisiert werden konnten.
  • Wenn du das bei mehreren Kunden so machst hat irgendwann jeder Kunde einen eigenen Source Code Standard und du bist meilenweit von einem Standardprodukt entfernt!

Das sind alles Probleme die du nicht haben möchtest und vermeiden kannst!

Zugriff auf das Internet vom Kundenserver wenn dieser gesperrt ist

Da bei großen Unternehmen meistens recht hohe Sicherheitsbestimmungen den Zugriff von Servern auf das Internet unterbinden musst du einen anderen Weg finden mit deinen Services zu kommunizieren. Die meisten Services wie Subversion Zugriff, FTP usw sind bereits meistens über das Internet zu erreichen. Wenn du vom Kundenserver nicht direkten Zugriff auf das Web hast oder ein paar bestimmte Ports gesperrt sind (Meistens ist nur Port 80 und 443 nach aussen offen) gibt es zwei andere Möglichkeiten die ganz gut funktionieren:

Tunnel über einen anderen Port und einen entfernten Server

Wenn du nur eingeschränkten Zugriff nach aussen hast kannst du die vorhandenen offenen Ports nutzen um einen Tunnel zu errichten. Tunnels funktionieren auf eine einfache Art und Weise. Angenommen du brauchst Zugriff auf Subversion, also Port 3690. Du hast aber nur Zugriff nach aussen auf Port 80, dann kannst du mit einem Tunnel alle Verbindungen lokal auf Port 80 stellen, diese Daten über den Tunnel an einen Server über Port 80 schicken welcher dann die Daten zum richtigen Server an Port 3690 schickt. Der entfernte Server leitet somit alle Anfragen von Port 80 auf den Zielserver auf Port 3690 weiter.

So einen Tunnel kannst du mit einem SSH Client (zB Putty) und einem SSH Server aufbauen. Es gibt genügend Tutorials die den Verbindungsaufbau beschreiben.

Tunnel über den eigenen PC

Wenn du gar keinen Zugriff nach aussen hast und du mit deinem PC nur über Remote Desktop und VPN mit dem Kundenserver verbunden bist wird es eine Stufe schwieriger. Da du keinen Zugriff nach aussen hast kannst du auch keinen entfernten Server für einen Tunnel nutzen. Was aber ziemlich sicher funktioniert, ist der Zugriff vom Kundenserver auf deinen eigenen PC. Wenn du mit VPN eingewählt bist, bist du ja quasi ein PC im Firmennetzwerk der ungehindert mit dem Kundenserver kommunizieren kann. Dein eigener PC muss somit als Schnittstelle zwischen Kundenserver und Internet agieren. Möglich wird das, wenn du einen Proxy bei dir lokal einrichtest. Für Windows gibt es hier ein paar Freeware Programme. Danach musst du alle Verbindungen vom Kundenserver über den Proxy leiten der wiederum alles ins Internet leitet. Jetzt kannst du über einen SSH Client der über deinen lokalen Proxy geht einen Tunnel zu einen entfernten SSH Server aufbauen. Alles weitere funktioniert wie oben beschrieben!

FIXME