Technische Hürden: Unser Spaghettimonster

Dass viele Strukturen innerhalb unseres Portals zusammenhängen und wir bei der Programmierung von neuen Features immer zuerst auf bestehende Verbindungen gucken müssen, wissen wir spätestens seit Lennarts Artikel alle.

Als ich im Mai 2017 als Product Owner für die privaten Vermieter startete, ahnte ich allerdings noch nicht, vor welche technischen Herausforderungen mich die tägliche Feature-Entwicklung stellen würde. Ich komme ursprünglich aus dem Mobile Games Bereich. Wenn dort ein Spiel nicht funktioniert oder am Ende des Lebenszyklus ist, dann stellt man es einfach offline und verabschiedet sich von allen Altlasten und unwartbarem Code, der über die Monate und Jahre entstanden ist. Mit dem Erstellen eines neuen Spiels startet auch die Diskussion darüber, auf welche technischen Beine man das neue Projekt denn stellen möchte. Bei einem historisch gewachsenen Portal wie Traum-Ferienwohnungen ist das so nicht möglich. Hier gab es leider keinen Neustart alle paar Jahre und die damit verbundenen Auswirkungen spüren wir jeden Tag.

Wir nennen es „Classic“ oder auch manchmal liebevoll „Spaghettimonster“. Das ist unser großer kreuz und quer gewachsener Monolith, mit ganz vielen Querverbindungen, wo alles mit allem kommuniziert und geringe Code Anpassungen ganz unerwartete Effekte zu Tage bringen.

Ein Beispiel: für eine neue URL für die Schweiz und Österreich, wurden entsprechende Daten in der Länder-Tabelle hinzugefügt:

Vorhanden:
Land Deutschland, Sprache Deutsch
Land Großbritannien, Sprache Englisch

Neu:
Land Österreich, Sprache Deutsch
Land Schweiz, Sprache Deutsch

Das hatte leider auch zur Folge, dass nach dieser Änderung der Vermieter im Vermieterbereich aufgefordert wird, seine Sprache zwischen Deutsch, Englisch, Deutsch und Deutsch auszuwählen. Ein Querverweis auf Daten, der da einfach nicht hingehört. Für einen unbedarften Entwickler unvorhersehbar. Unsere erfahrenen Entwickler wissen inzwischen, welche Stellen im Code auf welche Weise miteinander verwoben sind. Da werden umfangreiche Tests bei entsprechenden Änderungen unverzichtbar.

Wir wollen das Spaghettimonster nicht weiter mit Spaghetti Code füttern, deshalb machen wir unsere ersten Schritte mit Microservices. Diese können zwar über eine API mit dem Monster kommunizieren, aber sind vom Code klar voneinander getrennt und besitzen ihre eigene Datenbank.

Packen wir´s an!

Wir müssen lernen, Microservices als Werkzeug zur Entwicklung richtig einzusetzen. Wenn alles klappt, können neu geschriebene Microservices nach und nach Aufgaben vom Monster übernehmen. So hört das Monster hoffentlich bald auf zu wachsen und wird irgendwann immer kleiner, bis wir es gar nicht mehr brauchen. Wir müssen nur Acht geben, dass eines unserer Microservices nicht immer erweitert wird und irgendwann ein neu geborenes zweites Spaghettimonster wird. 😉

Dich spricht unsere Herangehensweise an und du möchtest uns helfen, den Kampf gegen das Spaghettimonster zu gewinnen? Dann schau doch mal bei unseren Jobs vorbei!

Schreibe einen Kommentar