REL 3: Come si progetta l'architettura del servizio di carico di lavoro?
Creazione di carichi di lavoro altamente scalabili e affidabili utilizzando un'architettura orientata ai servizi (SOA) o un'architettura di microservizi. L'architettura orientata ai servizi (SOA) è la pratica di rendere i componenti software riutilizzabili tramite interfacce di servizio. L'architettura dei microservizi va oltre, per rendere i componenti più piccoli e semplici.
Risorse
Amazon API Gateway: Configuring a REST API Using OpenAPI
Implementing Microservices on AWS
Microservices on AWS
Microservices - a definition of this new architectural term
Microservice Trade-Offs
Bounded Context (a central pattern in Domain-Driven Design)
Best practice:
-
Scelta del tipo di segmentazione del carico di lavoro: L'architettura monolitica deve essere evitata. Al contrario, è consigliabile scegliere tra SOA e microservizi. Quando effettui ogni scelta, bilancia i vantaggi con le complessità: ciò che è giusto per un nuovo prodotto che corre al primo lancio è diverso da ciò che necessita un carico di lavoro creato per ricalibrare le risorse dall'inizio. I vantaggi dell'utilizzo di segmenti più piccoli includono maggiore agilità, flessibilità organizzativa e scalabilità. Le complessità includono un eventuale aumento della latenza, un debug più complesso e un maggiore carico operativo
-
Creazione di servizi focalizzati su domini e funzionalità aziendali specifici: SOA crea servizi con funzioni ben delineate definite dalle esigenze aziendali. I microservizi utilizzano modelli di dominio e contesto delimitato per restringere ulteriormente questa operazione, in modo che ogni servizio esegua una sola operazione. Focalizzarsi su funzionalità specifiche consente di differenziare i requisiti di affidabilità dei diversi servizi e mirare agli investimenti in modo più specifico. Un problema aziendale conciso e l'associazione di un piccolo team a ciascun servizio facilitano il dimensionamento dell'organizzazione.
-
Fornitura di contratti di servizio per API: I contratti di servizio sono accordi documentati tra i team sull'integrazione dei servizi e includono una definizione API leggibile dal computer, limiti di velocità e aspettative di prestazioni. Una strategia di controllo delle versioni consente ai client di continuare a utilizzare l'API esistente e migrare le applicazioni all'API più recente quando sono pronte. La distribuzione può avvenire in qualsiasi momento, purché il contratto non venga violato. Il team del fornitore di servizi può utilizzare lo stack tecnologico scelto per soddisfare il contratto API. Analogamente, l'utente del servizio può utilizzare la propria tecnologia.
Piano di miglioramento
Scelta del tipo di segmentazione del carico di lavoro
- SOA e microservizi offrono segmentazione rispettivamente di dimensioni minori, preferita in quanto architettura moderna, scalabile e affidabile. Tuttavia, se hai un buon motivo per scegliere un'architettura monolitica, devi assicurarti che sia modulare e abbia la capacità di evolversi in SOA o microservizi man mano che il prodotto si dimensiona con l'adozione dell'utente.
- SOA può essere un buon compromesso per ottenere una segmentazione di dimensioni minori,
evitando al contempo alcune delle complessità dei microservizi.
Microservice Trade-Offs - Se il carico di lavoro è adatto e la tua organizzazione può supportarla, è consigliabile
utilizzare un'architettura di microservizi per ottenere la massima agilità e affidabilità.
Implementing Microservices on AWS - AWS App Mesh può essere utilizzato con architetture orientate ai servizi per fornire
rilevamento e accesso affidabili ai servizi.
What is AWS App Mesh?
Creazione di servizi focalizzati su domini e funzionalità aziendali specifici
- Esegui l'analisi di dominio per mappare una progettazione basata sul dominio (DDD,
domain-driven design) per il carico di lavoro. In seguito, puoi scegliere un tipo
di architettura per soddisfare le esigenze del carico di lavoro
How to break a Monolith into Microservices
Getting Started with DDD when Surrounded by Legacy Systems
Eric Evans “Domain-Driven Design: Tackling Complexity in the Heart of Software”
Implementing Microservices on AWS
- Definisci l'API per il carico di lavoro e i suoi obiettivi di progettazione, limiti
e qualsiasi altra considerazione per l'uso.
- Definizione dell'API.
- La definizione dell'API deve consentire la crescita e parametri aggiuntivi.
- Definizione delle disponibilità progettate.
- La tua API può avere più obiettivi di progettazione per funzioni differenti.
- Definizione di limiti
- Esegui test per definire i limiti delle tue capacità di carico di lavoro.
- Definizione dell'API.
Fornitura di contratti di servizio per API
Amazon API Gateway: Configuring a REST API Using OpenAPI
- Una strategia di controllo delle versioni consente ai client di continuare a utilizzare l'API esistente e migrare le applicazioni all'API più recente quando sono pronte.
- Amazon API Gateway è un servizio completamente gestito che semplifica agli sviluppatori la creazione delle API su qualsiasi scala. Utilizzando OpenAPI Specification (OAS), precedentemente noto come Swagger Specification, è possibile definire il contratto API e importarlo in API Gateway. Con API Gateway, puoi eseguire la versione e la distribuzione delle API.