Workspace/Flow Backup/Restore/Multiply mit Git und NoSQL DBs

Hallo Synesty Team,
ich habe da eine Idee: Backup von Workspaces/Flows mit Git sowie die Möglichkeit einen Workspace aus einem Git wiederherzustellen.

Je Workspace kann man ein Git Repository angeben.
Je Projekt werden in dem Repository ein Ordner angelegt
Projektvariablen sollen ebenfalls je Projekt in einem JSON File gespeichert werden.
Je Flow wird das JSON des Flows als File im Projekt-Order angelegt.
Datastores und Mapping-Sets: Schemas werden in einem dedizierten Ordner abgelegt (z.B. Datamanagement mit Unterordnern für Schemas und Mappingsets). Datastores im Git zu speichern macht keinen Sinn, aber evtl. kann man als Backup-Ziel eine NoSQL DB einrichten, z.B. Mongo, CouchDB, Amazon DocumentDB, Elastic etc.)
Verbindungen und Snippets ggf. auch, aber speziell bei den Verbindungen müssen Credentials ggf. verschlüsselt im Git abgelegt werden (Master Key File im Account?).

Bei jeder vom Benutzer gespeicherten Version wird sofort der Change ins Repo committed.
In einem vom Benutzer frei definierbaren Intervall wird ein Commit des gesamten Workspaces als Backup erstellt (z.B. um auch automatisch gespeicherte Versionen zu sichern).

Restore in einem anderen Workspace: Man kann ein Git Repo einrichten und die zu kopierenden Projekte, Flows, Schemas, Mappingsets etc. auswählen und importieren. Es findet kein Write auf die Import-Source statt.

Benefit: gleichartige Workspaces können innerhalb kürzester

1 Like

Vielen Dank für die Anregungen. Wir werden das notieren, wenn das Thema Backup wieder auf dem Plan steht. Versprechen können wir leider noch nichts. Aber wir werden die Punkte auf jeden Fall mit in die Diskussion nehmen.

Da der letzte Satz leider nicht vollständig ist:
Ist die Intention hauptsächlich ein Backup zur Datensicherung?
Oder geht es um Tracking von Änderungen und ggf. zurückspringen zu einem bestimmten Zeitpunkt?
Oder auch um das schnell Kopieren einen Workspaces / Projekts basierend auf einem bestehenden?

Die Fragen sind nur, um noch genauer die Use-Cases zu verstehen.

Da hab ich leider zu früh auf den Knopf gedrückt… Genau, ich habe an folgende Szenarien gedacht:

Backup zur Datensicherung und schnelles Recovery eines gesamten Workspaces oder Projektes.
Tracking von Änderungen für die Revisionssicherheit. Zurückspringen zu einem bestimmten Zeitpunkt ist ja jetzt schon in einzelnen Flows möglich.
Kopieren einen Workspaces / Projekts basierend auf einem bestehenden. Diesen Fall haben wir jetzt schon ein paar mal gehabt und es wird sicherlich noch ein paar mal vorkommen. Leider wurde immer wieder Kleinigkeiten übersehen, z.B. haben Mappingsets gefehlt. Lässt sich ja alles wunderbar per Hand umsetzen, aber es sind deswegen leider auch Fehler möglich.

Hier würden wir gern mal genauer rein schauen? Das soll so nicht sein.
Ist das (noch) reproduzierbar? Können Sie uns beschreiben, wie Sie vorgegangen sind?
Eigentlich sollte die Funktion „Duplizieren“ beim Workspace alles ausser die Daten im Datastore übernehmen - auch Mappingsets.

Wenn dem nicht so ist, dann versuchen wir das natürlich zu lösen.

Also die Funktion haben wir nicht genutzt, sondern halt alles manuell gemacht. Es wurden in den neuen Workspaces auch nicht alle Flows oder die exakt identischen Flows und Projekte benötigt.

Ok, dann ist duplizieren hier mehr als benötigt wird.

An welcher Stelle (zeitlich gesehen) wird denn die Entscheidung getroffen, welche Projekte / Flows / Mappingsets / Schemas / Datastores für ein neues Projekt relevant sind?

Wie wäre es denn wünschenswert?
also bezogen auf …

Soll es einen „Vorlagenworkspace“ geben, der alle Elemente enthält , die man brauchen „könnte“? Und dann pickt man sich in dem Moment, in dem man ein neues Vorhaben angeht die Elemente raus die man braucht, und erstellt damit einen neuen Workspace?

Genau, sobald ein neuer Workspace eingerichtet werden soll, soll man aus einem Master/Sample Workspace die entsprechenden Flows kopieren können.

Huhu,
ich würde gerne hinzufügen als Anregung, die Versionsverwaltung(Flows, Mappingsets, Snippets) und Datensicherungen(Datastores, Secrets…) zu Trennen.
Datensicherungen im interval auf ein FTP abzulegen. Und Flows etc voll zu versionieren, mit einer möglichkeit änderungen schnell nachvollziehbar
zu machen z.B beim Speichern einer fertigen Version ein kommentar dazu schreiben zu können.

Mfg,
Dercio