Condividi tramite


Riepilogo: Progettazione di app native del cloud

Suggerimento

Questo contenuto è un estratto dell'eBook, Progettazione di applicazioni .NET native del cloud per Azure, disponibile in .NET Docs o come PDF scaricabile gratuitamente che può essere letto offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Di seguito sono riportate importanti conclusioni di questa guida:

  • Il cloud nativo riguarda la progettazione di applicazioni moderne che abbracciano cambiamenti rapidi, su larga scala e resilienza, in ambienti moderni e dinamici, ad esempio cloud pubblici, privati e ibridi.

  • La Cloud Native Computing Foundation (CNF) è un influente consorzio open source di oltre 300 grandi società. È responsabile dell'adozione dell'elaborazione nativa del cloud tra stack tecnologici e cloud.

  • Le linee guida di CNFC consigliano che le applicazioni native del cloud abbraccino sei pilastri importanti, come illustrato nella figura 11-1:

    Cloud-native foundational pillars

    Figura 11-1. Pilastri fondamentali nativi del cloud

  • Questi pilastri nativi del cloud includono:

    • Il cloud e il relativo modello di servizio sottostante
    • Principi di progettazione moderni
    • Microservizi
    • Containerizzazione e orchestrazione dei contenitori
    • Servizi di backup basati sul cloud, ad esempio database e broker di messaggi
    • Automazione, tra cui infrastruttura come codice e distribuzione del codice
  • Kubernetes è l'ambiente di hosting preferito per la maggior parte delle applicazioni native del cloud. I servizi più piccoli e semplici sono talvolta ospitati in piattaforme serverless, ad esempio Funzioni di Azure. Tra molte funzionalità di automazione chiave, entrambi gli ambienti offrono scalabilità automatica per gestire volumi di carico di lavoro fluttuanti.

  • La comunicazione del servizio diventa una decisione di progettazione significativa quando si crea un'applicazione nativa del cloud. Le applicazioni in genere espongono un gateway API per gestire la comunicazione client front-end. I microservizi back-end si sforzano quindi di comunicare tra loro implementando modelli di comunicazione asincroni, quando possibile.

  • gRPC è un framework moderno ad alte prestazioni che evolve il protocollo RPC (Age-Old Remote Procedure Call). Le applicazioni native del cloud spesso abbracciano gRPC per semplificare la messaggistica tra i servizi back-end. gRPC usa HTTP/2 per il protocollo di trasporto. Può essere fino a 8 volte più veloce della serializzazione JSON con dimensioni del messaggio inferiori del 60-80%. gRPC è open source e gestito dalla Cloud Native Computing Foundation (CNF).

  • Dati distribuiti è un modello spesso implementato dalle applicazioni native del cloud. Le applicazioni separano le funzionalità aziendali in microservizi di piccole dimensioni indipendenti. Ogni microservizio incapsula le proprie dipendenze, i dati e lo stato. Il modello di database condiviso classico si evolve in uno dei numerosi database più piccoli, ognuno dei quali è allineato a un microservizio. Quando il fumo si cancella, emerge una progettazione che espone un modello database-per-microservice.

  • I Database No-SQL fanno riferimento ad archivi dati non relazionali ad alte prestazioni. Sono eccellenti nelle caratteristiche di facilità d'uso, scalabilità, resilienza e disponibilità. Servizi con volumi elevati che richiedono tempi di risposta secondari favoriscono gli archivi dati NoSQL. La proliferazione di tecnologie NoSQL per sistemi nativi del cloud distribuiti non può essere superata.

  • NewSQL è una tecnologia di database emergente che combina la scalabilità distribuita di NoSQL e le garanzie ACID di un database relazionale. I database NewSQL sono destinati a sistemi aziendali che devono elaborare volumi elevati di dati, in ambienti distribuiti, con conformità transazionale/ACID completa. Cloud Native Computing Foundation (CNF) include diversi progetti di database NewSQL.

  • La resilienza è la capacità del sistema di reagire agli errori e di rimanere funzionante. I sistemi nativi del cloud adottano un’architettura distribuita in cui gli errori sono inevitabili. Le applicazioni devono essere costruite per rispondere in modo elegante agli errori e tornare rapidamente a uno stato completamente funzionante.

  • I mesh di servizi sono un livello di infrastruttura configurabile con funzionalità predefinite per gestire la comunicazione del servizio e altre sfide trasversali. Separano le responsabilità trasversali dal codice aziendale. Queste responsabilità si spostano in un proxy di servizio. Denominato Sidecar pattern, il proxy viene distribuito in un processo separato per fornire l'isolamento dal codice aziendale.

  • L’osservabilità è una considerazione fondamentale nella progettazione per le applicazioni native del cloud. Man mano che i servizi vengono distribuiti in un cluster di nodi, la registrazione centralizzata, il monitoraggio e gli avvisi diventano obbligatori. Monitoraggio di Azure è una raccolta di strumenti basati sul cloud progettati per offrire visibilità sullo stato del sistema.

  • L’infrastruttura come codice è una pratica ampiamente accettata che automatizza il provisioning della piattaforma. L'infrastruttura e le distribuzioni sono automatizzate, coerenti e ripetibili. Strumenti come Azure Resource Manager, Terraform e l'interfaccia della riga di comando di Azure consentono di creare uno script dichiarativo dell'infrastruttura cloud necessaria.

  • L’automazione del codice è un requisito per le applicazioni native del cloud. I sistemi CI/CD moderni consentono di soddisfare questo principio. Forniscono passaggi di compilazione e distribuzione separati che consentono di garantire codice coerente e qualitativo. La fase di compilazione trasforma il codice in un artefatto binario. La fase di rilascio preleva l'artefatto binario, applica la configurazione dell'ambiente esterno e la distribuisce in un ambiente specificato. Azure DevOps e GitHub sono ambienti DevOps completi.