Читать книгу Handbuch Infrastructure as Code - Kief Morris - Страница 96
Ist mein Stack ein Monolith?
ОглавлениеEs ist eine Frage der Einschätzung, ob es sich bei Ihrem Infrastruktur-Stack um einen Monolithen handelt. Zu den Symptomen eines monolithischen Stacks gehören:
Es lässt sich nur schwer verstehen, wie die Elemente des Stacks zusammengehören (vielleicht ist alles zu chaotisch, oder vielleicht passen sie auch nicht gut zusammen).
Neue Teammitglieder brauchen eine Weile, um die Codebasis des Stacks zu verstehen.
Es ist schwer, Probleme mit dem Stack zu debuggen.
Änderungen am Stack führen häufig zu Problemen.
Sie verbringen zu viel Zeit mit dem Warten des Systems und den Prozessen, deren Zweck es ist, die Komplexität des Stacks im Griff zu behalten.
Ein zentraler Indikator dafür, ob ein Stack monolithisch wird, ist, wie viele Personen gleichzeitig an Änderungen arbeiten. Je üblicher es ist, dass mehrere Personen gleichzeitig am Stack arbeiten, desto mehr Zeit verbringen Sie mit dem Koordinieren von Änderungen. Noch schlimmer wird es, wenn mehrere Teams Änderungen am gleichen Stack vornehmen. Haben Sie regelmäßig Fehlfunktionen und Konflikte beim Deployen von Änderungen an einem gegebenen Stack, ist er eventuell zu groß.
Feature Branching (https://oreil.ly/025IQ) ist eine Strategie, um damit umzugehen, aber sie kann für zusätzliche Reibungen und weiteren Overhead beim Ausliefern sorgen. Ist es üblich, für die Arbeit an einem Stack auf Feature Branches zurückzugreifen, deutet das darauf hin, dass er monolithisch geworden sein könnte.
CI (https://oreil.ly/uJwYF) ist ein nachhaltigerer Weg, mit dem ein paralleles Arbeiten mehrerer Entwicklerinnen und Entwickler an einem einzelnen Stack sicherer gestaltet werden kann. Aber wenn ein Stack zunehmend monolithisch wird, braucht der CI Build länger, und es wird schwerer, eine gute Build-Disziplin aufrechtzuerhalten. Ist die CI Ihres Teams zu nachlässig, ist das ein weiteres Zeichen dafür, dass Ihr Stack ein Monolith ist.
Diese Probleme beziehen sich auf ein einzelnes Team, das an einem Infrastruktur-Stack arbeitet. Arbeiten mehrere Teams an einem gemeinsamen Stack, ist das ein klarer Hinweis darauf, dass Sie darüber nachdenken sollten, ihn in mehrere, besser handhabbare Elemente zu unterteilen.