Microsserviços
Arquitetura
Backend
API
Escalabilidade
Mobile

Microservizi nelle applicazioni: architettura distribuita per dispositivi mobili

Microservizi nelle applicazioni: architettura distribuita per dispositivi mobili

I microservizi dividono il sistema in piccoli servizi indipendenti. Per le app mobili, ciò significa API scalabili e in evoluzione. Questa guida illustra come implementare e utilizzare i microservizi per le applicazioni.

Cosa sono i microservizi

Definizione

Architettura in cui l'applicazione è composta da servizi piccoli e indipendenti.

Caratteristiche

  • Indipendenza di distribuzione
  • Unico responsabile del dominio
  • Comunicazione tramite rete
  • Può avere tecnologie diverse

Differenza monolitica

Monolite: tutti insieme. Microservizi: separati per responsabilità.

Vantaggi

Scalabilità indipendente

Ogni servizio è scalabile in base alla domanda.

Distribuzione indipendente

L'aggiornamento di uno non influisce sugli altri.

Resilienza

Fallirne uno non distrugge tutto.

Tecnologie multiple

Utilizza lo strumento migliore per ogni lavoro.

Squadre indipendenti

Proprietà chiara, meno dipendenze.

Svantaggi

Complessità operativa

Più parti da gestire.

Latenza di rete

La comunicazione tra i servizi aggiunge latenza.

Debug difficile

Tieni traccia dei problemi tra i servizi.

Coerenza dei dati

Le transazioni distribuite sono complesse.

In alto

Per i sistemi piccoli, potrebbe essere eccessivo.

Quando usarlo

Buono per

  • Grandi squadre
  • Domini complessi
  • Necessità di scala indipendente
  • Evoluzioni frequenti

Evita

  • Piccole squadre
  • MVP
  • Domini semplici

Decomposizione

Per dominio

Contesti DDD limitati.

Per funzionalità

Autenticazione, pagamenti, catalogo, ecc.

Per caso d'uso

Flussi di utenti indipendenti.

Gateway API

Funzione

Punto di ingresso unico per i clienti.

Responsabilità

Routing, autenticazione, limitazione della velocità, aggregazione.

Strumenti

Kong, Gateway API AWS, Nginx.

BFF (Backend per Frontend)

Concetto

Gateway specifico per il tipo di client.

Utilizzo

BFF per dispositivi mobili, un altro per il web.

Vantaggi

Ottimizzato per ogni cliente.

Comunicazione

Sincrono

RESTO, gRPC. Richiesta/risposta.

Asincrono

Code di messaggi. Eventi.

Compromessi

Il sistema sincrono è semplice, il sistema asincrono è resiliente.

Scoperta del servizio

Problema

Come si trovano i servizi?

Soluzioni

Console, Kubernetes DNS, AWS Cloud Map.

Osservabilità

Registrazione

Log centralizzati con ID di correlazione.

Tracciamento

Tracciamento distribuito con Jaeger, X-Ray.

Metriche

Per servizio e aggregato.

##Resilienza

Interruttore automatico

Interrompere la chiamata al servizio non riuscito.

Riprova

Riprovare con il backoff.

Tempo scaduto

Non aspettare per sempre.

###Paratia

Isolare le risorse.

Gestione dei dati

Database per servizio

Ogni servizio con la sua banca.

Coerenza finale

Transazioni distribuite evitate.

Eventi

Comunicare i cambiamenti tramite eventi.

Saghe

Transazioni lunghe tramite compensazione.

Distribuzione

Contenitori

Docker per incapsulare i servizi.

Orchestrazione

Kubernetes da gestire.

###CI/CD

Conduttura per servizio.

Blu-Verde/Canarino

Distribuzioni sicure.

Per dispositivi mobili

API ottimizzata

Meno chiamate, dati aggregati.

Conserva

Caching CDN e API.

###Non in linea

Resilienza quando la rete fallisce.

Controllo delle versioni

API con versione per compatibilità.

Test

###Unità

Per il servizio.

Integrazione

Comunicazione tra servizi.

###Contratto

Consumatore e fornitore concordano il contratto.

Dall'inizio alla fine

Flussi completi attraverso i servizi.

Migrazione

Motivo Strangolatore

Sostituisce gradualmente monolite.

Inizia in piccolo

Inizia con un servizio.

###Estrai

Identificare domini ben definiti.

Errori comuni

Distribuzione prematura

Microservizi prima che tu ne abbia bisogno.

Nanoservizi

Servizi troppo piccoli.

Nessuna osservabilità

Impossibile eseguire il debug.

Ignora latenza

Più chiamate di rete.

Conclusione

I microservizi offrono scalabilità e flessibilità, ma con complessità. Valuta se necessario per il tuo contesto, investi in osservabilità e opera con disciplina. Per le app mobili, concentrati su API ottimizzate e resilienza.

##Domande frequenti

1) Ho bisogno di Kubernetes per microservizi? Non necessariamente. Ma aiuta molto su larga scala.

2) Quanti servizi sono troppi? Non esiste un numero magico. Se la squadra non riesce a gestirlo, è troppo.

3) Il cellulare deve chiamare direttamente microservizi? Generalmente no. Utilizza API Gateway o BFF.

4) I microservizi sono sempre migliori? No. Un monolite ben fatto può essere migliore in molti casi.

5) Come iniziare con microservizi? Inizia monolite modulare. Estrarre quando necessario.

Leggi anche