Frage

Derzeit unsere Organisation nicht praktiziert Continuous Integration.

Damit wir einen CI-Server zum Laufen bekommen, ich muß ein Dokument demonstriert die Rentabilität der Investition erzeugen.

Neben Kosteneinsparungen durch Auffinden und Bugs frühe Festsetzung, ich bin neugierig auf andere Vorteile / Einsparungen, dass ich in dieses Dokument bleiben könnte.

War es hilfreich?

Lösung

Meine Nummer 1 der Grund für CI Geschmack ist, dass es Entwickler zu verhindern, dass die Überprüfung in gebrochenem Code hilft, die manchmal ein ganzes Team lähmen kann. Stellen Sie sich vor, wenn ich eine signifikante Check-in denen einige db Schemaänderungen richtig machen, bevor ich für den Urlaub verlassen. Sicher, funktioniert alles einwandfrei auf meiner Dev-Box, aber ich vergessen, das DB-Schema Change zu Check-in, die nicht trivial sein können oder nicht. Nun, jetzt gibt es komplexe Änderungen mit Bezug auf neue / geänderte Felder in der Datenbank, aber niemanden, der im Büro am nächsten Tag tatsächlich das neue Schema, so dass nun das gesamte Team ist, während jemand schaut in die Arbeit reproduzieren Sie bereits getan und nur vergessen hat, in zu überprüfen.

Und ja, habe ich ein besonders hässliches Beispiel mit db Änderungen, aber es könnte alles, wirklich sein. Vielleicht eine teilweise Check-in mit einigen Code per E-Mail, die dann bewirkt, dass alle Ihre Devs Ihre tatsächlichen Endnutzer Spam? Sie nennen es ...

Also meiner Meinung nach, eine einzelne dieser Situationen vermieden wird aus sehr schnell den ROI eines solchen Vorhabens lohnend machen.

Andere Tipps

Wenn Sie sich zu einem Standard-Programm-Managern im Gespräch, so können sie die kontinuierliche Integration zu sein, ein wenig schwer zu finden in Bezug auf einfacher ROI zu verstehen: es ist nicht sofort klar, was physisches Produkt, dass sie dann für einen bestimmten Dollar im Austausch erhalten Investitionen.

Hier ist, wie ich habe gelernt, es zu erklären: „Continuous Integration eliminiert ganze Risikoklassen aus dem Projekt“

Risikomanagement ist ein echtes Problem für Programm-Manager, die außerhalb des normalen ken ist von Software-Engineering-Typen, die mehr Zeit das Schreiben von Code ausgeben, als sich Gedanken darüber, wie die US-Dollar erhalten ausgegeben. Ein Teil des mit dieser Art von Menschen zu arbeiten effektiv auszudrücken lernt, was wir wissen, ist eine gute Sache in Bezug auf sein, dass sie verstehen können.

Hier sind einige der Risiken, die ich in Gespräche wie diese aus Trab. Beachten Sie, mit vernünftigen Programm-Managern, ich habe gewonnen bereits das Argument nach dem ersten Punkt:

  1. Integration Risiko: in einer kontinuierlichen Integration basierende Build-System, Integrationsprobleme wie „er vergessen haben, in einer Datei zu überprüfen, bevor er für ein langes Wochenende nach Hause gegangen“ sind viel weniger wahrscheinlich eine ganze Entwicklungsteam zu veranlassen, einen ganzen Freitag zu verlieren im wert von Arbeit. Einsparungen für das Projekt ein solcher Vorfall = Anzahl der Leute im Team (minus eins aufgrund der Bösewicht, der Check-in vergessen) zu vermeiden * 8 Stunden pro Arbeitstag * Stundensatz pro Ingenieur. Um hier die Beträge, die Tausende von Dollar, die das Projekt nicht in Rechnung gestellt. ROI Win!
  2. Risiko der Regression: mit einer Unit-Test / Automatik-Testsuite, die ausgeführt werden nach jedem Build, können Sie das Risiko, dass eine Änderung des Code bricht etwas, dass die Verwendung zur Arbeit zu reduzieren. Das ist viel mehr vage und weniger gesichert. Sie sind jedoch zumindest einen Rahmen geschaffen, bei dem einige der langweiligsten und zeitaufwendig (das heißt, teuer) Versuche am Menschen mit Automatisierung ersetzt wird.
  3. Technologie Risiko: kontinuierliche Integration gibt Ihnen auch die Möglichkeit, neue Technologiekomponenten zu versuchen. Zum Beispiel fanden wir vor kurzem, dass Java 1.6 Update 18 wurde während einer Bereitstellung auf einen Remote-Standort in dem Speicherbereinigungsalgorithmus abstürzt. Aufgrund der kontinuierlichen Integration, wir hatten ein hohes Vertrauen, dass 17 eine hohe Wahrscheinlichkeit zu aktualisieren Rückzieher der Arbeits hatte, wo Update 18 nicht. Diese Art der Sache ist viel schwieriger Begriff in Bezug auf einen Barwert, aber man kann immer noch das Risiko Argument: bestimmte Scheitern des Projektes = schlecht. Graceful Herabstufung = viel besser.

