<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog - gelkao</title><link>https://gelkao.com/blog/</link><description>Open-Source-Tools für die Lücken der Hetzner Cloud.</description><generator>Hugo</generator><language>de</language><lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gelkao.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Kann man auf der Hetzner Cloud ein ausfallsicheres System mit kleinem Budget bauen?</title><link>https://gelkao.com/blog/is-it-possible-to-build-fault-tolerant-budget-system-on-hetzner-cloud/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid>https://gelkao.com/blog/is-it-possible-to-build-fault-tolerant-budget-system-on-hetzner-cloud/</guid><description>&lt;h2 id="einleitung"&gt;Einleitung&lt;/h2&gt;&#10;&lt;p&gt;Stell dir vor, wir wollen das einfachstmögliche System bei Hetzner betreiben:&lt;/p&gt;&#10;&lt;pre class="diagram-center"&gt;&lt;code&gt;Anfrage --&amp;gt; Anwendung --&amp;gt; Datenbank&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;Auf einem dedizierten Server (Bare Metal) könnte der Baustein so aussehen:&lt;/p&gt;&#10;&lt;pre class="diagram-center"&gt;&lt;code&gt;Maschine &amp;lt;-- Anfrage&#10; anwendung --&amp;gt; datenbank --&amp;gt; RAID&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;In einem echten Produktionssystem laufen entweder viele Anwendungen (oder Microservices), oder es ist ein&#10;mandantenfähiges System. Daraus wird dann eher so ein Aufbau:&lt;/p&gt;&#10;&lt;pre class="diagram-center"&gt;&lt;code&gt;Maschine1 &amp;lt;-- Anfrage&#10; anwendung_11 --&amp;gt; datenbank_11 --&amp;gt; RAID&#10; anwendung_12 --&amp;gt; datenbank_12 --&amp;gt; RAID&#10; ...&#10; anwendung_1n --&amp;gt; datenbank_1n --&amp;gt; RAID&#10;&#10;Maschine2 &amp;lt;-- Anfrage&#10; anwendung_21 --&amp;gt; datenbank_21 --&amp;gt; RAID&#10; anwendung_22 --&amp;gt; datenbank_22 --&amp;gt; RAID&#10; ...&#10; anwendung_2n --&amp;gt; datenbank_2n --&amp;gt; RAID&#10;&#10;...&#10;&#10;Maschine_k&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;Machen wir jetzt dasselbe für die Hetzner Cloud:&lt;/p&gt;&#10;&lt;pre class="diagram-center"&gt;&lt;code&gt;VM_1 &amp;lt;-- Anfrage&#10; anwendung_11 --&amp;gt; datenbank_11 --&amp;gt; volume_11&#10; &amp;#43;-&amp;gt; backupVolume_11&#10;VM_2 &amp;lt;-- Anfrage&#10; anwendung_12 --&amp;gt; datenbank_12 --&amp;gt; volume_12&#10; &amp;#43;-&amp;gt; backupVolume_12&#10;...&#10;VM_m &amp;lt;-- Anfrage&#10; anwendung_1m --&amp;gt; datenbank_1m --&amp;gt; volume_1m&#10; &amp;#43;-&amp;gt; backupVolume_1m&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;In der Cloud kommt ein Backup-Volume dazu, weil das der einzige Weg ist, den ich kenne, um die Datenbank aus einem&#10;Backup wiederherstellbar zu halten, falls das Live-Volume verloren geht.&lt;/p&gt;&#10;&lt;p&gt;Das Bild sieht so aus, als hätten wir die Ausfallsicherheit verbessert. Auf dedizierter Hardware hatten wir &lt;code&gt;k&lt;/code&gt;&#10;physische Maschinen, von denen jede ausfallen und einen Teil des Systems mitreißen konnte. In der Cloud sieht es nach&#10;&lt;code&gt;m&lt;/code&gt; unabhängigen Bausteinen aus: Wenn &lt;code&gt;VM_1&lt;/code&gt; ausfällt, hat das keinen Einfluss auf die Verfügbarkeit von &lt;code&gt;VM_2&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Genau das habe ich geglaubt, als ich meine erste Migration in die Hetzner Cloud gemacht habe. Nach ein paar Monaten im&#10;Produktivbetrieb kamen dann kryptische E-Mails mit diesem Betreff:&lt;/p&gt;&#10;&lt;pre class="email-quote"&gt;&lt;code&gt;Betreff: Wartungsarbeiten an Volume Pool 791&#10;Inhalt:&#10;...&#10;Die folgenden Produkte sind betroffen:&#10;prod Cloud Volume #9000025 volume_11&#10;prod Cloud Volume #9000026 backupVolume_11&#10;prod Cloud Volume #9000027 volume_12&#10;prod Cloud Volume #9000028 backupVolume_12&#10;...&#10;prod Cloud Volume #9000029 volume_1p&#10;prod Cloud Volume #9000030 backupVolume_1p&#10;...&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;und als das Wartungsfenster kam, waren &lt;code&gt;anwendung_11&lt;/code&gt; bis &lt;code&gt;anwendung_1p&lt;/code&gt; weg.&#10;Das brachte mich ins Grübeln, ob mein mentales Modell des Systems überhaupt stimmt.&lt;/p&gt;&#10;&lt;h2 id="die-rote-pille"&gt;Die rote Pille&lt;/h2&gt;&#10;&lt;p&gt;Ziemlich schnell kam ich zu dem&#10;Schluss: Die Hetzner Cloud ist logisch betrachtet aus denselben Bausteinen gebaut wie Hetzner Robot, also aus Hardware&#10;und Software. Der einzige logische Unterschied liegt in der Aufteilung der Verantwortung, also darin, welcher Teil mir&#10;gehört und welcher dem Anbieter. Meine Recherche ergab folgende Architektur:&lt;/p&gt;&#10;&lt;pre class="diagram-center"&gt;&lt;code&gt;nbg1-cloud1-leaf43 &amp;lt;-- Anfrage&#10; Node 41207&#10; VM_1&#10; anwendung_11 --&amp;gt; datenbank_11 -------&amp;#43;&#10; ... |&#10; VM_p |&#10; anwendung_1p --&amp;gt; datenbank_1p -------&amp;#43;&#10; |&#10;nbg1-cloud1-leaf41 &amp;lt;----------------------&amp;#43;&#10; Volume Pool 791&#10; volume_11&#10; backupVolume_11&#10; ...&#10; volume_1p&#10; backupVolume_1p&#10;&#10;fsn1-cloud2-leaf45 &amp;lt;-- Anfrage&#10; Node 58314&#10; VM_p&amp;#43;1&#10; anwendung_1p&amp;#43;1 --&amp;gt; datenbank_1p&amp;#43;1 ---&amp;#43;&#10; ... |&#10; VM_m |&#10; anwendung_1m --&amp;gt; datenbank_1m -------&amp;#43;&#10; |&#10;fsn1-cloud2-leaf86 &amp;lt;----------------------&amp;#43;&#10; Volume Pool 181&#10; volume_1p&amp;#43;1&#10; backupVolume_1p&amp;#43;1&#10; ...&#10; volume_1m&#10; backupVolume_1m&lt;/code&gt;&lt;/pre&gt;&#10;&#10;&lt;p&gt;Die entscheidende Beobachtung, die meine Sicht verändert hat: Ein Volume ist nicht das Gegenstück zu einem RAID im&#10;Robot-System. Es ist keine Platte. Es ist ein eigener Netzwerkaufruf an einen komplexen Ceph-Cluster. Auch wenn man&#10;sagen könnte, beides sei I/O und damit irgendwie gleichwertig - im Fehlerfall verhalten sie sich nicht gleich.&lt;/p&gt;&#10;&lt;p&gt;Damit stand die eigentliche Frage im Raum: Können wir das ausfallsicher machen?&lt;/p&gt;&#10;&lt;h2 id="die-architektur-der-verfügbarkeit"&gt;Die Architektur der Verfügbarkeit&lt;/h2&gt;&#10;&lt;p&gt;Zuerst der Versuch einer Erklärung, was Leaves und Pools sind. Nodes lasse ich vorerst außen vor, weil sie die Volumes&#10;nicht betreffen. Leaves sind Netzwerkkomponenten, die den Zugang zu den Volume Pools steuern. Das ist eine&#10;1:n-Beziehung. In den Volume Pools liegen dann die einzelnen Volumes.&lt;/p&gt;&#10;&lt;p&gt;Daraus ergibt sich diese Auswirkung, je nachdem, auf welcher Ebene gewartet wird.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Ebene&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Zuständig&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Umfang&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Spielraum&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Leaf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Anbieter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Alle Volumes in allen Pools hinter diesem Leaf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ausfallzeit vom Anbieter vorgegeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Volume Pool&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Anbieter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Alle Volumes in diesem einen Pool&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ausfallzeit vom Anbieter vorgegeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Volume&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Kunde&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ein einzelnes Volume&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;vom Kunden geplant&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Wenn du aus der Robot-Welt kommst, ist die nächstliegende Entsprechung für Leaf/Volume Pool ein RAID auf einem&#10;dedizierten Server, das gewartet werden muss und wofür die ganze Maschine heruntergefahren wird. Nach der in der&#10;Einleitung gezeigten Architektur sind damit viele Microservices (oder viele Kundensysteme, wenn es mandantenfähig ist)&#10;nicht erreichbar.&lt;/p&gt;&#10;&lt;p&gt;Jetzt zur Verfügbarkeit in der Praxis. Hetzner hat ein SLA&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, samt&#10;Entschädigungsmöglichkeit&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;, leider aber nur für vServer. Das SLA nimmt außerdem jede geplante&#10;Wartung aus, die früher als 24 Stunden vor der Ausfallzeit angekündigt wurde.&lt;/p&gt;&#10;&lt;p&gt;Das Folgende ist also nur ein Gedankenexperiment, denn das SLA deckt weder Volumes noch geplante Wartung ab&#10;(theoretisch könnte der Anbieter Wartung für einen ganzen Monat ankündigen und das SLA wäre trotzdem erfüllt). Wenn wir&#10;aber einmal annehmen, die Volumes stünden unter einem SLA von 99,9 % und geplante Wartung zählte weiterhin als Ausfall,&#10;dann sieht die Praxis für meine Flotte so aus. Die Migration von Robot (dediziert) in die Hetzner Cloud begann im März&#10;2025 und lief über die folgenden sechs Monate. Hier die Volume-Ausfälle, die ich erlebt habe, jeweils mit der&#10;Flottengröße zu diesem Zeitpunkt (angekündigte Wartungen, die nur die Performance beeinträchtigen, sind nicht&#10;enthalten).&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Monat&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Art&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;schlechteste Volume-Verfügbarkeit&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;längster Ausfall&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Volumes &amp;lt; 99,9 %&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Prod-Flotte&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Anteil&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Einheit&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2025-09&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ungeplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,8750 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;151&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pool 632&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-02&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ungeplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,8661 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;179&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pool 918&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-03&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;geplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,8656 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;60 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;26&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;185&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Leaf nbg1-cloud1-leaf92&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-04&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;geplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,8611 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;60 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;37&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;187&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Leaf nbg1-cloud1-leaf68&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-05&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;geplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,8656 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;60 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;29&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;190&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Leaf hel1-cloud1-leaf98&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2026-06&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ungeplant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99,6759 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;140 Min&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;194&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pool 689&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Die Verfügbarkeit der vServer bleibt in diesem Artikel außen vor, weil ich beobachtet habe, dass die&#10;Volume-Verfügbarkeit den größten Einfluss auf die Verfügbarkeit der Flotte hat. Interessant dabei: Volumes tauchen im&#10;SLA überhaupt nicht auf, tragen aber am meisten zur Verschlechterung bei. Die zweite Beobachtung: Wenn der Anbieter ein&#10;Wartungsfenster von einer Stunde ankündigt, heißt das bereits, dass die Verfügbarkeit nicht über 99,9 % bleiben kann&#10;(die Grenze liegt bei rund 43 Minuten im Monat, je nach Anzahl der Tage).&lt;/p&gt;&#10;&lt;h2 id="rückblick-auf-den-systementwurf"&gt;Rückblick auf den Systementwurf&lt;/h2&gt;&#10;&lt;p&gt;Beim ursprünglichen Entwurf hatte ich nur die Informationen, die der Anbieter veröffentlicht hat&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Jeder Datenblock wird auf drei verschiedenen physischen Servern gespeichert (dreifache Replikation).&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Damals hielt ich das für deutlich haltbarer als das übliche RAID-1 auf dedizierten Servern. Mein Gedankengang ging&#10;ungefähr so:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Zustand&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;dediziert&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Cloud&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;clean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[UU]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[UUU]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;degraded&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[U_]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[UU_]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hanging&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;n/a&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[U__]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;failed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[__]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;[___]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Erst später habe ich gemerkt, dass der Zustand &amp;ldquo;hanging&amp;rdquo; der ist, in dem das Volume nicht mehr antwortet. Die Daten&#10;liegen weiterhin gespeichert vor, nur erreichbar sind sie nicht mehr. Was ich damals nicht bedacht habe, ist der&#10;Verfügbarkeitsfaktor, der in der Dokumentation nicht klar dasteht. Dieses Volume liegt auf drei getrennten Maschinen,&#10;auf denen jeweils Netzwerk, Mainboard oder Platte ausfallen können. Und es ist eine geteilte Umgebung - auf diesen&#10;Maschinen liegen viele Volumes verschiedener Kunden.&lt;/p&gt;&#10;&lt;p&gt;Um die Widerstandsfähigkeit meines Entwurfs besser zu verstehen, wollte ich herausfinden, wie meine rund 200 Volumes&#10;über den gesamten Ceph-Cluster verteilt sind, den Hetzner betreibt. Die Platzierungszahlen ab hier zählen alle 199&#10;Volumes, also auch die Handvoll Infrastruktur-Volumes, die in der Spalte Prod-Flotte oben fehlt.&#10;Es gibt keine API, die die Leaf- oder Volume-Pool-ID zurückgibt. Später habe ich entdeckt,&#10;dass sich ein Teil dieser Information aus den Wartungs-E-Mails des Anbieters ableiten lässt, weil sie Interna wie&#10;Cloud-Leaf-Namen oder Volume-Pool-IDs durchscheinen lassen. Am meisten gebracht hat aber, den Support zu kontaktieren&#10;und einfach danach zu fragen. Ich war überrascht, wie leicht und wie schnell ich die Information zurückbekommen habe.&#10;Ich habe die Anfrage am Freitag um 17:43 Uhr rausgeschickt und die vollständige Liste am Montagmorgen um 7:39 Uhr&#10;bekommen. Die offizielle Servicezeit für allgemeine Anfragen ist Mo-Fr 8:00 bis 18:00 Uhr,&#10;mitteleuropäische Zeit&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;, wörtlich genommen habe ich die Antwort also (je&#10;nach Rechenweise) entweder in 17 Minuten oder in -4 Minuten bekommen. Mir gefällt die zweite Lesart besser, denn es war&#10;das erste Mal, dass sich &amp;ldquo;brauche ich seit gestern&amp;rdquo; machbar angefühlt hat.&lt;/p&gt;&#10;&lt;p&gt;Sofort habe ich Pivot-Tabellen über die Daten gelegt, um so eine Aufschlüsselung zu bekommen:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;nach der Größe der Volume Pools sortieren,&lt;/li&gt;&#10;&lt;li&gt;Zeile für Zeile über diese Volume Pools gehen,&lt;/li&gt;&#10;&lt;li&gt;zählen, wie viele Volumes betroffen sind, kumuliert bis zur nächsten Zeile.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Leaf&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Pool-ID&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Volumes&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;%&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;kumuliert %&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nbg1-cloud1-leaf41&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;791&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;19&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hel1-cloud1-leaf87&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;379&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;18&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;18,6 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fsn1-cloud2-leaf86&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;181&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;26,1 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fsn1-cloud2-leaf53&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;689&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;33,2 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nbg1-cloud1-leaf73&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;931&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;14&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;40,2 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fsn1-cloud2-leaf86&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;44,7 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hel1-cloud1-leaf25&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;547&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;48,2 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nbg1-cloud1-leaf59&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;596&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;51,8 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Die Aufschlüsselung ist ziemlich frustrierend. Es zeigt sich, dass 50 % der Volumes in nur 8 Pools liegen, der&#10;schlimmste ist Pool 791 mit 19 Volumes. Das heißt: Fällt Pool 791 aus, gehen alle 19 Systeme mit. Das sind 10 % der&#10;Flotte.&lt;/p&gt;&#10;&lt;p&gt;Am deprimierendsten ist aber der Einfluss der anbieterseitigen Wartung von März bis Mai 2026 auf die Verfügbarkeit.&#10;Damals hat Hetzner Cloud Leaves getauscht, und da fällt noch mehr auf einmal aus. Die folgende Tabelle&#10;berücksichtigt keine echten Verfügbarkeitsdaten, sie wertet nur aus, wie viel eine solche Wartung überhaupt mitnimmt.&#10;Dieselbe Pivot-Tabelle wie bei den Volume Pools, nur eine Ebene höher, auf Cloud-Leaf-Ebene.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Leaf&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Pools&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Volumes&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;%&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;kumuliert %&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fsn1-cloud2-leaf86&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;24&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12,1 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12,1 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nbg1-cloud1-leaf41&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;19&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;21,6 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hel1-cloud1-leaf87&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;18&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;30,7 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fsn1-cloud2-leaf53&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;16&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;38,7 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hel1-cloud1-leaf25&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;16&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8,0 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;46,7 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nbg1-cloud1-leaf73&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7,5 %&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;54,3 %&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Jetzt reichen nicht 8 Volume Pools, sondern schon 6 Cloud Leaves, um über 50 % der Flotte lahmzulegen, und der&#10;schlimmste Fall sind nicht 19 Volumes in einem einzelnen Volume Pool, sondern zwei Volume Pools hinter einem Leaf mit&#10;zusammen 24 Volumes. Was auf einen Schlag ausfällt, wächst damit von 10 % auf 12,1 %.&lt;/p&gt;&#10;&lt;h2 id="genauere-analyse"&gt;Genauere Analyse&lt;/h2&gt;&#10;&lt;p&gt;Mit der Pivot-Tabelle bekommt man den schlimmsten Fall leicht heraus. Als Ingenieure wollen wir aber genauer verstehen,&#10;wo wir stehen und wie weit es bis zum Idealzustand ist. Also habe ich ein Werkzeug gebaut, das eine feinere Analyse&#10;erlaubt, und es in die schon vorhandene Open-Source-&lt;a href="https://gelkao.com/go/gh" target="_blank" rel="noopener"&gt;Gelkao CLI&lt;/a&gt;&#10; eingebaut.&lt;/p&gt;&#10;&lt;p&gt;Zuerst zu den beiden Extremen. Sie sind unten abgebildet. Ein komplett rotes Rechteck ist der Fall, in dem alle Volumes&#10;hinter demselben Cloud Leaf und in einem einzigen Volume Pool liegen. Ein komplett grünes Rechteck ist der Fall, in dem&#10;jedes Volume in einem eigenen Volume Pool und hinter einem eigenen Cloud Leaf liegt. Das heißt natürlich nicht, dass&#10;das Volume dort allein liegt. Es können andere Hetzner-Kunden Volumes im selben Volume Pool oder hinter demselben Cloud&#10;Leaf haben.&lt;/p&gt;&#10;&#10;&lt;div class="row g-3 my-4"&gt;&#10;&#9;&lt;div class="col-md-6"&gt;&#10;&#9;&#9;&lt;img src="https://gelkao.com/img/volumes-example-worst.webp" alt="Schlimmster Fall: alle Volumes in einem Pool auf einem einzigen Cloud Leaf, ein roter Block über die ganze Treemap" class="img-fluid w-100 d-block" loading="lazy" decoding="async"&gt;&#10;&#9;&lt;/div&gt;&#10;&#9;&lt;div class="col-md-6"&gt;&#10;&#9;&#9;&lt;img src="https://gelkao.com/img/volumes-example-perfect.webp" alt="Idealfall: ein Volume pro Pool, verteilt über viele Leaves in allen drei Standorten, ein gleichmäßiges Raster kleiner grüner Quadrate" class="img-fluid w-100 d-block" loading="lazy" decoding="async"&gt;&#10;&#9;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Die echte Flotte liegt als Bild zwischen diesen beiden Extremen. Um aber überhaupt sichtbar zu machen, wie weit weg vom&#10;Ideal, brauchen wir eine Kennzahl aus dem Geschäft. Ich habe im Unternehmen gefragt, die Antwort war 10. Die Frage&#10;lautete:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Wie viele gleichzeitige Volume-Ausfälle verträgt unser Geschäft gerade nicht mehr?&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Mit dieser Zahl in der Hand konnte ich anschaulich zeigen, wie weit wir vom Idealfall weg sind. Die Flotte hat genau 8&#10;Volumes von 199, die in einem eigenen Volume Pool liegen, jedes hinter einem anderen Cloud Leaf. 4 % sind also bereits&#10;im bestmöglichen Zustand. Auf dem Bild sieht man leicht: Würden wir den grünen Anteil nehmen und über das ganze Bild&#10;kacheln, bräuchte es etwa 4 Spalten und 5 Zeilen, also 20 Kacheln. Eine einzelne Kachel, das ist die gesamte grüne&#10;Fläche, sind dann rund 5 % - nach bloßem Augenmaß eine fast exakte Schätzung.&lt;/p&gt;&#10;&lt;p&gt;Genauso beim roten Rechteck oben links. Erinnere dich: Das schlimmste Cloud Leaf hatte 12,1 % der Flotte. Dieses&#10;zweifarbige Rechteck oben links nimmt die halbe Höhe und grob 20-25 % der Breite ein. Optisch belegt es also 10-12,5 %&#10;der Grafik. Das passt fast genau zu den 12,1 % aus dem letzten Abschnitt.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://gelkao.com/img/volumes-real-fleet.webp" alt="Treemap der Volume-Flotte, gruppiert nach Cloud Leaf und Volume Pool; die Blockgröße wächst mit der Anzahl der Volumes hinter einem einzelnen Ausfallpunkt" class="img-fluid w-100 d-block my-4" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Damit ist klar, was die großen Rechtecke sind: Cloud Leaves. Sie tragen auch die Ampelfarben. Ein Leaf mit:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 Volume ist grün&lt;/li&gt;&#10;&lt;li&gt;2-9 Volumes ist gelb (10 ist die oben eingeführte Schmerzgrenze des Geschäfts)&lt;/li&gt;&#10;&lt;li&gt;10 und mehr Volumes ist rot&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Jetzt sehen wir uns an, wie die Volume Pools kodiert sind. Ein Beispiel, an dem man es gut sieht, ist &lt;code&gt;f-2-95&lt;/code&gt; unten&#10;rechts, mit den Volume Pools &lt;code&gt;518&lt;/code&gt; und &lt;code&gt;936&lt;/code&gt;. Jeder dieser Volume Pools enthält genau ein Volume, deshalb sind sie&#10;in einem helleren Gelb. Das ist der günstige Fall, bei dem der Ausfall eines Volume Pools den geringstmöglichen&#10;Einfluss auf das System hat: Ein Volume Pool fällt aus, ein Volume ist weg. Jede dunklere Schattierung eines&#10;Volume-Pool-Rechtecks heißt, dass dieser Volume Pool mehr als ein Volume enthält (grün ausgenommen).&lt;/p&gt;&#10;&lt;p&gt;Wenn du dir die zweite Tabelle aus dem vorherigen Abschnitt genauer ansiehst, steht in der letzten Zeile kumuliert&#10;54,3 %. Und hinter jedem dieser Leaves liegen 10 oder mehr Volumes. Es ist kein Zufall, dass die Grafik genau dieselbe&#10;Geschichte erzählt. Das Rot belegt ungefähr die Hälfte des Bildes.&lt;/p&gt;&#10;&lt;p&gt;Was sagt mir die Grafik also besser als jede Pivot-Tabelle? Zum Beispiel sehe ich auf einen Blick, dass bei der Hälfte&#10;meiner Flotte der Ausfall eines einzelnen Cloud Leaf mehr als 10 Volumes mitnimmt (das Rot). Rund 4 % stehen perfekt&#10;(das Grün). Und es gibt einen Teil, der auf lange Sicht vielleicht problematisch ist, aber keine unmittelbare Gefahr&#10;für das Geschäft (Gelb) - &lt;em&gt;technische Schulden&lt;/em&gt; wäre wohl ein guter Name für den gelben Teil.&lt;/p&gt;&#10;&lt;p&gt;Ich will die Grafik nicht überverkaufen, aber nach meinem Verständnis lässt sich die Ausfallsicherheit einer Flotte&#10;damit einer nicht technischen Person im Unternehmen deutlich leichter erklären als über eine Pivot-Tabelle.&lt;/p&gt;&#10;&lt;h2 id="anwendungsfall-livebackup"&gt;Anwendungsfall: Live/Backup&lt;/h2&gt;&#10;&lt;p&gt;Im Hetzner Forum&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; wird schon nach genau diesem Fall gefragt. Die Datenbank ist so konfiguriert, dass&#10;die Live-Daten auf einem Volume und die Backup-Daten auf einem getrennten Volume liegen. Beide Volumes hängen an&#10;derselben Maschine. Der Cloud-Support von Hetzner ist nicht rund um die Uhr besetzt. Innerhalb der europäischen&#10;Geschäftszeiten antwortet er ziemlich schnell, aber wenn dein System spätabends oder nachts steht, musst du bis zum&#10;nächsten Morgen warten.&lt;/p&gt;&#10;&lt;p&gt;Firmen, die auf der Hetzner Cloud hosten, haben in der Regel SLAs mit ihren Endkunden. In diesen SLAs steht eine harte&#10;Frist für die Wiederherstellung. Wird ein Live-Volume also etwa um 22:00 Uhr als nicht erreichbar erkannt und es gibt&#10;ein Verfahren, aus einem Datenbank-Backup in weniger als einer Stunde wiederherzustellen, dann wäre allen gedient.&#10;Liegen aber beide Volumes (live und Backup) im selben Pool oder hinter demselben Leaf, fallen sie gemeinsam aus. Das&#10;schlägt direkt auf das SLA durch, das sich im geschilderten Fall nicht mehr einhalten lässt. Nur Hetzners Personal kann&#10;das System wiederherstellen, und das passiert erst am nächsten Morgen, also zwölf Stunden später - damit ist das SLA&#10;mit dem Endkunden gebrochen.&lt;/p&gt;&#10;&lt;p&gt;Der derzeitige Behelf sieht so aus:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Über mehrere Tage verteilt ein paar Volumes anlegen&lt;/li&gt;&#10;&lt;li&gt;Ein Support-Ticket bei Hetzner Cloud aufmachen und nach der Leaf-/Volume-Platzierung dieser Volumes fragen&lt;/li&gt;&#10;&lt;li&gt;Die Volumes auswählen, die NICHT hinter demselben Leaf oder schlicht NICHT im selben Pool liegen (je nach Vorliebe),&#10;und sie für die Live-Daten und das Backup nehmen&lt;/li&gt;&#10;&lt;li&gt;Alle anderen Volumes wieder löschen. Die Laufzeit zahlst du trotzdem, aber da Volumes vergrößert werden können, sind&#10;diese Kosten meist zu vernachlässigen, wenn du für ein paar Tage die kleinsten 10-GB-Volumes nimmst&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Der Behelf hat folgende Nachteile. Es steckt eine Schleife darin. Wenn die Antwort von Hetzners Support kommt und sich&#10;herausstellt, dass alle Volumes hinter demselben Leaf oder im selben Pool liegen, fängst du von vorne an. Deshalb oben&#10;&amp;ldquo;über mehrere Tage verteilt&amp;rdquo;. Ich habe meine historische Volume-Erzeugung ausgewertet, und es zeigt sich: Volumes, die&#10;zur selben Zeit angelegt wurden, landeten überwiegend im selben Volume Pool. Meine Erfahrung ist, dass sich das nur&#10;beeinflussen lässt, indem man das Zeitfenster für das Anlegen ausdehnt.&lt;/p&gt;&#10;&lt;h2 id="anwendungsfall-mandanten-verteilen"&gt;Anwendungsfall: Mandanten verteilen&lt;/h2&gt;&#10;&lt;p&gt;Es gibt einige Firmen, die ihren Endkunden mandantenfähige Systeme anbieten. Entweder hosten sie selbst entwickelte&#10;Software für viele Endkunden, oder sie tun dasselbe mit einem Open-Source-System (oder einem anderen Fremdsystem). Den&#10;Live/Backup-Aufbau lassen wir hier weg, den haben wir schon behandelt und er bringt für diesen Fall nichts Neues. Das&#10;Problem hier: Wer ein mandantenfähiges System betreibt, will normalerweise die Zahl der Endkunden klein halten, die ein&#10;volumebezogener Ausfall in der Hetzner Cloud trifft. Denn manchmal sind die Wiederherstellungsverfahren nur&#10;halbautomatisch oder komplett manuell. Es macht einen großen Unterschied, ob du ein System in weniger als einer Stunde&#10;wiederherstellen musst oder vierundzwanzig.&lt;/p&gt;&#10;&lt;p&gt;Nehmen wir das schon beschriebene Beispiel. Stell dir vor, &lt;code&gt;fsn1-cloud2-leaf86&lt;/code&gt; fällt aus, mit 24 Volumes dahinter. Für&#10;mich heißt das: 24 Endkunden sind betroffen. Wenn das SLA eine Wiederherstellung in unter einer Stunde vorsieht und nur&#10;eine oder wenige Personen verfügbar sind, wird diese Stunde durch 24 geteilt, allgemein durch 24/Anzahl der Personen.&#10;Im schlimmsten Fall sind das 2,5 Minuten pro System. Selbst wenn eine Stunde für die Wiederherstellung eines einzelnen&#10;Kunden reichlich ist, sind 2,5 Minuten pro Kunde unter Druck, eine Stunde am Stück, für eine einzelne Person&#10;vermutlich kein realistisches SLA.&lt;/p&gt;&#10;&lt;p&gt;Der Behelf für diesen Fall ähnelt dem aus dem vorherigen Fall so stark, dass ich ihn dir selbst überlasse. Und wieder&#10;hat er genau dieselben Probleme wie im vorherigen Abschnitt. Vielleicht ist die Wahrscheinlichkeit sogar größer, dass&#10;die Schleife viele Durchläufe braucht, denn es sind nicht nur zwei Volumes zu verteilen: Bei 200 Kunden sind es 200&#10;Volumes.&lt;/p&gt;&#10;&lt;h2 id="wie-geht-es-weiter"&gt;Wie geht es weiter?&lt;/h2&gt;&#10;&lt;p&gt;Diese Untersuchung ist der erste Schritt, um die Ausfallsicherheit der Flotte zu verbessern, für die ich verantwortlich&#10;bin. Das Bewusstsein dafür ist der wichtigste Teil des Prozesses. Aber ich weiß auch, dass es nicht der letzte bleiben&#10;sollte. Würde ich mit den beschriebenen Behelfen die Flotte auf lauter &lt;em&gt;grüne&lt;/em&gt; Rechtecke umbauen, wäre die Handarbeit&#10;für das Unternehmen vermutlich nicht zu rechtfertigen.&lt;/p&gt;&#10;&lt;p&gt;Mein Plan für die nächste Zeit? Du als Leser bist der wichtigste Teil meines Plans. Ich hoffe, du schreibst mir eine&#10;&lt;a href="https://gelkao.com/go/pm" target="_blank" rel="noopener"&gt;private Nachricht im Hetzner Forum&lt;/a&gt;&#10;, wenn du&#10;ähnliche Probleme hast wie ich. Ich bin außerdem auf dem &lt;a href="https://www.hetzner.com/de/hetzner-summit/" target="_blank" rel="noopener noreferrer"&gt;Hetzner Summit 2026&lt;/a&gt;&#10;,&#10;wenn du also dort bist und Lust auf ein Gespräch von Angesicht zu Angesicht hast, freue ich mich.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Ich bin dort vermutlich der einzige Pole in einem auffälligen schwarzen T-Shirt, du findest mich also leicht&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="quellen"&gt;Quellen&lt;/h2&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;&lt;a href="https://www.hetzner.com/de/legal/cloud-server/" target="_blank" rel="noopener noreferrer"&gt;https://www.hetzner.com/de/legal/cloud-server/&lt;/a&gt;&#10;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;&lt;a href="https://docs.hetzner.com/de/general/company-and-policy/slas-cloud/" target="_blank" rel="noopener noreferrer"&gt;https://docs.hetzner.com/de/general/company-and-policy/slas-cloud/&lt;/a&gt;&#10;&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;&lt;a href="https://docs.hetzner.com/de/cloud/volumes/faq" target="_blank" rel="noopener noreferrer"&gt;https://docs.hetzner.com/de/cloud/volumes/faq&lt;/a&gt;&#10;&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;&lt;a href="https://docs.hetzner.com/de/general/infrastructure-and-availability/support-team-opening-hours/" target="_blank" rel="noopener noreferrer"&gt;https://docs.hetzner.com/de/general/infrastructure-and-availability/support-team-opening-hours/&lt;/a&gt;&#10;&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;&lt;a href="https://forum.hetzner.com/index.php?thread/32581-warum-wartungsarbeiten-an-volumes-nicht-nachts-st%C3%B6rung/&amp;amp;postID=313976#post313976" target="_blank" rel="noopener noreferrer"&gt;https://forum.hetzner.com/index.php?thread/32581-warum-wartungsarbeiten-an-volumes-nicht-nachts-st%C3%B6rung/&amp;postID=313976#post313976&lt;/a&gt;&#10;&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item><item><title>Du bist wahrscheinlich auf der falschen Cloud-Box</title><link>https://gelkao.com/blog/how-cost-efficient-is-mytimeplan-com-cloud/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://gelkao.com/blog/how-cost-efficient-is-mytimeplan-com-cloud/</guid><description>&lt;h2 class="text-center" id="kurzfassung"&gt;&lt;em&gt;Kurzfassung&lt;/em&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;em&gt;Die Migration einer SaaS-E-Commerce-Anwendung mittelständischer Größe (Zeiterfassung) &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&#10;in die Hetzner Cloud &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; im Jahr 2025 dient hier als Beispiel für einen Ansatz zur Optimierung der Cloud-Kosteneffizienz.&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="kurz-gesagt"&gt;Kurz gesagt&lt;/h2&gt;&#10;&lt;p&gt;Wenn wir zu Beginn jedes Monats die finanziell optimale Cloud-Box mit gleicher Ausstattung (RAM, CPU) gewählt hätten -&#10;wie viel weniger hätte es gekostet?&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Zeitraum: 2025-03 - 2026-04 (14 Monate)&lt;/li&gt;&#10;&lt;li&gt;Gesamt gezahlt: 14.142,46 €&lt;/li&gt;&#10;&lt;li&gt;Aktuelle Kosten: 1.878,02 €/Monat&lt;/li&gt;&#10;&lt;li&gt;Einsparpotenzial: &lt;strong&gt;23,3 %&lt;/strong&gt; (3.296 €)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: center"&gt;Monat&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Gezahlt [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Optimal [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Einsparpotenzial [%]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-03&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;156&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;73&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;##################### 53&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-04&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;456&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;221&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;#################### 51&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-05&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;802&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;566&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;########### 29&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-06&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;846&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;632&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 25&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-07&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;770&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;661&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;##### 14&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-08&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;853&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;752&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;#### 12&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-09&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;993&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;883&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;#### 11&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-10&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.146&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;852&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;########## 26&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-11&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.187&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;891&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 25&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2025-12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.204&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;913&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 24&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2026-01&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.237&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;947&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 23&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2026-02&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.255&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;965&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 23&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2026-03&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.357&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.052&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 23&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;2026-04&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.878&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.437&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;######### 23&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="analyse"&gt;Analyse&lt;/h2&gt;&#10;&lt;p&gt;Seit dem Beginn der Migration im März 2025 ist die Lernkurve deutlich zu erkennen.&#10;Der Anteil der Überzahlung sinkt von Monat zu Monat, weil ich die Maschinenkapazität passender gewählt habe.&#10;Bereits migrierte Maschinen habe ich auf ihrer ursprünglichen Box belassen, spätere Migrationen liefen aber auf die günstigeren Boxen.&lt;/p&gt;&#10;&lt;p&gt;Etwa im September 2025 fiel mir während der Migration auf, dass ich die günstigeren ARM-Prozessoren ungenutzt ließ.&#10;Ich schaffte nur 14 Kunden (von rund 200), dann machte eine Änderung des Preismodells im Oktober 2025 das Ganze&#10;unrentabel.&lt;/p&gt;&#10;&lt;p&gt;Am 16. Oktober 2025 brachte der Cloud-Anbieter (Hetzner) CX Gen3 und CPX Gen2 auf den Markt (&lt;code&gt;cx23&lt;/code&gt; für 2,99 €) &lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;.&#10;Damit war die bis dahin preislich optimale Wahl von ARM- und AMD-Prozessoren überholt. Statt 11 % zahlte mytimeplan.com&#10;auf einmal 26 % zu viel - bei unveränderten Anforderungen.&lt;/p&gt;&#10;&lt;p&gt;Am 1. April 2026 (kein Aprilscherz) änderte der Cloud-Anbieter (Hetzner) seine Preise &lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;.&#10;Pauschal rund 30 % mehr, und zwar auch für bestehende Server. Dadurch lag die Rechnung für April 2026 (1.878 €) rund 28 % über der für März 2026 (1.357 €).&#10;Der Anteil des entgangenen Sparpotenzials blieb gleich, weil die Erhöhung nominal die gesamte Flotte betraf -&#10;das Verhältnis zwischen den Box-Typen konnte sich dadurch gar nicht ändern.&lt;/p&gt;&#10;&lt;p&gt;Kurz vor der Preisänderung am 15. Juni 2026 &lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; gab es ein schmales&#10;Zeitfenster, um die Maschinen auf finanziell günstigere Typen zu migrieren, den Verlust von 23 % zu beseitigen und den&#10;Preis festzuschreiben - wir haben es verpasst. Mit dem in diesem Artikel beschriebenen Ansatz allein bleibt die Lücke&#10;von 23 % damit dauerhaft bestehen. An weiteren Ideen zur Kostensenkung arbeiten wir aber weiter.&lt;/p&gt;&#10;&lt;h2 id="ausblick-und-offene-fragen"&gt;Ausblick und offene Fragen&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Die Preise ändern sich häufig - was ist die Alternative dazu, das Modell von Hand nachzuziehen?&lt;/li&gt;&#10;&lt;li&gt;Woher wissen wir, dass die aktuellen Box-Größen überhaupt passend sind?&lt;/li&gt;&#10;&lt;li&gt;Lässt sich außerhalb der Geschäftszeiten umskalieren, wenn die Server ohnehin im Leerlauf sind?&lt;/li&gt;&#10;&lt;li&gt;Wie verhalten sich die Kosten nach der Migration im Vergleich zu Bare-Metal-Installationen?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="fazit"&gt;Fazit&lt;/h2&gt;&#10;&lt;p&gt;Dem jeweils günstigsten Typ hinterherzulaufen ist ein Hamsterrad. Nichts zu tun hat manchmal Nachteile, wie bei der&#10;Preisänderung im Oktober 2025. Manchmal hat es aber auch Vorteile, wie bei der Änderung im Juni 2026: Wer eine&#10;bestehende Box umskaliert, landet in der neuen Preistabelle - wer sie &lt;em&gt;so lässt&lt;/em&gt;, bleibt beim alten Preis. Die Rechnung&#10;dauerhaft optimal zu halten, allein mit Handarbeit, erweist sich als nahezu unmöglich, zumindest in diesem Fall.&lt;/p&gt;&#10;&lt;h2 id="willst-du-dein-eigenes-einsparpotenzial-kennen"&gt;Willst du dein eigenes Einsparpotenzial kennen?&lt;/h2&gt;&#10;&lt;p&gt;Führ dieselbe Auswertung mit deinen eigenen Rechnungen durch. &lt;strong&gt;&lt;a href="https://gelkao.com/go/gh" target="_blank" rel="noopener"&gt;Cloud Inefficiency Audit&lt;/a&gt;&#10;&lt;/strong&gt;&#10;ist ein kleines Open-Source-Command-Line-Tool, das komplett auf deinem Rechner läuft - kein Account, kein Login, nichts wird hochgeladen.&#10;Zeig damit auf eine gespeicherte Hetzner-Rechnung, und es gibt dein Einsparpotenzial aus.&lt;/p&gt;&#10;&lt;p&gt;Nicht technisch? Schick deine Rechnungsseite (als HTML gespeichert) an &lt;strong&gt;&lt;a href="mailto:dominikz@gelkao.com" target="_blank" rel="noopener noreferrer"&gt;dominikz@gelkao.com&lt;/a&gt;&#10;&lt;/strong&gt;, und ich antworte mit deiner Zahl - danach lösche ich sie.&lt;/p&gt;&#10;&lt;h2 id="über-diese-fallstudie"&gt;Über diese Fallstudie&lt;/h2&gt;&#10;&lt;p&gt;Die oben ausgewertete Infrastruktur ist die &lt;strong&gt;echte Produktionsflotte von mytimeplan.com&lt;/strong&gt;&#10;in der Hetzner Cloud. Sie wird mit deren Erlaubnis und mit exakten Zahlen gezeigt.&#10;Die meisten Unternehmen behandeln ihre Cloud-Rechnung als etwas, das man versteckt.&#10;mytimeplan behandelt sie als etwas, das man misst und optimiert.&lt;/p&gt;&#10;&lt;p&gt;Deshalb wird dort auch eingestellt. &lt;strong&gt;mytimeplan sucht eine DevOps- / Platform-Engineer (m/w/d)&lt;/strong&gt;,&#10;die genau diese Arbeit übernimmt: eine wachsende Hetzner-Flotte richtig dimensioniert und im jeweils&#10;optimalen Tarif zu halten, während sich die Preislandschaft darunter ständig verschiebt. Wenn du solche&#10;Probleme gern löst, meld dich unter &lt;strong&gt;&lt;a href="mailto:job@mytimeplan.com" target="_blank" rel="noopener noreferrer"&gt;job@mytimeplan.com&lt;/a&gt;&#10;&lt;/strong&gt; (mit Lebenslauf).&lt;/p&gt;&#10;&lt;h2 id="anhang-aktuelle-flotte"&gt;Anhang: Aktuelle Flotte&lt;/h2&gt;&#10;&lt;p&gt;Zum Zeitpunkt der Erstellung sah die Flotte wie folgt aus. Die Summen liegen etwas über den Rechnungsbeträgen,&#10;weil Hetzner für mytimeplan.com jeweils am 25. des Folgemonats abrechnet. Die Preise liegen außerdem unter den&#10;Listenpreisen auf Hetzners Website, weil sie beim Kauf der jeweiligen Box festgeschrieben wurden.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Typ&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Stückpreis [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Anzahl&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Kosten [€]&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx32&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;8,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;121&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1.027,29&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx33&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;6,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;30&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;194,7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx43&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;11,99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;11&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;131,89&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cax41&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;31,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;220,43&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cpx31&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;17,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;122,43&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cax21&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;7,99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;39,95&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cax31&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;15,99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;47,97&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx23&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;3,99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;11,97&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx42&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;20,99&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;41,98&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cax11&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;4,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;4,49&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;ccx23&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;31,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;31,49&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx22&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;4,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;4,49&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cx53&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;22,49&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;22,49&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;&lt;strong&gt;193&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;&lt;strong&gt;1.901,57&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="quellen"&gt;Quellen&lt;/h2&gt;&#10;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;&lt;a href="https://mytimeplan.com" target="_blank" rel="noopener noreferrer"&gt;https://mytimeplan.com&lt;/a&gt;&#10; Website von My Time Plan&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:2"&gt;&#10;&lt;p&gt;&lt;a href="https://www.hetzner.com/cloud" target="_blank" rel="noopener noreferrer"&gt;https://www.hetzner.com/cloud&lt;/a&gt;&#10;, Hetzner Cloud&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:3"&gt;&#10;&lt;p&gt;&lt;a href="https://www.hetzner.com/pressroom/new-cx-plans/" target="_blank" rel="noopener noreferrer"&gt;https://www.hetzner.com/pressroom/new-cx-plans/&lt;/a&gt;&#10; 2024-06-06 — Start von CX Gen2 (Intel)&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:4"&gt;&#10;&lt;p&gt;&lt;a href="https://www.hetzner.com/news/new-cloud-plans/" target="_blank" rel="noopener noreferrer"&gt;https://www.hetzner.com/news/new-cloud-plans/&lt;/a&gt;&#10; 2025-10-16 — Start von CX Gen3 + CPX Gen2 (&lt;code&gt;cx23&lt;/code&gt; 2,99 €)&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:5"&gt;&#10;&lt;p&gt;&lt;a href="https://web.archive.org/web/20260408224854/https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" target="_blank" rel="noopener noreferrer"&gt;https://web.archive.org/web/20260408224854/https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/&lt;/a&gt;&#10; 2026-02-25 — Preiserhöhung zum 1. April (Details)&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:6"&gt;&#10;&lt;p&gt;&lt;a href="https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/" target="_blank" rel="noopener noreferrer"&gt;https://docs.hetzner.com/general/infrastructure-and-availability/price-adjustment/&lt;/a&gt;&#10; Hetzner Preisanpassung&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li id="fn:7"&gt;&#10;&lt;p&gt;&lt;a href="https://www.hetzner.com/pressroom/standardization-and-price-adjustment-of-our-server-products/" target="_blank" rel="noopener noreferrer"&gt;https://www.hetzner.com/pressroom/standardization-and-price-adjustment-of-our-server-products/&lt;/a&gt;&#10; 2026-05-27 — Standardisierung zum 15. Juni (Neubepreisung beim Umskalieren)&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;</description></item></channel></rss>