Entwurf: Kuendigung — Export, Archiv und Abbau
Beim Kuendigen verspricht CluPilot schriftlich einen fertigen Datenexport. Im Code steht dazu "(both mocked for now)" — es gibt keinen, und es gab nie einen. Und die gekuendigte Maschine wird nie abgebaut: sie laeuft weiter, fuer immer, auf einem Platz, den niemand mehr verkaufen kann. Der Ablauf stammt vom Betreiber, und sein Angelpunkt ist, VORHER zu fragen: wer keinen Export braucht, loest keine Arbeit aus und wartet auf nichts. Wer einen bestellt, bekommt ihn am Laufzeitende samt Link, bestaetigt, dass alles da ist — und ohne Bestaetigung gilt er nach der Frist als angenommen. Das steht in derselben Mail, sonst waere es keine Zustimmung. Eine technische Huerde ist benannt statt ueberspielt: der Export passt NICHT auf die Platte des Kunden. Ein Business-Paket hat 175 GB Kontingent bei 200 GB Platte — wer sein Kontingent nutzt, hat keinen Platz fuer ein Archiv seiner eigenen Daten, und der Gastagent ist kein Weg, hundert Gigabyte herauszutragen. Drei Wege stehen mit ihren Kosten da; empfohlen ist der ueber den Host, an der Maschine vorbei. Offen und ausdruecklich als Frage markiert: wie lange ein VM-Archiv liegen bleibt. Ohne Frist waechst dieser Speicher unbegrenzt.claude/nice-moser-521659
parent
1eee6afe66
commit
460d0db35b
|
|
@ -0,0 +1,204 @@
|
|||
# Kündigung: Export, Archiv und Abbau — Entwurf
|
||||
|
||||
**Stand:** 2026-08-04
|
||||
**Zustand:** Entwurf. Eine technische Frage ist offen und braucht eine Entscheidung — siehe „Die eine harte Stelle".
|
||||
|
||||
## Worum es geht
|
||||
|
||||
Beim Kündigen verspricht CluPilot dem Kunden heute schriftlich einen fertigen
|
||||
Datenexport. Im Code steht dazu `(both mocked for now)`. Es gibt **keinen
|
||||
Export**, und es gab nie einen.
|
||||
|
||||
Und die zweite Hälfte: die virtuelle Maschine eines gekündigten Kunden wird
|
||||
**nie abgebaut**. Sie läuft weiter, für immer, mit ihrem Speicher und ihrem
|
||||
Platz auf dem Host — einem Platz, den der Betreiber nicht mehr verkaufen kann.
|
||||
|
||||
## Was heute schon richtig ist
|
||||
|
||||
Nicht alles fehlt. Am Laufzeitende zieht `EndInstanceService` die Adresse ein:
|
||||
Traefik-Route weg, DNS-Eintrag weg, `status = 'ended'`. Das schliesst eine
|
||||
echte Lücke (ein Hostname, der auf einen Gast zeigt, den der Host später an
|
||||
jemand anderen vergibt) und bleibt unverändert.
|
||||
|
||||
Ebenso bleibt: **eine Kündigung endet nichts früher.** Wer am Zweiten kündigt,
|
||||
hat bis zum Monatsende bezahlt und arbeitet bis dahin weiter. `hasEnded()` ist
|
||||
die ganze Regel, und sie wird nicht angefasst.
|
||||
|
||||
## Der Ablauf
|
||||
|
||||
Vom Betreiber so entworfen:
|
||||
|
||||
### 1. Beim Kündigen wird gefragt
|
||||
|
||||
Der Kündigungsdialog stellt **eine** zusätzliche Frage: *Möchten Sie einen
|
||||
Datenexport?*
|
||||
|
||||
Das ist der Angelpunkt des ganzen Entwurfs. Wer keinen braucht — weil er seine
|
||||
Dateien längst synchronisiert hat, weil er zu einem anderen Anbieter zieht, der
|
||||
selbst überträgt —, löst keine Arbeit aus und wartet auf nichts. Wer einen
|
||||
braucht, sagt es zu dem Zeitpunkt, an dem er ohnehin über seine Daten
|
||||
nachdenkt.
|
||||
|
||||
Die Antwort steht am Datensatz der Instanz. Sie lässt sich bis zum Laufzeitende
|
||||
ändern: es ist dieselbe Frage, und ein Kunde, der es sich überlegt, soll nicht
|
||||
anrufen müssen.
|
||||
|
||||
### 2. Bis zum Laufzeitende ändert sich nichts
|
||||
|
||||
Der Kunde arbeitet weiter. Keine Sperre, keine Einschränkung, keine
|
||||
Erinnerungsmail, die wie eine Mahnung klingt.
|
||||
|
||||
**Eine Erinnerung sieben Tage vor Ende** gehört trotzdem hinein, und zwar aus
|
||||
einem Grund, der leicht übersehen wird: **ab dem Laufzeitende kommt der Kunde
|
||||
nicht mehr an seine Nextcloud.** Die Adresse ist dann eingezogen. Wer selbst
|
||||
etwas herunterladen will, muss es **vorher** tun, und das weiss er nur, wenn es
|
||||
ihm jemand sagt.
|
||||
|
||||
Die Erinnerung nennt das Datum, den Weg zum Selbst-Herunterladen, und ob ein
|
||||
Export bestellt ist oder nicht — mit dem Knopf, das noch zu ändern.
|
||||
|
||||
### 3. Am Laufzeitende
|
||||
|
||||
Die Adresse geht (baut schon). Die Maschine **läuft weiter** — sie wird
|
||||
gebraucht, für den Export und als Rückfahrkarte.
|
||||
|
||||
Danach trennt sich der Weg:
|
||||
|
||||
**Kein Export bestellt:** nichts weiter. Die Frist läuft.
|
||||
|
||||
**Export bestellt:** der Export wird erzeugt und auf dem Speicherserver
|
||||
abgelegt. Ist er fertig, bekommt der Kunde eine Mail mit einem zeitlich
|
||||
begrenzten Link.
|
||||
|
||||
### 4. Die Bestätigung, und was ohne sie gilt
|
||||
|
||||
Die Mail bittet den Kunden zu bestätigen, dass sein Export vollständig ist.
|
||||
Sie sagt im selben Atemzug, **was ohne Bestätigung geschieht**: nach Ablauf der
|
||||
Frist gilt der Export als angenommen, und die Maschine wird abgebaut.
|
||||
|
||||
Das ist die Entscheidung des Betreibers, und sie ist richtig herum: eine
|
||||
Maschine, die auf eine Bestätigung wartet, die nie kommt, steht ewig. Aber sie
|
||||
gilt nur, weil der Satz in der Mail steht — eine stillschweigende Zustimmung,
|
||||
die niemandem angekündigt wurde, wäre keine.
|
||||
|
||||
### 5. Nach vierzehn Tagen
|
||||
|
||||
Vierzehn Tage nach dem Laufzeitende — oder früher, sobald der Kunde bestätigt
|
||||
hat:
|
||||
|
||||
1. Die Maschine wird heruntergefahren.
|
||||
2. Sie wird als Ganzes auf den Speicherserver archiviert.
|
||||
3. Sie wird vom Host gelöscht. Der Platz ist wieder verkaufbar.
|
||||
|
||||
**Das Archiv ist das Sicherheitsnetz des Betreibers**, nicht das des Kunden. Er
|
||||
kann daraus eine Maschine wiederherstellen. Der Kunde kann mit einem
|
||||
Festplattenabbild nichts anfangen — dafür ist der Export da. Die beiden sind
|
||||
keine Alternativen, sie beantworten verschiedene Fragen.
|
||||
|
||||
---
|
||||
|
||||
## Die eine harte Stelle
|
||||
|
||||
**Der Export passt nicht auf die Festplatte des Kunden.**
|
||||
|
||||
Aus dem Katalog:
|
||||
|
||||
| Paket | Kontingent | Platte | Luft |
|
||||
|---|---|---|---|
|
||||
| Start | 30 GB | 40 GB | 10 GB |
|
||||
| Team | 85 GB | 100 GB | 15 GB |
|
||||
| Business | 175 GB | 200 GB | 25 GB |
|
||||
|
||||
Ein Kunde, der sein Kontingent ausnutzt, hat **keinen Platz für ein Archiv
|
||||
seiner eigenen Daten**. Der naheliegende Weg — im Gast ein `tar` bauen und es
|
||||
danach abholen — scheitert genau bei den Kunden, bei denen es am meisten
|
||||
zählt.
|
||||
|
||||
Dazu kommt: CluPilot erreicht einen Gast **nur über den Proxmox-Gastagenten**.
|
||||
Der führt Befehle aus; er ist kein Weg, hundert Gigabyte herauszutragen.
|
||||
|
||||
### Drei Wege, und was sie kosten
|
||||
|
||||
**A — Vom Host aus, an der Maschine vorbei.** Die Platte des Gastes liegt als
|
||||
Datenträger auf dem Proxmox-Host, und dorthin hat CluPilot eine SSH-Verbindung.
|
||||
Die Platte wird auf dem Host schreibgeschützt eingehängt, das Datenverzeichnis
|
||||
direkt auf den Speicherserver gepackt. **Kein Platz im Gast nötig, kein
|
||||
Gastagent im Spiel.** Braucht Werkzeug auf dem Host (`qemu-nbd` oder
|
||||
`libguestfs`), das dort noch nicht steht.
|
||||
|
||||
**B — Aus dem Archiv heraus.** Die Maschine wird ohnehin archiviert. Man
|
||||
archiviert zuerst, holt die Dateien danach **auf dem Speicherserver** aus dem
|
||||
Abbild und packt sie dort. Ein Vorgang trägt beide Zwecke. Braucht dafür einen
|
||||
Speicherserver, der das Abbild öffnen kann — er wird damit vom Ablageort zum
|
||||
Werkzeug.
|
||||
|
||||
**C — Kein Archiv von uns, nur ein Hinweis.** Der Kunde lädt vor dem
|
||||
Laufzeitende selbst herunter; wir erinnern ihn zweimal und geben ihm den Weg.
|
||||
Nichts zu bauen, kein Speicherbedarf. **Aber der Satz im Kündigungsdialog muss
|
||||
geändert werden** — was dann versprochen wird, ist eine Frist und eine
|
||||
Anleitung, kein fertiger Export.
|
||||
|
||||
**Empfehlung: A.** Er ist der einzige, der ohne Umweg das liefert, was
|
||||
versprochen wurde, und er belastet weder die Maschine des Kunden noch macht er
|
||||
den Speicherserver zu etwas, das rechnen können muss. Der Preis ist ein
|
||||
Werkzeug auf dem Host — und Hosts richtet dieses Produkt selbst ein, das ist
|
||||
ein Schritt in der Übernahme, kein Handgriff des Betreibers.
|
||||
|
||||
---
|
||||
|
||||
## Was ein Export enthält
|
||||
|
||||
- **Die Dateien aller Benutzer**, in der Ordnerstruktur, die sie in ihrer Cloud
|
||||
gesehen haben. Das ist der Teil, den ein Mensch braucht und ohne uns öffnen
|
||||
kann.
|
||||
- **Ein Abzug der Datenbank**, getrennt und als solcher benannt. Er trägt
|
||||
Kontakte, Kalender und Freigaben. Ein Mensch kann damit nichts anfangen — ein
|
||||
Anbieter, zu dem der Kunde zieht, sehr wohl. Ihn wegzulassen hiesse, genau
|
||||
die Daten zurückzuhalten, die eine Übertragung möglich machen.
|
||||
- **Eine Liesmich-Datei**, die sagt, was die beiden Teile sind.
|
||||
|
||||
---
|
||||
|
||||
## Offene Frage an den Betreiber
|
||||
|
||||
**Wie lange bleibt ein VM-Archiv liegen?**
|
||||
|
||||
Das ist die Zahl, die über den Speicherbedarf entscheidet, und sie ist nicht
|
||||
gestellt worden.
|
||||
|
||||
Ein Business-Archiv bringt bis zu 200 GB mit. Archiviert man **jede** gekündigte
|
||||
Maschine und löscht nie, wächst dieser Speicher **unbegrenzt**: zehn
|
||||
Kündigungen sind zwei Terabyte, die nie wieder kleiner werden. In zwei Jahren
|
||||
zahlt der Betreiber für Kunden, die es seit anderthalb Jahren nicht mehr gibt.
|
||||
|
||||
Vorschlag: **zwölf Monate.** Lang genug für jede Nachfrage, die realistisch
|
||||
kommt, und kurz genug, dass der Speicher eine Grösse hat statt einer Richtung.
|
||||
Danach fällt das Archiv weg — angekündigt in derselben Mail, in der die
|
||||
Bestätigung erbeten wird.
|
||||
|
||||
---
|
||||
|
||||
## Was der Speicherserver dreifach trägt
|
||||
|
||||
Dieselbe Box trägt drei Dinge, von denen zwei ohnehin gebraucht werden:
|
||||
|
||||
1. **Zweiter Sicherungsort** — das Modul, das heute **verkauft wird und nichts
|
||||
tut**. Von den dreien das dringlichste, weil dort bereits Geld fliesst.
|
||||
2. Die VM-Archive.
|
||||
3. Die Kunden-Exporte.
|
||||
|
||||
Für die Exporte ist der Bedarf klein: sie leben, bis der Kunde sie geholt hat.
|
||||
Drei gleichzeitig kündigende Business-Kunden sind gut 500 GB. Der grosse
|
||||
Posten sind die Archive, und dort entscheidet die Frist oben.
|
||||
|
||||
---
|
||||
|
||||
## Was nicht gebaut wird
|
||||
|
||||
- **Kein früheres Ende.** Eine Kündigung nimmt niemandem etwas weg, wofür er
|
||||
bezahlt hat.
|
||||
- **Keine Wiederherstellung durch den Kunden.** Wer zurückwill, meldet sich;
|
||||
innerhalb der vierzehn Tage steht die Maschine noch. Ein Selbstbedienungsknopf
|
||||
dafür wäre ein eigenes Vorhaben.
|
||||
- **Kein Export nach dem Abbau.** Danach gibt es das Archiv, und das öffnet der
|
||||
Betreiber.
|
||||
Loading…
Reference in New Issue