Per farla breve. No, non esiste un modo generale per progettare i microservizi . Microservices è uno stile architettonico che opera con un livello molto alto di astrazione. Questa risposta è estendibile a qualsiasi altro tipo di architettura. Ad esempio, potrebbero esserci monoliti che non richiedono design a 3 strati.
Quello che stai cercando si chiama adeguatezza . Se consideri che uno dei livelli citati è "eccessivo", non applicarlo. Se sia eccessivo o meno è qualcosa da guardare i requisiti e le esigenze di ogni specifico componente dell'architettura. Fortunatamente, Microservices intende offrirci la libertà nella progettazione e nello sviluppo di questi componenti poiché non condividono SDLC.
Yeah my main reason for asking this question was to make a kind of
template for microservices that I could just pop out for the business
services, but I guess that's too much of the greater good
Potrebbe essere una buona idea. In definitiva, le architetture di Microservizi sono popolate da molti servizi. Ciò non significa che saranno radicalmente diversi gli uni dagli altri. I modelli possono indicare i minimi richiesti per essere un buon cittadino del sistema. Tieni presente che potrebbero esserci diversi stack tecnologici e probabilmente dovresti fornire modelli per ciascuno di essi.
The Required Standard
When you’re working through your practices and
thinking about the trade-offs you need to make, one of the core
balances to find is how much variability to allow in your system. One
of the key ways to identify what should be constant from service to
service is to define what a well-behaved, good service looks like.
What is a “good citizen” service in your system? What capabilities
does it need to have to ensure that your system is manageable and that
one bad service doesn’t bring down the whole system? And, as with
people, what a good citizen is in one context does not reflect what it
looks like somewhere else. Nonetheless, there are some common
characteristics of well-behaved services that I think are fairly
important to observe. These are the few key areas where allowing too
much divergence can result in a pretty torrid time. As Ben Christensen
from Netflix puts it, when we think about the bigger picture, “it
needs to be a cohesive system made of many small parts with autonomous
lifecycles but all coming together.” So we need to find the balance
between optimizing for autonomy of the individual microservice without
losing sight of the bigger picture. Defining clear attributes that
each service should have is one way of being clear as to where that
balance sits.
Chapter 2. The evolutionary Architect
Building Microservices - ISBN-13: 978-1491950357
by Sam Newman