Lektion 4.11.2 hat gefragt, wann sich ein eigener Dienst lohnt, und eine Antwort war: wenn ein eigenes Team ihn besitzt. Lektion 4.11.5 hat mit Backends for Frontends ein Muster gezeigt, das jeder Oberfläche ihr eigenes Backend gibt. Beides teilt das System hinter der Oberfläche. Die Oberfläche selbst bleibt oft ein einziges Programm, an dem alle Teams arbeiten, und wird dann zum letzten gemeinsamen Engpass. Micro-Frontends übertragen den Gedanken der Microservices auf die Oberfläche: Jedes Team besitzt seinen Teil der Seiten, vom Backend bis zum Bildschirm.
Diese Lektion ist bewusst kurz, denn für die Kladde lautet die Antwort am Ende: nicht nötig. Sie lernen trotzdem, wie es geht und was es kostet, weil Sie in größeren Häusern auf solche Oberflächen treffen und dann wissen sollten, welche Fragen zu stellen sind. Gebaut wird die billigste Form, die .NET mitbringt: eine Seite aus zwei Razor Class Libraries zweier „Teams“, zusammengesetzt beim Build. Das geschieht in einem Übungsordner oder einem Zweig, der nicht in die Kladde kommt.
Warum Teams auch die Oberfläche teilen wollen
Conways Gesetz aus Lektion 4.2.5 sagt, dass ein System die Struktur der Organisation nachbildet, die es baut. Haben drei Teams je einen Dienst, aber eine gemeinsame Webanwendung, ist die Webanwendung der Ort, an dem sie sich abstimmen müssen:
- Jede Änderung an einer Seite wartet auf das nächste gemeinsame Deploy. Team Termine kann seinen Dienst jeden Tag ausliefern, seine Seite aber nur, wenn die Webanwendung als Ganzes ausgeliefert wird.
- Ein Fehler eines Teams hält alle auf. Ein roter Test in der Webanwendung blockiert auch die Pull Requests der anderen.
- Die Webanwendung kennt alle Fachlichkeiten. Sie ruft alle Dienste, also braucht sie Wissen über alle, und das ist genau die Kopplung, die die Dienste vermeiden sollten.
Ein Micro-Frontend schneidet die Oberfläche deshalb entlang derselben Grenzen wie die Dienste: Team Termine besitzt die Seiten und Teile von Seiten, die Termine zeigen, Team Ausschreibungen die seinen. Eine Seite, auf der beides erscheint, wird zusammengesetzt. Die Frage ist, wo.