Architettura / Struttura / Progettazione di 1 Microservizio

0

Per iniziare conosco i microservizi, il modo in cui comunicano tra loro, il flusso generale ecc.

Ora, sono abituato a lavorare con l'applicazione standard a 3 livelli per i miei backend (API - BL - DAL) e mi chiedevo quale fosse l'architettura di 1 microservizio, dato che non riesco davvero a trovare qualcosa al riguardo, o se esiste anche un modo generale per eliminare 1 servizio.

Sono sempre tentato di scrivere il mio microservizio nello stesso modo generale, 1 microservizio con un'API come punto di ingresso, un BL per la logica e un DAL per le operazioni DB, ma ho una strana sensazione con questo come costruire un "micro-ish monolite".

Quindi la mia domanda è la seguente: c'è un modo generale di progettare una MS, oppure l'architettura a 3 strati è buona per il microservizio generale?

PS: sto parlando di microservizi "aziendali" generali.

    
posta TanguyB 28.02.2018 - 11:27
fonte

1 risposta

1

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

    
risposta data 28.02.2018 - 12:17
fonte

Leggi altre domande sui tag