Wie hängt die kontinuierliche Integration mit der kontinuierlichen Bereitstellung zusammen?


20

Hier ein Zitat aus dem aktuellen Inhalt der :

... das häufige Zusammenführen der Arbeitscode-Kopien des Entwicklers auf einer gemeinsam genutzten Codebasis, um Integrationsprobleme zu vermeiden oder zu minimieren.

OK, das verstehe ich. Aber es gibt auch und , und hier verliere ich mich immer wieder:

  • Wie funktioniert die kontinuierliche Integration bezieht sich auf kontinuierliche Lieferung und / oder kontinuierliche Bereitstellung , dass irgendwo entlang der Linie unter der Annahme (n) über integrationSie am Ende deliveringin einer Zielumgebung , wo alles sein wird deployed.
  • Was ist der Unterschied zwischen kontinuierlicher Bereitstellung und kontinuierlicher Bereitstellung ?

In früheren Zeiten, als DevOps noch DevOps hieß, verwendeten wir eine Terminologie, die möglicherweise zum Verständnis dieser neuen DevOps-Begriffe beitrug.

  • Beförderung zu (oder Herabstufung von) einem Pre-Prod-Ziel, optional kombiniert mit einem Regenerationsprozess (Kompilieren, Binden usw.), um alle zugehörigen Komponenten in ausführbaren Dingen zusammenzufassen. Das ist es, was der kontinuierlichen Integration ähnlich sein sollte oder nicht?
  • Verteilen Sie auf eine bestimmte Zielumgebung über FTP (wenn Standardkopien die Lücke nicht schließen können), aber aktivieren Sie sie noch nicht im Ziel. Das ist es, was der kontinuierlichen Lieferung ähnlich sein sollte oder nicht?
  • Installation (oder Aktivierung ) in einer bestimmten Zielumgebung, kombiniert mit Dingen wie Bindungen, Stopp- / Startvorgängen usw. Was sollte einer kontinuierlichen Bereitstellung ähnlich sein oder nicht?

Zu viele Markierungen erschweren das Lesen. Das bringt keinen weiteren Zusammenhang mit der Frage, so dass ich denke, dass die Ords durch eine Unterstreichung hervorgehoben werden können _markdown_ , um das Lesen zu erleichtern
Tensibai

1
Ich meine, die Bearbeitung ist ein Schmerz :) Tipp für Antwort blog.crisp.se/wp-content/uploads/2013/02/…
Tensibai


Antworten:


23

Continuous Delivery und Continuous Deployment gehen beide einen Schritt weiter, indem sie dem Prozess einen Schritt "Deployment to Production" hinzufügen. Der Unterschied zwischen kontinuierlicher Zustellung und Bereitstellung besteht darin, dass dieser Schritt für die Zustellung manuell und für die Bereitstellung automatisch ausgeführt wird.

Unterschied zwischen Continuous Integration, Continuous Delivery und Continuous Deployment

Unterschied zwischen Continuous Integration, Continuous Delivery und Continuous Deployment. Bild von codeproject.com kopiert

Unabhängig davon, ob Sie eine kontinuierliche Bereitstellung oder eine kontinuierliche Bereitstellung durchführen, ist die Wahl der Implementierung von entscheidender Bedeutung. Wenn Sie eine kontinuierliche Bereitstellung durchführen, werden Änderungen am Code automatisch bereitgestellt, nachdem die Abnahmetests bestanden wurden. Dies kann für Ihr Produkt wünschenswert oder nicht wünschenswert sein. Bei der kontinuierlichen Bereitstellung können Benutzer entscheiden, ob eine bestimmte Codeänderung bereitgestellt wird oder nicht (und möglicherweise, wo genau sie bereitgestellt wird).

Da der Unterschied zwischen kontinuierlicher Bereitstellung und Bereitstellung gering ist und vielen Menschen der genaue Unterschied nicht bewusst ist, werden die beiden Begriffe manchmal synonym verwendet.


Nett! Aber ... die Lösung (Ihre Antwort) zu einem Problem (meine Frage), ändert das Problem ... Lesen Sie mehr ...
Pierre.Vriens

4

Continuous Delivery und Continuous Deployment (CD) sind mehr oder weniger dasselbe *. Jedes Mal, wenn eine Änderung als "good to go" (getestet / verifiziert) eingestuft wird, sollte sie sofort freigegeben werden. Sie können dies so oft am Tag tun, wie die Arbeit abgeschlossen ist.

