Ich denke die Frage ist falsch.
Alle Startups, an denen ich teilgenommen habe, hatten keine FE-BE-Architektur.
Die meisten Startups, die ich kenne, haben:
- Kern - das eigentliche Produkt, das eine Schnittstelle verfügbar macht
- UI - BE und FE. Die BE verwendet die API des Core.
APIs sind zustandslos und leicht zu verspotten - auch ohne die Notwendigkeit eines Core-Entwicklers. Zur Hölle, wenn ich ein Projekt von Grund auf neu starten müsste, könnte ich mit einer ganzen Benutzeroberfläche beginnen, die nur mit Mocks funktioniert - was sich hervorragend für Präsentationen eignet. Das meiste Feedback kommt von der Benutzeroberfläche. Kunden bemerken, dass mehr - (hängt von Ihrer Zielgruppe ab.)
Zum Beispiel: Die Google-Suche enthält die Core-Komponente, mit der das Web durchsucht, indiziert usw. wird. Die Google-Benutzeroberfläche ist eine völlig andere Welt. Dieser Core unterstützt problemlos Suchvorgänge außerhalb des WWW, die Benutzeroberfläche jedoch nicht.
Auf diese Weise ist Ihre Benutzeroberfläche "steckbar" und Sie haben Trennung von Bedenken.
Sie sprachen von Entwicklungswissen, übersehen jedoch Aspekte des Projektmanagements. Während das Kernteam möglicherweise eine Sprintdauer von 2 Wochen benötigt, verwendet das UI-Team CI - alles wird die ganze Zeit hochgeladen. Das Kernteam benötigt Abwärtskompatibilität, die Benutzeroberfläche jedoch nicht.
Die Sprache ist unterschiedlich. Sie werden wahrscheinlich C-Entwickler für die Core-Komponente benötigen - und Sie werden in Ordnung sein, wenn sie auf einem einzelnen Betriebssystem ausgeführt wird, wobei die Benutzeroberfläche in einer Cross-OS-Sprache geschrieben wird.
Tests unterscheiden sich. Die UI-Testwelt ist eine der komplexesten, die ich in der Softwareentwicklung kenne. Die meisten Startups vernachlässigen dies und bereuen diese Entscheidung später. Sie können BE und FE beim Testen nicht trennen. Es muss eine Einheit sein, die damit umgeht.
Open Source-Benutzeroberfläche - einer der größten Vorteile der Trennung der beiden ist, dass Sie Ihre Benutzeroberfläche als Open Source-Benutzeroberfläche öffnen können. UI-Projekte benötigen Open Source-Unterstützung.
Ich kann mir keinen Benutzeroberflächenentwickler vorstellen, der die gesamte session
Funktion nicht verstehen kann . Sie wissen, wo Sie sich einloggen und zwischen verschiedenen Anfragen eingeloggt bleiben. Zwar kennen sie PHP und nicht Java. Das BE-Konzept sollte jedoch klar sein (z. B. ein verschlüsseltes Cookie verwenden). Die spezifische Sprachbarriere ist falsch - jeder Entwickler sollte bereit sein, in jeder Sprache zu arbeiten. Wer hätte gedacht, dass sie vor ein paar Jahren BE in JavaScript schreiben würden?
Wenn Sie weiterhin drei Teams haben: Core, BE und FE, ist dies imho eine Verschwendung von Ressourcen. Was ist mit DB? sollten Sie DBAs haben? Warum sollte ein BE-Entwickler DB und ein FE-Entwickler BE und DB nicht kennen? Es gibt keine Grenzen.
Wenn Sie Experten benötigen, funktioniert das Outsourcing ziemlich gut. Sie liefern normalerweise Qualitätscode und das ziemlich schnell. Sie möchten sie nicht unbedingt im Haus haben, weil Sie verloren gehen, wenn sie gehen. Außerdem können Sie sich heute online beraten lassen. Neueste Produkte erfordern möglicherweise einen anderen Ansatz.
Das Ergebnis ist also im Grunde ein sehr dünnes BE in der Benutzeroberfläche, das jeder FE-Entwickler entwickeln kann. Wenn Sie eine starke BE in der Benutzeroberfläche haben, verfügen Sie höchstwahrscheinlich über einige API-Funktionen, die im Core erforderlich sind.
Es gibt immer mindestens einen Entwickler, der sich vom Rest abhebt. Angesichts einer derart dünnen FE kann er / sie es schaffen, andere Entwickler im BE-Code zu unterstützen (nicht zu entwickeln). Meiner Meinung nach ist dieser Entwickler in einer sehr guten Position und sollte angemessen ausgezeichnet werden (allerdings nicht im Gehalt, etwas anderes). Ich vertraue auch darauf, dass sie in der Lage sind, den Erstellungsprozess zu handhaben und ordnungsgemäß zu erstellen.
Dieses Modell bietet Ihnen eine große Flexibilität bei der Entwicklung von BE. Die Welt von BE hat in den letzten Jahren einige Umkehrungen erlebt, daher empfehle ich, sich sowieso nicht zu sehr auf die Stabilität von BE zu verlassen. Kern ist eine andere Geschichte.
Es bleibt die Frage - sollten FE und BE dasselbe Projekt sein ? Sie sollten Folgendes beachten
- Statische Ressourcen werden am besten vom Front-Server aus bedient. Da Front-End-Server (z. B. nginx) sehr leistungsfähig sind und Sie Cache für statische Ressourcen verwenden können, können Sie Ihre statischen Ressourcen mit einer einzigen Bereitstellung verwalten (dies sollten alle HTML-Inhalte, JS, CSS und Images sein).
- Der Back-End-Code hat nicht den gleichen Luxus, daher müssen Sie über ein verteiltes System verfügen, das auch von einem Front-Server verwaltet wird.
- FE-Code sollte unbedingt mit allen neuen Technologien, die JavaScript unterstützen, wiederverwendet werden. Sie können jetzt Desktop- und Mobilanwendungen mit JavaScript schreiben.
- Der Erstellungsprozess ist völlig anders - und das kann sogar die Bereitstellung von Patches, das Upgrade, die Installation usw. umfassen.
Ich kann weitermachen, aber ich hoffe, es ist klar, dass BE und FE dasselbe Team sein sollten, aber vielleicht unterschiedliche Projekte.
if you have a startup, don't assign roles. Better hope that you assembled a good self organizing team. If everybody knows each other, everybody knows who does what the best.