CI hilft bei der Ausgabe Entdeckung. Messen Sie die Höhe der Zeit zur Zeit, dass er gebrochen zu entdecken nimmt baut oder große Fehler im Code. Multiplizieren Sie, dass durch die Kosten für das Unternehmen für jeden Entwickler, dass Code während dieses Zeitrahmens verwendet wird. Multiplizieren Sie, dass im Laufe des Jahres durch die Anzahl der Brüche auftreten.

Es ist Ihre Nummer ein.

Jeder erfolgreiche Build ist ein Release Candidate -., So dass Sie Updates und Bugfixes viel schneller liefern können

Wenn ein Teil Ihres Build-Prozess ein Installationsprogramm erzeugt, dies ermöglicht einen schnellen Einsatz Zyklus als auch.

Wikipedia :

  • , wenn das Gerät Test fehlschlagen oder ein Fehler auftaucht, Entwickler könnten die Code-Basis zurück zu einem fehlerfreien Zustand zurückkehren, ohne Zeit zu verschwenden Debuggen
  • Entwickler erkennen und zu beheben Integrationsprobleme kontinuierlich - Vermeidung von Last-Minute-Chaos bei Veröffentlichung der Daten, (wenn jeder versucht, in ihrer leicht unvereinbar zu überprüfen Versionen).
  • Frühwarn gebrochener / unvereinbar Code
  • Frühwarn widersprüchlicher Änderungen
  • unmittelbare Einheit Prüfung aller Änderungen
  • ständige Verfügbarkeit eines "aktuellen" Build zum Testen, Demo oder Freigebungszwecke
  • unmittelbares Feedback an die Entwickler auf die Qualität, Funktionalität oder systemweiten Auswirkungen von Code schreiben
  • sie
  • häufiger Code Check-in Schüben Entwickler modular zu schaffen, weniger komplexer Code
  • Metriken, die von automatisierten Testen und CI (wie Metriken für Codeabdeckung, Code Komplexität und bietet komplett) Fokus Entwickler auf der Entwicklung von funktionalem, Qualitätscode und Hilfe entwickelt Dynamik in einem Team
  • gut entwickelte Testsuite für besten Dienstprogramm erforderlich

Wir verwenden CI (Zwei baut pro Tag) und es spart uns viel Zeit halten Code arbeitet für Test und Freigabe.

Von einem Entwickler Sicht CI kann einschüchternd sein, wenn automatische Build-Ergebnis, per E-Mail an die ganze Welt (Entwickler, Projektmanager, etc. etc.) geschickt, sagt:   „Fehler beim Laden der DLL Erstellen von‚XYZ.dll‘ist fehlgeschlagen.“ und Sie sind Herr XYZ, und sie wissen, wer Sie sind :)!

Hier ist mein Beispiel aus meiner eigenen Erfahrungen ...

