Herausforderungen des Wachstums
Eine der spannendsten Herausforderungen bei onOffice der vergangenen Jahre ist das Wachstum der Firma. Dazu gehört sowohl das Wachstum der Kunden und der von uns verwalteten Daten als auch das Mitarbeiterwachstum und den damit verbundenen Änderungen an Teamstrukturen und Arbeitsabläufen. Diese Herausforderungen machen Spaß, sorgen dafür, dass die IT-Jobs nie langweilig werden und man immer wieder dazu gezwungen wird, sich weiterzuentwickeln und Neues zu lernen.
Eine der spannendsten Herausforderungen bei onOffice der vergangenen Jahre ist das Wachstum der Firma. Dazu gehört sowohl das Wachstum der Kunden und der von uns verwalteten Daten als auch das Mitarbeiterwachstum und den damit verbundenen Änderungen an Teamstrukturen und Arbeitsabläufen. Diese Herausforderungen machen Spaß, sorgen dafür, dass die IT-Jobs nie langweilig werden und man immer wieder dazu gezwungen wird, sich weiterzuentwickeln und Neues zu lernen.
Wachstum der Kundenversionen
Schaut man sich das Wachstum der von uns verwalteten Kundenversionen über die letzten acht Jahre an, lässt sich ein fast lineares Wachstum feststellen. Genauer betrachtet ergeben sich zwei Bereiche. Seit 2015 steigt die Anzahl der Kundenversionen etwas stärker an, als im Bereich davor.
Die Anzahl der Kundenversionen lässt aber nur bedingt Aussagen über das Wachstum zu. Eine enterprise-Kundenversion kann ein kleines Maklerunternehmen mit ein oder zwei Benutzern sein, es kann aber auch eine Version eines Maklernetzwerkes mit mehreren Hundert Benutzern sein.
Wachstum der enterprise-User
Betrachtet man die Wachstumskurve der User-Accounts, sind diese Sprünge immer wieder zu erkennen. Das ist die erste Herausforderung. Das Kundenwachstum ist, wie oben zu sehen, sehr gut planbar. Die Anzahl der im System aktiven Benutzer steigt aber je nach Größe des Kunden sprunghaft an. Die Anzahl der Benutzer hat aber natürlich viel größere Auswirkungen auf die Last im Gesamtsystem, als die Anzahl der Kundenversionen.
Wachstum der gespeicherten Daten
Verbunden mit dem Wachstum der Kunden und Nutzer steigt logischerweise auch die verwaltete Speichermenge. Benutzer speichern Daten in der Kundendatenbank, es werden Exposés generiert und gespeichert und so weiter. Hier ergibt sich allerdings ein anderes Wachstumsverhalten. Auch wenn die Anzahl der Kunden linear steigt, erhöht sich die verwaltete Datenmenge nicht linear. Eine konstante Useranzahl würde wahrscheinlich auch ein recht konstantes Datenwachstum erzeugen. Da wir erfreulicherweise immer mehr Benutzer im System haben, erhöht sich aber das Datenwachstum permanent.
Wachstum der Datenmenge in TB
Zu sehen ist das steigende Wachstum an den absoluten Wachstumsraten. Wir messen jede Woche die Gesamtmenge der Daten im System. Wie zu sehen ist, wächst die Datenmenge pro Woche aktuell zum Teil um 1 TB und mehr.
Wachstum der Datenmenge in Prozent
Was auf den ersten Blick schwer beherrschbar scheint, lässt sich aber bei genauerer Betrachtung weiterhin sehr gut vorhersagen. Schaut man sich die prozentuale Wachstumsrate der Datenmengen an, bewegen wir uns noch immer in einem sehr schmalen Korridor. Über diesen prozentualen Faktor lässt sich also doch recht gut vorhersagen, wie viel Speicher in den nächsten Monaten zur Verfügung stehen muss.
Neben dem Datenwachstum steigt natürlich auch die Gesamtlast im System durch die steigende Anzahl an Usern.
Welche Herausforderungen ergeben sich nun aus diesem Kunden- und dem damit verbundenen Daten- und Last-Wachstum?
Flexible Erweiterung der Systeme
Das grundsätzliche Ziel ist, alle Systeme möglichst flexibel erweitern zu können – Skalierbarkeit.
Erweiterung der Server-Kapazitäten
Bei unseren Applikationsservern erreichen wir das dadurch, dass wir sie immer über Loadbalancer-Targets ansprechen und beim Erreichen von Lastgrenzen weitere Server (meistens virtualisiert) hinzufügen. Als Applikationsserver bezeichnen wir:
- die Webserver unserer CRM-Software onOffice enterprise,
- die Webserver zur Auslieferung der onOffice smart site 2.0-Webseiten,
- aber auch Server für untergeordnete Dienste, wie die PDF-Generierung, Immobilienportal-Exporte etc.
Um auf das Datenwachstum im Storage-Bereich reagieren zu können, war der Umstieg auf eine virtualisierte Storage-Lösung ein wichtiger Schritt. Das Storage-System fasst eine Anzahl an Einzel-Servern zu einem virtualisierten Gesamt-Storage zusammen. Werden weitere Kapazitäten benötigt, können neue Server dem Storage-Verbund hinzugefügt und der verfügbare Speicherplatz erhöht werden.
Erweiterung der Teams
Neben den rein technischen Herausforderungen ergeben sich aber auch direkte Team-Herausforderungen. Je größer die Einzelsysteme, desto tieferes Wissen wird benötigt. Das Team zum Betreiben der Server ist damit quasi zum Wachstum gezwungen, niemand kann gleichzeitig Spezialist und Generalist sein. Auch hier sei nochmal erwähnt: Auch diese Herausforderung macht Spaß. Durch neue Kollegen kommt neues Wissen ins Team und einzelne Mitarbeiter können sich immer tiefer in einzelne Bereiche einarbeiten.
Wachstum der Entwicklungsabteilung
Diese Herausforderung des wachsenden Teams gibt es auch in der Softwareentwicklung. Die Anzahl an Entwicklern ist über die Jahre gestiegen. War die Anzahl an Autoren in früheren Jahren noch gering, arbeiten mittlerweile ca. 50 Entwickler an der Weiterentwicklung der onOffice Systeme.
Dieses Entwickler-Wachstum hat immer wieder den Bedarf an geänderten Team-Strukturen und neuen Abläufen aufgedeckt. Ursprünglich war die Entwicklung ein Team ohne weitere Unterteilung, heute haben wir zehn einzelne Teams mit unterschiedlichen Aufgabengebieten. Auch die Arbeitsabläufe haben wir über die Jahre immer wieder angepasst. Es wurden zum Beispiel Code-Reviews systematisiert oder Architekturplanungen im zweier Team zu Beginn eines Implementierungsschrittes eingeführt.
Aus der Erfahrung heraus ist eine gute Code-Qualität paradoxerweise in einem großen Team einfacher oder selbstverständlicher, als in früheren Jahren mit weniger Entwicklern. In unserem aktuellen Entwickler-Team sind die Kompetenzen so breit verteilt, dass es für alle viel einfacher ist, zu lernen und sich weiterzuentwickeln. Sei es durch Feedback von Kollegen, Vorträgen oder Rückmeldungen aus Code-Reviews.
Eine Herausforderung beim Teamwachstum ist es aber, weiter effizient zu arbeiten. Ein Baustein ist die Aufteilung in einzelne Teams mit festen Arbeitsbereichen.
Code-Wachstum von onOffice enterprise
Nachvollziehen lässt sich die Effizienz generell gut, wenn man sich die Entwicklung der “lines of code” anschaut. Die Kennzahl alleine ist natürlich nicht voll aussagekräftig, da wir parallel die Code-Qualität über sonarQube überwachen und so sicherstellen. Die Anzahl der Codezeilen lässt allerdings nur bedingt Rückschlüsse auf die Effizienz zu.
Hier dargestellt ist die Anzahl der Codezeilen unseres Hauptproduktes, onOffice enterprise (bis 2014 onOffice smart).
Auffällig ist direkt, dass die Anzahl der Zeilen in 2014 gesunken ist. Bis 2014 haben wir die ursprüngliche CRM-Software onOffice smart entwickelt. 2012 – 2014 wurde die Entwicklung des Nachfolgers onOffice enterprise gestartet, das im Januar 2015 veröffentlicht wurde. 2012 – 2014 wurde die Basislogik aus onOffice smart in Bibliotheken ausgelagert, die von onOffice enterprise wiederverwendet wurden. Eine Zeit lang hatten beide Produkte eine gemeinsame Basis. Dazu wurden in der Zeit auch noch einmal bewusst Altlasten entfernt und beide Punkte haben den Quellcodes in 2014 schrumpfen lassen. Ein schönes Beispiel für: “Um Statistiken korrekt zu interpretieren, muss man auch immer Hintergründe kennen und verstehen.”
Um zurück zur Effizienzbewertung in Bezug auf das Teamwachstum zu kommen, muss die Entwicklung der Code-Zeilen in Relation zur Anzahl der Autoren gestellt werden:
Betrachten wir nur die vergangenen Jahre, ist eine positive Tendenz von 2016 – 2018 zu erkennen. Trotz des wachsenden Teams, ist auch die Anzahl neuer KLOC pro Mitarbeiter gestiegen. In 2019 ist der Wert deutlich gesunken, was zum Teil an bewussten Team-Investitionen in die Zukunft (Trainees / höherer Anteil an Auszubildenden) liegt. Zusätzlich wurden in 2019 aber noch einmal Altlasten abgebaut und die Code-Qualität im Bereich der Duplizierungen deutlich erhöht. Das Löschen von Altlasten wirkt sich auf diese Statistik natürlich negativ aus, obwohl gerade das extrem wichtig ist, um weiter effizient arbeiten zu können und technischen Fortschritt nicht zu blockieren.
Fazit
Aus dem Kundenwachstum der letzten Jahre ergeben sich unterschiedliche Herausforderungen. Diese Herausforderungen zwingen uns immer wieder zu technischer Weiterentwicklung und einer Weiterbildung der Mitarbeiter – und genau das macht die Arbeit hier bei onOffice so spannend.