Continuous Integration (CI) bezieht sich nur auf das Zusammenführen von Code häufig, um sicherzustellen, dass Feature-Zweige nicht zu weit von Ihrem Hauptzweig entfernt sind und dass Sie sehr schnell wissen, ob Probleme mit dem Code von auftreten Integrationsperspektive: Haben Sie beim Ändern von Inhalten die Funktionalität beeinträchtigt?

In Bezug auf ihre Beziehung hilft CI dabei, den Code so zu überprüfen, dass er schnell freigegeben werden kann (CD). Sie können CD immer noch ohne CI erstellen (und umgekehrt), aber Sie werden feststellen, dass es oft viel einfacher ist, Ihren Code frühzeitig zu integrieren und Probleme schneller zu finden, was es Ihnen wiederum ermöglicht, diese Probleme schneller und schließlich zu beheben Liefern Sie Ihre Funktionen schneller!

* Bearbeiten: Hier ist ein Artikel, der den Unterschied bespricht. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Kontinuierliche Bereitstellung bedeutet nicht immer eine tatsächliche Bereitstellung in der Produktion, sondern eine ständige Bereitstellung in einer produktionsähnlichen Umgebung mit der Gewissheit, dass diese Änderungen jederzeit in die Produktion gehen können, sobald das Geschäft fertig ist. In der Praxis widersprechen die meisten Menschen diesen Begriffen.


merci! Aber nach Ihrem "mehr oder weniger das Gleiche", wirklich? Kannst du dir irgendetwas einfallen lassen, das irgendwelche Nuancen illustriert?
Pierre.Vriens

Ich habe meinen Beitrag mit einem Hinweis zu den Unterschieden aktualisiert. Ich glaube jedoch, dass die meisten Leute diese Begriffe austauschbar verwenden werden.
Tayworm

2

Eine bestimmte Version eines Softwareprodukts muss zuerst die Integrationsphase abgeschlossen haben, bevor es geliefert oder bereitgestellt werden kann.

Für eine kontinuierliche Bereitstellung ist eine kontinuierliche Integration ein Muss. Wenn andernfalls die Ereignisse mit abgeschlossener Integration zu weit voneinander entfernt sind, um für das Attribut "Fortlaufend" zu qualifizieren, sind dies auch die möglichen Lieferungen / Bereitstellungen (nur eine Teilmenge der integrierten Versionen ist normalerweise für Lieferungen / Bereitstellungen qualifiziert).

Update: Meine Antwort unterstreicht nur die Abhängigkeit (Beziehung) zwischen CI und (beiden) CDs, die Terminologie wird von THelpers Antwort ziemlich gut abgedeckt.

Der einzige Kommentar, den ich dazu machen müsste, ist über die (überladene) Verwendung von deployment. Bereitstellungen in nicht produktiven Umgebungen sind eine echte Sache. Sie können sogar häufig genug auftreten - zum Beispiel im Rahmen verschiedener Testphasen während der kontinuierlichen Lieferung. Aber das macht solche Bereitstellungen nicht continuous deployments. Kontinuierliche Bereitstellungen beziehen sich speziell auf Bereitstellungen in der Produktionsumgebung.


ok, das hilft alles, aber vielleicht können Sie Ihre Antwort mit der Beschreibung von Lieferung und Bereitstellung erweitern?
Pierre.Vriens

1

Grundsätzlich ist die kontinuierliche Integration sowohl Teil der kontinuierlichen Bereitstellung als auch der kontinuierlichen Bereitstellung, mit der Ausnahme, dass die Freigabe automatisch erfolgt. Sie können sich Continuous Delivery auch als logischen nächsten Schritt der kontinuierlichen Integration vorstellen und es funktioniert in allen Umgebungen. Die kontinuierliche Integration hilft auch bei der Überprüfung von Artefakten, sodass diese schneller bereitgestellt werden können. Obwohl eine kontinuierliche Bereitstellung ohne kontinuierliche Integration nicht möglich ist und es bei kontinuierlicher Integration viel einfacher ist, Fehler zu erkennen. Bei all diesen „kontinuierlichen Dingen“ geht es letztendlich darum, unnötige Aktionen im Entwicklungsworkflow zu entfernen. Am wichtigsten ist, dass CI / CD sowohl aus technischer als auch aus wirtschaftlicher Sicht wichtig sind. Unternehmen, die diese DevOps-Prinzipien nicht einhalten, riskieren, den Weg der Dinosaurier zu gehen. In der heutigen schnelllebigen IT-Umgebung ist dies auch soDevOps oder stirb.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.