Unser System verfügt über mehrere Plattformen und Konfigurationen mit mehr als 70 Ingenieuren auf der gleichen Code-Basis arbeiten. Wir litten von irgendwo rund 60% Build Erfolg für die weniger häufig verwendeten configs und 85% für die am häufigsten verwendet. Es war eine ständige Flut von E-Mails auf einer täglichen Basis zu Kompilierung Fehler oder andere Fehler.

Ich habe einige grobe Berechnungen und geschätzt, dass wir im Durchschnitt eine Stunde verloren einen Tag pro Programmierer schlecht baut, die jeden Tag fast 10 Manntage Arbeit beträgt. Das bedeutet nicht Faktor in den Kosten, die in Iterationszeit auftreten, wenn Programmierer verweigern für die Synchronisierung auf den neuesten Code, weil sie, wenn es Stall nicht wissen, dass die Kosten uns noch mehr.

Nach einem Rack von Build-Servern, die von Team-Stadt den Einsatz jetzt wir eine durchschnittliche Erfolgsquote von 98% auf alle configs sehen, die durchschnittlichen Kompilierungsfehler Aufenthalte im System für Minuten nicht Stunden und die meisten unserer Ingenieure sind jetzt komfortablen Aufenthalt in die neueste Version des Codes.

Generell würde ich sagen, dass eine konservative Schätzung auf dem Gesamteinspar war rund 6 Mann Monate Zeit in den letzten drei Monaten des Projektes im Vergleich zu den drei Monaten vor CI zu implementieren. Dieses Argument hat uns geholfen, Ressourcen zu sichern, um unseren Build-Server zu erweitern und mehr Ingenieur Zeit auf zusätzlichen automatisierte Tests konzentrieren.

Unsere größte Gewinn ist von immer ein Nightly Build für QA haben. Unter unserem alten System jeden Produkt, mindestens einmal pro Woche, würde bei 02.00 herausfinden, dass jemand in schlechten Code überprüft hatte. Dies verursacht keine Nightly Build für QA-Test mit, war das Mittel Veröffentlichung senden eine E-Mail-Engineering. Sie würden das Problem diagnostizieren und einen Entwickler kontaktieren. Manchmal dauerte es so lange, wie Mittag vor QA tatsächlich etwas Arbeit mit hatte. Nun, neben einer guten Installateur jede einzelne Nacht zu haben, installieren wir es tatsächlich auf VMs von all den verschiedenen unterstützten Konfigurationen everynight. So, jetzt, wenn QA kommt, können sie innerhalb weniger Minuten Testen beginnen. Nun, wenn Sie von der alten Art und Weise zu denken, kam QA in packte den Installateur, feuert alle vms, installiert sie, dann begann Tests. Wir speichern QA wahrscheinlich 15 Minuten pro Konfiguration Test auf, pro QA Person.

Es gibt freien CI-Server zur Verfügung und kostenlose Build-Tools wie NAnt. Sie können es auf Ihrem Dev-Box implementieren, um die Vorteile zu entdecken.

Wenn Sie Quellcodeverwaltung verwenden, und ein Bug-Tracking-System, stelle ich mir vor, dass konsequent den ersten Fehler zu melden ist (innerhalb von Minuten nach jedem Check-in) wird ziemlich überzeugend. Hinzu kommt, dass die Abnahme in der eigenen Fehler-Rate, und Sie werden wahrscheinlich einen Verkauf haben.

Der ROI ist wirklich eine Möglichkeit zu bieten, was der Kunde will. Das ist natürlich sehr subjektiv, aber wenn sie mit Beteiligung des Endkunden implementiert, würden Sie feststellen, dass Kunden beginnen sehen zu schätzen, was sie bekommen und damit Sie neigen dazu, weniger Probleme während der Benutzerakzeptanz zu sehen.

  • Ist es Kosten sparen? kann nicht sein,
  • wäre das Projekt während UAT scheitern? definitiv nein,
  • würde das Projekt zwischendurch geschlossen? - hohe Wahrscheinlichkeit, wenn die Kunden feststellen, dass dies nicht die liefern würde erwartetes Ergebnis.
  • würden Sie erhalten in Echtzeit und reale Daten über das Projekt - YES

So ist es schneller in Ermangelung hilft, die frühen Risiken minimieren kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top