visual studio team foundation server

visual studio team foundation server

Stell dir vor, es ist Montagmorgen, 08:00 Uhr. Ein mittelständisches Softwarehaus mit vierzig Entwicklern will endlich das große Update durchziehen. Man hat jahrelang auf einer alten Version von Visual Studio Team Foundation Server gearbeitet, die Datenbank ist auf stolze zwei Terabyte angewachsen, und die Build-Agenten laufen noch auf Servern, die eigentlich ins Museum gehören. Der Plan: Ein direktes Upgrade über das Wochenende. Das Ergebnis am Montag? Die gesamte Entwicklungsabteilung sitzt vor leeren Bildschirmen. Die Schema-Konvertierung der Datenbank ist bei 74 Prozent abgebrochen, weil der SQL-Server nicht genug Transaktionsprotokoll-Speicher hatte. Ein Rollback ist unmöglich, weil das Backup nicht validiert wurde. Das kostet dieses Unternehmen pro Stunde etwa 4.500 Euro an reinem Gehaltsausfall, von den verpassten Deadlines ganz zu schweigen. Ich habe solche Szenarien in den letzten fünfzehn Jahren oft genug gesehen. Es ist fast immer der gleiche Hochmut, der dazu führt: Man unterschätzt die Komplexität gewachsener Strukturen und denkt, ein einfacher Klick auf "Setup.exe" erledigt die Arbeit.

Der Irrglaube an die unendliche Skalierbarkeit von Visual Studio Team Foundation Server

Viele Administratoren behandeln das System wie eine einfache Dateiablage. Das ist der erste große Fehler. In meiner Praxis begegne ich oft Installationen, bei denen alles auf einer einzigen virtuellen Maschine läuft – Application Tier, Data Tier und die Build-Komponenten. Sobald das Team wächst oder die Anzahl der automatisierten Tests steigt, geht das System in die Knie. Für eine alternative Perspektive, entdecken Sie: diesen verwandten Artikel.

Das Problem liegt meistens in der SQL-Datenbank. Wer glaubt, dass Standardeinstellungen für ein System dieser Größenordnung ausreichen, wird bitter enttäuscht. Wenn die Latenz der Festplatten steigt, reagiert die gesamte Oberfläche träge. Die Entwickler schieben es dann auf die Software, dabei liegt es an der Hardware-Konfiguration unter der Haube. Ein typischer Fehler ist das Ignorieren der "Workspace"-Logik. Wenn zehntausende Dateien in einem lokalen Workspace verwaltet werden, muss der Server bei jeder Operation riesige Metadatenmengen abgleichen. Das frisst RAM und CPU-Zyklen.

Ich habe erlebt, wie Firmen versuchten, durch billiges Storage Geld zu sparen. Am Ende zahlten sie das Dreifache, weil die Entwicklungszyklen um 20 Prozent länger dauerten. Ein langsames Repository ist wie Sand im Getriebe einer Hochleistungsmaschine. Wer hier nicht in schnelle NVMe-Speicher für die SQL-Logs investiert, spart an der völlig falschen Stelle. Weitere Informationen in dieser Sache wurden von Computer Bild bereitgestellt.

Warum die Verästelung der Verzweigungsstrategie dein Projekt tötet

Ein klassischer Fehler, den ich immer wieder sehe, ist die "Viel hilft viel"-Mentalität bei der Branch-Struktur. Teams legen für jedes kleinste Feature einen eigenen Branch an, ohne einen Plan für die Zusammenführung zu haben. Nach sechs Monaten stehen sie vor einem Scherbenhaufen.

Die Hölle der endlosen Integration

Wenn du fünfzehn aktive Branches hast, die alle irgendwann in den Hauptzweig zurückfließen müssen, verbringst du mehr Zeit mit dem Lösen von Merge-Konflikten als mit dem Schreiben von Code. In einem Projekt, das ich retten musste, brauchte das Team drei Tage für einen Release-Merge. Das ist kein produktives Arbeiten, das ist Schadensbegrenzung. Der Fehler liegt in der Annahme, dass die Technologie das organisatorische Chaos heilen kann. Das kann sie nicht.

