Keep it simple, stupid! (KISS)
Ich muss mal eine Lanze brechen für das Einfache, das Simple. Das, was man zu Anfang lernt, was jeder versteht. Das, worüber die coolen Kids abschätzig lachen. Das rettet dir nämlich am Ende den Arsch, wenn es hoch her geht.
Klar kannste deine Anwendung in zahlreiche Microservices zerlegen und eigene Frameworks implementieren, “damit man das später mal wiederverwenden kann”. Du kannst versuchen, möglichst viele Gof Pattern zu verwenden, damit es auch sophisticated ist. Du kannst MVC im Backend und nochmal MVVM im Frontend einbauen, deinen Client aus einer DSL generieren, die du selbst entworfen hast. Du kannst tausende abhängige NodeJS Module im Projekt verwenden, nur um dein Frontend zu compilieren, Sass und Typescript.
Du darfst deinen Quelltext gern über 20 Repositories verteilen, mit separatem Rechtemanagement und subtil unterschiedlicher Gitflow-Konfiguration. Wie wäre es mit mindestens 4 Entwicklungsumgebungen mit jeweils eigenen App- und Database-Servern, damit deine hunderte Artefakte auf Dutzende Maschinen verteilt werden müssen? Deine 1000 User am Tag haben ansonsten sicher ein managed Kubernetes Cluster verdient (“um auch skalieren zu können”) und jedes http-Backend einen Loadbalancer. “Just in case”, Sicherheit geht vor. Klar. Das kannste alles machen.
Das Dumme ist nur: Die Komplexität fliegt einem früher oder später um die Ohren. Typischerweise dann, wenn man es nicht gebrauchen kann, bei Ausfällen und Fehlfunktionen. Wenn im Team plötzlich ein zentraler Mensch krank ist und niemand sonst weiss, wie der Mist zu verstehen, installieren, konfigurieren oder bedienen ist.
Leider ist es da ein wenig wie bei “Des Kaisers neue Kleider”: Alle sehen den Fehler, niemand traut sich, etwas zu sagen. Aus vermeintlicher Juniorigkeit und entsprechender Zurückhaltung, aus Furcht um Anerkennung oder gar Wiederbeauftragung, aus (schrägem) Ehrgeiz, das Unmögliche zu schaffen.
Fun facts: Code sollte niemals komplizierter sein als zwingend nötig. Wir sind nicht alle Facebook oder Amazon. Um eine Anwendung für ein paar Tausend Nutzer zu betreiben, braucht es meistens gar nicht viele Mittel. Außer dem Mut, für Einfachheit und kleineren Umfang einzustehen.
Es ist aber manchmal so schwer, zuzugeben, dass man etwas nicht versteht.