Zum Inhalt springen

HERMES · Technik im Detail

Jede Umgebung folgt einem Kanal, nicht einer Hand.

Wie HERMES Versionen über Kanäle von Umgebung zu Umgebung befördert, ohne neu zu bauen, Abweichungen sichtbar hält und mehrere Linien nebeneinander pflegt.

Welche Version an einem Ort läuft, soll nicht davon abhängen, wer sie zuletzt von Hand eingespielt hat. HERMES führt dafür Kanäle: benannte Wege, auf denen eine Version von Umgebung zu Umgebung wandert, nach festen Bedingungen. Jede Umgebung folgt genau einem Kanal, und der Kanal zeigt auf einen Digest. So ist die Auslieferung ausgelegt.

Diese Seite beschreibt die Bauweise des Systems. Gebaut sind der Prototyp von Freigabe und Protokoll und der Demonstrator von KALKÜL; den ganzen Stand finden Sie unter Was heute steht.

Auf dieser Seite
  1. 01Ein Kanal ist ein Zeiger mit Regeln
  2. 02Befördern statt neu bauen
  3. 03Welche Umgebung folgt welchem Kanal
  4. 04Mehrere Linien nebeneinander pflegen
  5. 05Verlauf und Auskunft
  6. 06Eckdaten
  7. 07Weiter

Ein Kanal ist ein Zeiger mit Regeln

Ein Kanal hat einen Namen, einen Zeiger auf den Digest einer Version und Regeln, unter denen der Zeiger weiterrückt. Üblich ist eine Folge wie Entwicklung, Erprobung, Stabil und Langzeitpflege; die Namen legt die Organisation fest. Welche Version in einem Kanal steht, ist eine Tatsache im Repository und keine Meinung.

Eine Umgebung abonniert einen Kanal. Ihr Soll lautet: Du läufst auf dem Digest, auf den der Kanal zeigt. Rückt der Zeiger, wird daraus ein neues Soll, das in Wellen ausgerollt wird. So bestimmt der Kanal, was läuft, und die Wellen bestimmen, wie es dorthin kommt.

Der Zeiger ändert sich nur durch Beförderung in den Kanal oder durch Rücknahme. Beides ist ein Commit mit Urheber und Zeit, Beförderung dazu mit der Freigabe, die sie erlaubt hat.

Kanal im Schnitt

Unten die Registry mit den Paketen. Darüber zeigt jeder Kanal auf einen Digest, und oben folgt jede Umgebung genau einem Kanal.

Kanal in HERMES im Schnitt: Registry, Digest, Kanal, UmgebungenUnten die Registry mit den Paketen. Darüber zeigt jeder Kanal auf einen Digest, und oben folgt jede Umgebung genau einem Kanal.UmgebungenFOLGEN EINEM KANALBETRIEBERPROBUNGABGESCHOTTETKanäleZEIGER MIT REGELNSTABILERPROBUNGDigestEINE VERSIONSHA256RegistryPAKETÜBER DEN KANAL
  • Umgebungen (folgen einem Kanal): Betrieb, Erprobung, Abgeschottet.
  • Kanäle (Zeiger mit Regeln): Stabil, Erprobung.
  • Digest (eine Version): sha256.
  • Registry: Paket.
  • über den Kanal: fließt von registry nach umgebungen.
SCHNITT VON VORN

Befördern statt neu bauen

Eine Version wird einmal gebaut und danach befördert. Beförderung heißt, den Zeiger des nächsten Kanals auf denselben Digest zu setzen. Das Paket wird nicht neu gebaut, und darum ist, was erprobt wurde, Bit für Bit das, was später stabil läuft. Ein erneuter Bau würde ein anderes Paket liefern, das niemand erprobt hat.

Für jede Beförderung steht fest, was gelten muss. Die Tests des Kanals sind bestanden, und das Protokoll belegt es. Die Beobachtungszeit im vorigen Kanal ist ohne Abweichung vergangen. Signatur und Herkunft sind gültig, so wie es die Regel der Zulassung verlangt. Je nach Kanal reicht das, oder es braucht dazu eine Freigabe: ein signiertes Ja für genau diese Beförderung.

Rückwärts gibt es keine Beförderung, nur die Rücknahme: Der Zeiger geht auf den früheren Digest zurück, mit denselben Einträgen im Verlauf. Eine Version, die zurückgenommen wurde, rückt erst wieder vor, wenn ein neuer Digest den Fehler behoben hat.

Kanal für Kanal

Eine Version wandert durch die Kanäle, in jedem unter eigenen Bedingungen. Ein Fehler hält sie an; die Rücknahme setzt den Zeiger auf den früheren Digest zurück.