Ein schlanker Ansatz ist hier fast immer überlegen. In der Praxis bedeutet das: So wenig Branches wie möglich, so viel Integration wie nötig. Wer "Long-lived Branches" über Monate mitschleift, baut sich eine technische Schuld auf, die irgendwann mit Wucherzinsen zurückgezahlt werden muss. Ich rate dazu, die Lebensdauer eines Zweigs auf maximal zwei Wochen zu begrenzen. Alles andere führt zu Entfremdung vom Hauptcode.

Build-Automatisierung ist kein Nebenprojekt für Werkstudenten

Oft wird die Verantwortung für die Build-Prozesse jemandem zugeschoben, der gerade Zeit hat. Das ist fatal. Eine instabile Build-Pipeline sorgt dafür, dass das Vertrauen der Entwickler in das System erlischt. Sobald "Build-Fails" zur Normalität werden, ignoriert das Team die Warnsignale.

Ich erinnere mich an einen Kunden, der sich wunderte, warum seine Builds vier Stunden dauerten. Wir schauten uns die Konfiguration an. Der Build-Agent war auf einer überbuchten VM installiert, die sich die Ressourcen mit einem Fileserver teilte. Zudem wurden bei jedem Durchlauf sämtliche Abhängigkeiten neu aus dem Internet geladen, anstatt einen lokalen Cache zu verwenden.

Hier ist ein realistisches Vorher-Nachher-Szenario aus einem Projekt im Jahr 2023:

Vorher: Ein Team von zehn Entwicklern startete den Build-Prozess manuell. Die Agenten waren schwach brüstig. Ein Durchlauf dauerte 55 Minuten. Fehler wurden erst spät bemerkt, oft erst am nächsten Tag. Die Kosten für die Wartezeit beliefen sich bei konservativer Rechnung auf über 10.000 Euro pro Monat.

Nachher: Wir stellten auf dedizierte Bare-Metal-Build-Server um und implementierten inkrementelle Builds sowie einen lokalen Paket-Proxy. Die Zeit sank auf 8 Minuten. Fehler wurden sofort per E-Mail und Chat gemeldet. Die Entwickler konnten innerhalb ihrer Konzentrationsphase reagieren. Die Investition in die Hardware hatte sich nach genau sechs Wochen amortisiert.

Der Unterschied ist gewaltig. Es geht nicht nur um die Zeit, sondern um den psychologischen Effekt. Ein schneller Build gibt Sicherheit. Ein langsamer Build lädt zur Kaffeepause ein, die dann dreißig Minuten dauert.

Die versteckten Kosten von falsch konfigurierten Berechtigungen

Sicherheit ist wichtig, aber Paranoia blockiert den Fortschritt. Ein häufig beobachtetes Muster ist das "Least Privilege"-Prinzip, das so extrem ausgelegt wird, dass Entwickler für jede neue Collection oder jedes neue Projekt ein Ticket beim IT-Support eröffnen müssen.

Wenn ein hochbezahlter Senior-Entwickler zwei Tage auf die Freigabe eines Bereichs warten muss, ist das Geldverbrennung pur. Auf der anderen Seite sehe ich oft das Gegenteil: Jeder ist "Project Administrator". Das führt dazu, dass versehentlich Build-Definitionen gelöscht oder globale Variablen überschrieben werden.

Nicht verpassen: format of a csv file

Ein gesundes Mittelmaß ist hier die Lösung. Gruppenbasierte Berechtigungen, die eng mit dem Active Directory verknüpft sind, sind der Standardweg. Wer hier anfängt, händisch einzelne Nutzer auf Ordnerebene zu berechtigen, hat den Kampf gegen die Komplexität bereits verloren. Das lässt sich nach einem Jahr nicht mehr warten. Ich habe Migrationen gesehen, die nur deshalb scheiterten, weil niemand mehr wusste, wer eigentlich warum worauf Zugriff hatte. Die Bereinigung solcher Altlasten dauert Wochen.

Das Märchen vom wartungsfreien On-Premise-Server

Viele Unternehmen entscheiden sich gegen die Cloud, weil sie glauben, die volle Kontrolle zu behalten und Kosten zu sparen. Das ist ein legitimer Grund, aber oft eine Fehlkalkulation. Ein On-Premise-System dieser Art erfordert Expertenwissen.

