Schritt 1: Messen, wo es wirklich klemmt
Bevor du Architektur änderst, brauchst du Belege. Zwei Messungen reichen: Wo im Code ändert sich ständig etwas, und wie lange braucht eine Änderung bis in die Produktion.
# Welche Dateien aendern sich am haeufigsten?
git log --since='12 months ago' --name-only --pretty=format: \
| grep -E '\.(java|go|ts)$' \
| sort | uniq -c | sort -rn | head -20
# Welche Verzeichnisse aendern sich immer gemeinsam?
# Ausgabe: pro Commit die beteiligten Modulordner, danach Paare zaehlen
git log --since='12 months ago' --pretty=format:'---%h' --name-only \
| awk '/^---/{print ""; next} {split($0,a,"/"); if (a[1]=="modules") printf "%s ", a[2]}' \
| sort | uniq -c | sort -rn | head -20Die zweite Abfrage ist die wichtigere. Modulordner, die in fast jedem Commit gemeinsam auftauchen, sind fachlich ein Ding und dürfen nicht getrennt werden. Wer sie trotzdem trennt, baut die erste Hälfte eines verteilten Monolithen.