Redundanter Code, der mit Micro-Frontends über die Pipe gesendet wird

12

Mein Verständnis von Micro-Frontends ist, dass das Hauptproblem darin besteht, Unternehmen zu helfen, mehrere, möglicherweise unterschiedliche Teams zu haben und an einzelnen Komponenten / kleinen Apps zu arbeiten, die zum Erstellen einer großen Webanwendung verwendet werden.

Hier ist das Hauptproblem, das gelöst werden muss, die Fähigkeit mehrerer Teams, unabhängig zu arbeiten und dennoch einen großen Verbund zu bilden. Das Problem besteht NICHT darin , ein Lean-Release-Bundle für den Endbenutzer bereitzustellen . Ist das richtig verstanden?

Stimmt es, dass bei Verwendung mehrerer kleiner Apps zum Erstellen einer großen Webanwendung möglicherweise mehrere kleine Apps dieselbe Javascript-Bibliothek ( z. B. Lodash ) an die Browser der Endbenutzer senden einzelne Anbieter-Bundles, die dazu führen, dass doppelter / redundanter Code an den Benutzer gesendet wird?

Ist dies nicht ein Anliegen, über das wir uns beim Entwickeln der Front-End-Anwendung Gedanken machen sollten?

Kiran
quelle
2
Ich denke, es ist absolut ein Problem, das Sie berücksichtigen müssen. Leider habe ich keine Ahnung, wie die Leute so vorgehen. Gute Frage!
RubberDuck

Antworten:

12

Sie haben absolut Recht, dass hier ein Kompromiss besteht: Sie handeln mit einigen Aspekten der Benutzererfahrung, um eine bessere Entwicklererfahrung zu erzielen (was wiederum die Benutzererfahrung auf unterschiedliche Weise verbessern kann). Lohnt sich das? Es hängt davon ab, ob.

Ich denke, Spotify verwendet diesen Ansatz, um die Benutzeroberfläche in isolierte Komponenten ( Quelle ) aufzuteilen . Jedes Widget befindet sich in einem iframe und kann daher über eigene Bibliotheken usw. verfügen. Sie unterliegen der einzigartigen organisatorischen Einschränkung, dass die Arbeit von autonomen Trupps (einem funktionsübergreifenden Team) ausgeführt wird. Dies erschwert es, unternehmensweite Standards zu vereinbaren und diese später zu ändern. Micro-Frontends helfen ihnen also, etwas Flexibilität zu bewahren. Aber ohne diesen Ansatz wäre ihre Desktop-App vielleicht weniger ein Gedächtnisschwein.

HTTP-Caching wird nicht viel helfen: Jedes Micro-Frontend verwendet möglicherweise unterschiedliche Framework-Versionen. Darüber hinaus sind die Kosten für die Duplizierung nicht nur die Datenübertragung, sondern auch die clientseitigen Kosten für die (Neu-) Kompilierung der Bibliotheken und die Speicherung duplizierter Datenstrukturen.

Persönlich denke ich, dass solche Mikro-Frontends eine gültige Architektur sein können, aber wahrscheinlich nicht ratsam sind, es sei denn

  • Sie sind eine sehr große Organisation mit sehr autonomen Teams, die alle an der Benutzeroberfläche arbeiten und sehr häufige Releases (z. B. täglich) durchführen müssen
  • In Ihrem UX-Leistungsbudget ist Platz für diese Duplizierung, oder Ihr Produkt ist so gut, dass UX keine Rolle spielt. Beachten Sie, dass die Leistung auf Low-End-Geräten und nicht auf Ihrem Entwicklungscomputer getestet werden sollte.

Wenn Ihre Organisation nicht sehr groß ist oder wenn Ihre Teams etwas spezialisierter sind, ist es für alle Beteiligten (Management, Entwickler und letztendlich Benutzer) möglicherweise einfacher, einen gemeinsamen Erstellungs- und Bereitstellungsprozess durchzuführen, der unnötige Doppelarbeit vermeidet. Wenn Sie beispielsweise nur 4 Teams an der Benutzeroberfläche haben, können diese wahrscheinlich miteinander sprechen, um eine gemeinsame Reihe von Bibliotheken zu vereinbaren und ihre Arbeit in eine zusammenhängende Architektur zu integrieren.

Micro-Frontends scheinen eines dieser Dinge zu sein, die wirklich cool sind, die man aber erst benötigt, wenn man in einem Maßstab operiert.

amon
quelle
3
Die Entscheidung für eine einzelne Framework-Version in Ihrer gesamten Anwendung ist wahrscheinlich die Mühe wert.
Robert Harvey