Kontinuierliche Integration
Ich stimme der Definition Ihrer Universität zu. Kontinuierliche Integration ist eine Strategie, mit der ein Entwickler Code kontinuierlich in die Hauptlinie integrieren kann - im Gegensatz zu häufig.
Sie könnten behaupten, dass es sich lediglich um eine Verzweigungsstrategie in Ihrem Versionskontrollsystem handelt.
Dies hängt mit der Größe der Aufgaben zusammen, die Sie einem Entwickler zuweisen. Wenn eine Aufgabe voraussichtlich 4 bis 5 Manntage dauert, hat der Entwickler keinen Anreiz, für die nächsten 4 bis 5 Tage etwas zu liefern, da er mit nichts fertig ist - noch nicht.
Größe ist also wichtig:
small task = continuous integration
big task = frequent integration
Die ideale Aufgabengröße ist nicht größer als ein Arbeitstag. Auf diese Weise hat ein Entwickler natürlich mindestens eine Integration pro Tag.
Kontinuierliche Lieferung
Grundsätzlich gibt es drei Schulen innerhalb von Continuous Delivery:
Continuous Delivery ist eine natürliche Erweiterung von Continuous Integration
Diese Schule befasst sich mit der Addison-Wesley-Signaturserie "Martin Fowler" und geht davon aus, dass sie seit der Veröffentlichung von 2007 als "Continuous Integration" und die 2011 als "Continuous Delivery" bezeichnete Version wahrscheinlich Band 1 + 2 sind der gleichen konzeptuellen Idee, die mit kontinuierlichem etwas zu tun hat .
Continuous Delivery hat mit agiler Softwareentwicklung zu tun
Diese Schule widerspricht der Idee, dass es bei Continuous Delivery darum geht, die Prinzipien der agilen Bewegung zu unterstützen, nicht nur als konzeptionelle Idee oder Absichtserklärung, sondern für die Realität - im realen Leben.
Offset im ersten Prinzip des Agilen Manifests, wo der Begriff "kontinuierliche Lieferung" tatsächlich zum ersten Mal verwendet wird:
Unsere höchste Priorität ist es, den Kunden durch frühzeitige und kontinuierliche Lieferung wertvoller Software zufrieden zu stellen.
Diese Schule behauptet, dass "Continuous Delivery" ein Paradigma ist, das alles umfasst, was zur Implementierung einer automatisierten Überprüfung Ihrer "Definition von erledigt" erforderlich ist .
Diese Schule akzeptiert, dass "Continuous Delivery" und das Modewort oder der Megatrend "DevOps" Kehrseiten derselben Medaille sind, in dem Sinne, dass beide versuchen, dieses neue Paradigma oder diesen neuen Ansatz und nicht nur eine Technik anzunehmen oder zu verkapseln.
Continuous Delivery ist ein Synonym für Continuous Deployment
Die dritte Schule befürwortet, dass Continuous Deployment und Continuous Delivery austauschbar verwendet werden können, um dasselbe zu bedeuten.
Wenn etwas in den Händen der Entwickler bereit ist, wird es sofort an die Endbenutzer geliefert, was in den meisten Fällen bedeutet, dass es in der Produktionsumgebung bereitgestellt werden sollte. Daher bedeutet "Bereitstellen" und "Bereitstellen" dasselbe.
Welche Schule soll ich besuchen?
Ihre Universität ist eindeutig der ersten Schule beigetreten und behauptet, dass wir uns auf Band 1 + 2 derselben Publikationsreihe beziehen. Meiner Meinung nach ist dies ein Missbrauch des Begriffs "Kontinuierliche Lieferung".
Ich persönlich befürworte das Verständnis, dass Continuous Delivery mit der Implementierung einer realen Unterstützung für die Ideen und Konzepte der agilen Bewegung zusammenhängt. Also bin ich der Schule beigetreten, die besagt, dass der Begriff ein ganzes Paradigma umfasst - wie "DevOps".
Die Schule, die die Bereitstellung als Synonym für die Bereitstellung verwendet, wird hauptsächlich von Tool-Anbietern empfohlen, die Bereitstellungskonsolen erstellen und versuchen, ein wenig Hype durch die weiter verbreitete Verwendung des Begriffs " Kontinuierliche Bereitstellung" zu bekommen .
Kontinuierliche Bereitstellung
Der Fokus auf die kontinuierliche Bereitstellung ist hauptsächlich in Bereichen relevant, in denen der Zugriff des Endbenutzers auf Softwareupdates auf der Aktualisierung einer zentralen Quelle für diese Informationen beruht und in denen diese zentralisierte Quelle nicht immer einfach zu aktualisieren ist, da sie monolithisch ist oder (zu) hohe Kohärenz aufweist von Natur aus (Web, SOA, Datenbanken usw.).
Für viele Domänen, die Software produzieren, für die es keine zentrale Informationsquelle gibt (Geräte, Verbraucherprodukte, Client-Installationen usw.) oder für die die zentrale Informationsquelle einfach zu aktualisieren ist (App speichert Artefaktverwaltungssysteme, Open Source-Repositorys usw.). ) gibt es fast keinen Hype um den Begriff Continuous Deployment. Sie werden nur bereitgestellt. Es ist keine große Sache - es ist kein Schmerz, der besonderen Fokus erfordert.
Die Tatsache, dass Continuous Deployment nicht generell für alle interessant ist, ist auch ein Argument dafür, dass die Schule, die behauptet, dass "Delivery" und "Deployment" Synonyme sind, alles falsch verstanden hat. Weil Continuous Delivery für alle durchaus sinnvoll ist - selbst wenn Sie eingebettete Software in Geräte ausführen oder Open Source-Plugins für ein Framework freigeben.
Die Definition Ihrer Universität, dass Continuous Deployment ein natürlicher nächster Schritt von Continuous Delivery ist, setzt implizit voraus, dass jede Lieferung, die einer Qualitätssicherung unterzogen wird, sofort für die Endbenutzer verfügbar sein sollte, näher an der Definition, die mein Stamm verwendet, um den Begriff "Continuous Deployment" zu beschreiben Release ", was wiederum ein weiteres Konzept ist, das generisch nicht für alle sinnvoll ist.
Eine Veröffentlichung kann eine sehr strategische oder politische Angelegenheit sein, und es gibt keinen Grund anzunehmen, dass jeder dies die ganze Zeit tun möchte (es sei denn, er ist ein Online-Buchladen eines Streaming-Service-Unternehmens). Unternehmen, die nicht immer alles blind freigeben, können jedoch eine Reihe von Gründen haben, warum sie ohnehin Meister der Bereitstellung sein möchten, sodass auch sie eine kontinuierliche Bereitstellung durchführen . Nicht von der Freigabe für die Produktion, sondern von Freigabekandidaten für produktionsähnliche Umgebungen.
Wieder glaube ich, dass Ihre Universität es falsch verstanden hat. Sie verwechseln "Continuous Deployment" mit "Continuous Release".
Kontinuierliche Bereitstellung ist einfach die Disziplin, das Ergebnis eines Entwicklungsprozesses kontinuierlich in eine produktionsähnliche Umgebung zu verschieben, in der Funktionstests in vollem Umfang durchgeführt werden können.
Die Continuous Delivery Storyline
Auf dem Bild wird alles lebendig:
Der Prozess der kontinuierlichen Integration sind die ersten beiden Aktionen im Zustandsübergangsdiagramm. Dies startet - falls erfolgreich - die Continuous Delivery-Pipeline, die die Definition von done implementiert . Die Bereitstellung ist nur eine der vielen Aktionen, die in dieser Pipeline kontinuierlich ausgeführt werden müssen. Im Idealfall wird der Prozess von dem Punkt an, an dem sich der Entwickler zum VCS verpflichtet, bis zu dem Punkt automatisiert, an dem die Pipeline bestätigt hat, dass wir einen gültigen Release-Kandidaten haben.