Man muss sich um SQL-Wartungspläne kümmern. Indexe müssen neu organisiert werden, Statistiken müssen aktuell bleiben. Wer das vernachlässigt, stellt nach zwei Jahren fest, dass einfache Abfragen auf die Work Items plötzlich Sekunden statt Millisekunden dauern. Auch die Backup-Strategie ist oft lückenhaft. Ein Snapshot einer virtuellen Maschine ist kein valides Backup für eine SQL-Datenbank mit Filestream-Daten.

In meiner Zeit als Berater war einer der häufigsten Rettungseinsätze die Wiederherstellung von korrupten Datenbanken nach einem Stromausfall oder Hardwaredefekt. Oft gab es zwar Backups, aber niemand hatte jemals den Ernstfall geprobt. Ein Backup, das nicht getestet wurde, existiert de facto nicht. Wer die Kosten für einen erfahrenen Datenbankadministrator einsparen will, sollte sich bewusst sein, dass er damit das gesamte intellektuelle Eigentum der Firma riskiert.

Der fatale Umgang mit technischen Altlasten in der Datenbank

Ein System wie der Visual Studio Team Foundation Server speichert alles. Jedes gelöschte Attachment, jeder alte Build-Artifact bleibt oft ewig in der Datenbank liegen, wenn man keine Bereinigungsrichtlinien (Retention Policies) festlegt.

Ich habe Installationen gesehen, bei denen 80 Prozent des Speicherplatzes von Testdaten aus dem Jahr 2018 belegt waren. Das bläht die Backups auf und macht jedes Upgrade zur Qual. Ein Upgrade einer 50-GB-Datenbank dauert Minuten. Bei 5 TB sprechen wir über Tage.

Die Lösung ist so simpel wie unbeliebt: Man muss aufräumen. Alte Builds löschen, nicht mehr benötigte Testläufe entfernen und große Binärdateien nicht ins Repository einchecken. Wer Git innerhalb der Plattform nutzt, sollte für große Dateien LFS (Large File Storage) verwenden. Wer stattdessen 500-MB-Videodateien direkt ins Repo pusht, sorgt dafür, dass jeder neue Entwickler beim Klonen des Projekts erst mal eine Stunde Mittagspause machen kann. Das ist unprofessionell und teuer.

Realitätscheck für den langfristigen Erfolg

Wer glaubt, dass die Einführung oder der Betrieb einer solchen Plattform ein reines IT-Projekt ist, wird scheitern. Es ist eine kulturelle Entscheidung. Wenn die Prozesse faul sind, wird die beste Software der Welt das nicht richten.

In der Realität braucht es eine Person, die das System wirklich versteht – nicht nur oberflächlich, sondern bis tief in die SQL-Ebenen und die Build-Logik. Man braucht klare Regeln für die Zusammenarbeit, eine disziplinierte Branching-Strategie und die Bereitschaft, in ordentliche Hardware zu investieren. Es gibt keine Abkürzung. Wer beim Storage spart, zahlt mit Wartezeit. Wer bei der Planung spart, zahlt mit Ausfallzeit.

Erfolg stellt sich dann ein, wenn das System so lautlos im Hintergrund läuft, dass die Entwickler vergessen, dass es da ist. Sobald es zum Gesprächsthema in der Kantine wird, läuft etwas fundamental schief. Man muss bereit sein, alle paar Monate die Performance zu analysieren und alte Zöpfe abzuschneiden. Nur so bleibt die Umgebung agil und belastbar. Alles andere ist nur ein verzögertes Scheitern auf Raten, das am Ende viel mehr kostet, als man am Anfang durch vermeintliche Effizienzgewinne eingespart hat. Wer das nicht akzeptiert, sollte die Finger von komplexen On-Premise-Lösungen lassen und sich einen Dienstleister suchen, der den Kopf für ihn hinhält. Es gibt keinen Platz für Amateure in der Verwaltung geschäftskritischer Entwicklungsinfrastruktur. Wer es dennoch versucht, lernt es auf die harte Tour – durch Schmerz und verbranntes Budget. Ich habe das oft genug gesehen und kann nur sagen: Es ist es nicht wert. Macht es von Anfang an richtig oder lasst es bleiben.

HH

Hannah Hartmann

Mit faktenbasierter Arbeitsweise liefert Hannah Hartmann Beiträge, die Leserinnen und Lesern Orientierung im Nachrichtengeschehen geben.