Читать книгу Handbuch Infrastructure as Code - Kief Morris - Страница 37

Fallstrick: Snowflake-Systeme

Оглавление

Eine Snowflake ist eine Instanz eines Systems oder eines Systemteils, die sich nur schwer erneut bauen lässt. Es kann sich auch um eine Umgebung handeln, die anderen Umgebungen möglichst gleichen soll – zum Beispiel eine Staging-Umgebung –, die sich aber auf eine Art und Weise unterscheidet, die vom Team nicht vollständig verstanden wird.

Niemand hat vor, Snowflake-Systeme zu bauen. Sie entstehen einfach ganz natürlich. Wenn Sie mit einem neuen Tool das erste Mal etwas bauen, machen Sie dabei Erfahrungen und auch Fehler. Aber wenn sich die Leute auf das verlassen, was Sie gebaut haben, haben Sie vielleicht nicht die Zeit, einen Schritt zurückzugehen und das Ganze erneut zu bauen und dabei zu verbessern oder die gemachten Erfahrungen einfließen zu lassen. Es ist besonders schwer, schon gebaute Elemente zu verbessern, wenn Sie nicht die Mechanismen und Praktiken verfügen, die Änderungen einfach und sicher machen.

Ein weiterer Grund für Snowflakes besteht darin, dass Entwicklerinnen und Entwickler Änderungen an nur einer Instanz eines Systems machen, die anderen Instanzen aber unverändert bleiben. Vielleicht stehen sie gerade unter dem Druck, ein Problem zu beheben, das nur in einem System auftaucht, oder sie beginnen mit einem großen Upgrade in einer Testumgebung, haben aber nicht mehr die Zeit, es in andere Umgebungen auszurollen.

Sie wissen, dass ein System eine Snowflake ist, wenn Sie nicht davon ausgehen können, es sicher zu ändern oder zu aktualisieren. Schlimmer noch: Wenn das System ausfällt, wird es schwer, es zu reparieren. Daher vermeidet man, solch ein System zu ändern, wodurch es veraltet, keine Patches mehr bekommt und vielleicht sogar teilweise nicht mehr nutzbar ist.

Snowflake-Systeme sorgen für Risiken und verschwenden die Zeit der Teams, die sie betreuen. Es lohnt sich fast immer, sie durch reproduzierbare Systeme zu ersetzen. Lohnt es sich nicht, ein Snowflake-System zu verbessern, ist es es vielleicht auch nicht wert, es überhaupt noch zu behalten.

Am besten ersetzen Sie ein Snowflake-System, indem Sie Code schreiben, der das System replizieren kann, und das neue System parallel laufen lassen, bis es bereit ist. Nutzen Sie automatisierte Tests und Pipelines, um zu zeigen, dass das System korrekt und reproduzierbar ist, dann können Sie es leicht anpassen.

Handbuch Infrastructure as Code

Подняться наверх