In Modul 4.5 haben Sie die Kladde auf Orleans verteilt: Angebote, Termine und Deals leben in Grains, über mehrere Silos. In diesem Modul haben Sie einen Dienst herausgelöst. Beides heißt „verteiltes System“, und beides verteilt Arbeit auf mehrere Rechner. Trotzdem beantworten die beiden Werkzeuge verschiedene Fragen. Diese letzte Lektion des Moduls legt sie nebeneinander, damit Sie für ein neues Stück der Kladde begründet sagen können: ein Grain, ein eigener Dienst, oder beides.
Zwei Antworten auf zwei Fragen
| Orleans | Microservices | |
|---|---|---|
| Die Frage | Wie verteile ich Zustand und Rechenarbeit vieler kleiner Objekte auf mehrere Rechner, ohne dass mein Code davon handelt? | Wie trenne ich Teile eines Systems so, dass Teams sie unabhängig bauen, ausliefern und betreiben? |
| Was getrennt wird | Aktivierungen auf Silos, je Objekt | Programme, Deployments, Datenbanken, Teams |
| Was gemeinsam bleibt | ein Programm, ein Deployment, ein Cluster, ein Typsystem | ein Vertrag über das Netz |
| Konsistenz | je Grain, ein Aufruf nach dem anderen | je Dienst; dazwischen Sagas und letztliche Konsistenz |
| Aufruf zwischen Teilen | ein Methodenaufruf auf einer Grain-Schnittstelle, Orleans findet das Silo | HTTP, gRPC oder eine Nachricht, mit allem aus Lektion 4.12.2 |
| Ein neues Feld im Vertrag | Grain-Schnittstellen versionieren, alle Silos rollen gemeinsam aus | Vertrag versionieren, jeder Dienst liefert für sich aus |
Ein Orleans-Cluster ist also, aus der Sicht der Teams, ein Ding: ein Programm, das sich selbst über Rechner verteilt. Die Grains darin sind fein geschnitten, aber sie werden zusammen gebaut und ausgerollt. Microservices dagegen trennen grob, aber wirklich: Zwischen zwei Diensten steht das Netz, und jeder Dienst kann eine andere Version, ein anderes Team und eine andere Technik haben.