Kanäle in HERMES: Entwicklung, Erprobung, Stabil, Langzeitpflege mit Beförderung und RücknahmeEine Version wandert durch die Kanäle, in jedem unter eigenen Bedingungen. Ein Fehler hält sie an; die Rücknahme setzt den Zeiger auf den früheren Digest zurück.befördertbefördertbefördertAbweichungfrüherer DigestDIGESTUMGEBUNGENENTWICKLUNGERPROBUNGSTABILLANGZEITPFLEGERÜCKNAHME
  • Ablauf von Digest bis Umgebungen: Entwicklung, Erprobung, Stabil, Langzeitpflege, Rücknahme.
  • Entwicklung befördert Erprobung.
  • Erprobung befördert Stabil.
  • Stabil befördert Langzeitpflege.
  • Stabil Abweichung Rücknahme.
  • Rücknahme früherer Digest Erprobung (Rückweg).
ABLAUF · WEGE OHNE MENGEN

Welche Umgebung folgt welchem Kanal

Die Zuordnung steht im Repository: Jede Umgebung nennt ihren Kanal. Ein Wechsel des Kanals ist selbst eine Änderung mit Freigabe, und er löst wie jedes neue Soll eine Welle aus. Umgebungen, die dieselbe Aufgabe erfüllen, folgen demselben Kanal, und die Zahl der Kanäle bleibt klein, damit der Überblick bleibt.

Eine Umgebung darf von ihrem Kanal abweichen, aber sichtbar. Sie kann auf einen Digest festgesetzt werden, mit Begründung, Verantwortlichem und Ablaufdatum. Es gibt dann kein stilles Zurückbleiben: Der Abweichungsbericht listet alle Umgebungen, deren Ist vom Soll des Kanals abweicht, mit Grund und Frist, und meldet vor Ablauf.

Umgebungen ohne Verbindung nach außen folgen demselben Kanal. Der Stand des Kanals kommt als Lieferung, die über einen geprüften Datenträger oder eine Datendiode übertragen wird; die Umgebung rückt nach, sobald die Lieferung geprüft ist. Wie das geht, beschreibt die Seite zu abgeschotteten Netzen.

Mehrere Linien nebeneinander pflegen

Organisationen können nicht alle Umgebungen zugleich auf die neueste Hauptversion heben. HERMES führt darum je Hauptversion einen eigenen Kanal. Eine Hauptversion nach dem Schema der semantischen Versionierung (SemVer 2.0.0) darf Schnittstellen brechen, die Nebenversionen erweitern nur. Im Kanal einer älteren Linie rücken nur Korrekturen vor, keine neuen Funktionen.

Eine Sicherheitskorrektur gehört in jede gepflegte Linie. Sie wird einmal geschrieben und in die älteren Kanäle übernommen, je Kanal als eigener, reproduzierbar gebauter Digest. Wie lange eine Linie gepflegt wird, steht als Datum am Kanal. Vor Ablauf erhalten die Umgebungen auf diesem Kanal eine Meldung und den Weg zum nächsten.

Verlauf und Auskunft

Aus Repository und Verlauf lässt sich jederzeit beantworten: Welche Umgebung lief zu einem Zeitpunkt auf welchem Digest, welchem Kanal folgte sie, und wer hat die Beförderung freigegeben? Umgekehrt: In welchen Umgebungen läuft heute noch ein bestimmter Digest, und wie lange noch?

Diese Auskunft wird zu dem Zeitpunkt wichtig, an dem ein Fehler oder eine Schwachstelle bekannt wird. Sie ist dann keine Recherche mehr, sondern eine Abfrage.

Eckdaten

Kanal
Name, Zeiger auf einen Digest, Regeln der Beförderung, Ablaufdatum der Pflege
Umgebung
folgt genau einem Kanal; Zuordnung im Repository
Beförderung
derselbe Digest, kein neuer Bau; Tests, Beobachtungszeit, Signatur und Herkunft, je Kanal eine Freigabe
Rücknahme
Zeiger auf den früheren Digest; Eintrag im Verlauf
Abweichung
festgesetzter Digest mit Begründung, Verantwortlichem und Ablaufdatum; Abweichungsbericht
Linien
ein Kanal je Hauptversion nach SemVer 2.0.0; ältere Linien erhalten nur Korrekturen
Ohne Verbindung
Stand des Kanals als geprüfte Lieferung
Auskunft
welche Umgebung wann auf welchem Digest lief; wer wo noch auf einem Digest läuft

Weiter

Wer entscheidet bei Ihnen heute, welche Version in welcher Umgebung läuft? Das übersetzen wir mit Ihnen in Kanäle und Regeln.