responsabilità
Spero di non calpestare i piedi di nessuno o di offendere gli entusiasti di entrambi i concetti
Sfondo
Ho cercato reali differenze tra Service Oriented Architecture e Microservices, senza trovare alcuna risposta chiara.
Ho letto cose come:
- gli effetti collaterali di SOA
- SOA che è anti-pattern
- I microservizi sono venuti per correggere gli errori di SOA
- Gli ESB non sono realmente ESB, ma sono EAI
- Eccessiva dipendenza da Message Broker
- I venditori abusano della nozione di SOA e cercano di vendere i loro prodotti
- SOA cresce in modo incontrollabile
Tuttavia, nulla definisce chiaramente le differenze architettoniche tra Service Oriented Architecture (come concetto) e Microservices (come concetto)
Secondo quanto ho capito, entrambi hanno:
- Fornitori di servizi, facendo solo una cosa
- Gateway di servizio / ESB che espongono tali servizi ai consumatori
- Consumatore di servizi, accesso ai servizi tramite ESB / Gateway di servizio
Domanda
Quindi, c'è qualcosa di diverso dal ri-etichettare SOA in Microservices? è un vincolo tecnologico posto per limitare i microservizi a diventare macro?
Nota: non cerco opinioni, solo fatti concreti, si spera nei punti elenco
Riferimenti
- Domande di ingegneria del software
- Sito di Martin Fowler (penso che lo tocchi alla grande)
- Info world
- sito Web di Michael Fethers
- Domande di overflow dello stack
Aggiornamento
Sembra che un dibattito simile sia avvenuto in una domanda di overflow dello stack , con opinioni divise sia che i microservizi siano architetture orientate ai servizi sotto mentite spoglie.
Conclusione dalla domanda SO:
- MS è un caso speciale di SOA
- MS supporta dimensioni più piccole delle applicazioni che ospitano servizi
- MS dipende dalla tecnologia (l'uso di HTTP piuttosto che le opzioni del protocollo aperto)
- MS si affida alla tecnologia per rafforzare la disciplina (distribuzione automatica di servizi)
- MS considera gli ESB (malvagi), ma utilizza i gateway API che IMHO è un tipo di ESB
Ciò significa che MS è SOA, se è vero quanto segue:
- MS supporta la nozione di orchestrazione? Uno o più processi principali gestiscono i flussi di lavoro
- Esiste un livello di broker di messaggi in MS? Una serie di adattatori che traducono i formati dei messaggi dallo spazio dei messaggi dei produttori di servizi ai consumatori di servizi
- I microservizi possono leggere i dati da applicazioni aziendali monolitiche? Possono essere le API di un'applicazione monolitica? o deve essere autonomo in applicazioni autonome, in grado di operare in modo indipendente?
Se la risposta all'ultima domanda risultasse negativa, i microservizi non sarebbero in grado di gestire sistemi di flusso di lavoro complessi, ad es. Sistemi di gestione delle carte di credito o sistemi di riconciliazione