Ich habe nach Mikroservice-Architekturen gesucht, um einen Überblick über alle Vor- und Nachteile, wann und warum usw. zu erhalten. Viele der Informationen, die ich lese / beobachte, stammen von ThoughtWorks (Martin Fowler, Neal Ford, et al).
Die meisten Arbeiten von Martin Fowler zu diesem Thema sind einige Jahre alt, als Microservices (als bekannter Name in der Programmierung, wenn nicht in der allgemeinen Praxis) noch jung war, daher nehme ich viel davon mit einem Körnchen Salz.
Eines ist insbesondere:
Als ich Geschichten über Teams höre, die eine Microservices-Architektur verwenden, habe ich ein gemeinsames Muster festgestellt.
- Fast alle erfolgreichen Microservice-Geschichten haben mit einem Monolithen begonnen, der zu groß wurde und zerbrochen wurde
- In fast allen Fällen, in denen ich von einem System gehört habe, das von Grund auf als Microservice-System entwickelt wurde, sind ernsthafte Probleme aufgetreten.
Dieses Muster hat viele meiner Kollegen dazu veranlasst zu argumentieren, dass Sie kein neues Projekt mit Microservices starten sollten, auch wenn Sie sicher sind, dass Ihre Anwendung groß genug ist, damit es sich lohnt. .
(Ref: https://martinfowler.com/bliki/MonolithFirst.html - Hervorhebung ihrer)
Jetzt, 3 Jahre später und mit Microservices, einem allgegenwärtigeren Begriff, ist es allgemein akzeptabel, dass ein neues System in der Regel besser bedient werden kann, wenn zunächst größere (als Mikroservice-aber-kleiner-als-Monolith-) Service-Chunks vorhanden sind und hergestellt werden sie granularer als Teil einer evolutionären Maßnahme?
Oder gibt es eine Norm, ein Projekt im Gegensatz zu den obigen Aussagen mit einer granularen Microservice-Architektur von Grund auf neu zu beginnen?
Scheint ein vernünftiger allgemeiner Ansatz zu sein, aber neugierig auf die Gedanken der Community.