Le definizioni più autorevoli attualmente provengono principalmente da Pivotal e dalla Cloud Native Computing Foundation (CNCF).
1.1 Fondamentale
4 punti chiave: DevOps、持续交付、微服务、容器化。
Sei caratteristiche: 模块化(Modularity) 、可观测性(Observability)、可部署性(Deployability)、 可测试性(Testability)、可处理性(Disposability)、可替换性(Replaceability)。
Il cloud nativo è una raccolta di idee, che include sia la tecnologia (microservizi, infrastruttura agile) che la gestione (DevOps, distribuzione continua, legge di Conway, riorganizzazione, ecc.). Il cloud nativo è una raccolta di tecnologie cloud e metodi di gestione aziendale.
1.2 Controllo di qualità
La tecnologia nativa del cloud aiuta le organizzazioni a creare ed eseguire applicazioni scalabili in modo elastico in nuovi ambienti dinamici come il cloud pubblico, il cloud privato e il cloud ibrido.
Le tecnologie rappresentative del cloud nativo includono contenitori, mesh di servizi, microservizi, infrastruttura immutabile e API dichiarativa. Queste tecniche consentono di costruire sistemi ad accoppiamento libero che siano tolleranti ai guasti, facili da gestire e facili da osservare.
Combinate con un'automazione affidabile, le tecnologie native del cloud consentono agli ingegneri di apportare facilmente modifiche importanti e frequenti e prevedibili ai sistemi.
2. Caratteristiche tecniche
2.1 Architettura dei microservizi:
Il cloud nativo sostiene l'uso dell'architettura dei microservizi per creare applicazioni, suddividendo le applicazioni in più servizi piccoli, indipendenti e distribuibili in modo indipendente, ciascuno focalizzato sulla risoluzione di funzioni aziendali specifiche. Ciò migliora la scalabilità, la flessibilità e la manutenibilità delle applicazioni.
2.2 Distribuzione in contenitori:
Le applicazioni native del cloud vengono generalmente distribuite utilizzando la tecnologia container come Docker, che consente la distribuzione multipiattaforma, portabile e coerente impacchettando l'applicazione e le sue dipendenze in immagini container. La containerizzazione offre inoltre i vantaggi dell'isolamento e dell'utilizzo delle risorse, consentendo alle applicazioni di essere eseguite in modo più efficiente.
2.3 Orchestrazione dinamica e gestione automatizzata:
La nativizzazione del cloud enfatizza l'uso di strumenti e piattaforme automatizzati (come Kubernetes) per orchestrare e gestire dinamicamente le applicazioni, gestire automaticamente operazioni come la distribuzione, il ridimensionamento, gli aggiornamenti e il monitoraggio dei contenitori, migliorare la flessibilità e l'affidabilità delle applicazioni e ridurre la complessità operativa .
2.4 Scalatura elastica:
Il cloud nativo consente alle applicazioni di scalare in modo elastico in base alle condizioni di carico. Attraverso l'orchestrazione automatizzata dei contenitori e il rilevamento dei servizi, le istanze del contenitore possono essere aggiunte o rimosse dinamicamente per adattarsi ai diversi cambiamenti di carico e migliorare le prestazioni delle applicazioni e l'utilizzo delle risorse.
2.5 Consegna e implementazione continue:
La nativizzazione del cloud prevede l'uso di metodi di integrazione continua e distribuzione continua (CI/CD) per ottenere una distribuzione e una distribuzione rapida delle applicazioni. Attraverso processi automatizzati di creazione, test e distribuzione, gli aggiornamenti delle applicazioni possono essere inviati in modo rapido e affidabile all'ambiente di produzione rischio e costo temporale della pubblicazione.
Tre stack tecnologici
3.1 Containerizzazione
Motore del contenitore: Docker, ad esempio, è un motore del contenitore di applicazioni open source che confeziona le applicazioni e le relative dipendenze in immagini del contenitore standardizzate. Le immagini del contenitore possono essere eseguite in qualsiasi ambiente che supporti Docker, garantendo la coerenza delle applicazioni negli ambienti di sviluppo, test e produzione.
Runtime del contenitore: come containerd o runc, è responsabile della gestione del ciclo di vita del contenitore, inclusa la creazione, l'avvio, l'arresto, l'eliminazione del contenitore e altre operazioni, nonché l'interazione con le risorse dell'host.
Orchestrazione dei container: Kubernetes (K8s), ad esempio, è attualmente la piattaforma di orchestrazione dei container più popolare. Fornisce un potente set di API e set di strumenti per la distribuzione automatizzata dei container, la pianificazione, l'espansione e la contrazione, il bilanciamento del carico, gli aggiornamenti in sequenza e l'autoriparazione. ., rilevamento dei servizi, gestione della configurazione e altre operazioni.
3.2 Architettura dei microservizi
Microservizi: scomporre una grande applicazione monolitica in un insieme di piccoli servizi indipendenti. Ogni servizio si concentra su una singola funzione aziendale e interagisce tramite API. I microservizi collaborano tra loro attraverso meccanismi di comunicazione leggeri (come API RESTful, gRPC, ecc.), che aiutano ad aumentare la velocità di sviluppo, ridurre l'accoppiamento e migliorare la scalabilità e la tolleranza agli errori del sistema.
3.3 Comunicazione tra servizi
API RESTful: Basata sul protocollo HTTP e sui suoi diversi metodi (GET, POST, PUT, DELETE, ecc.), l'interfaccia è progettata in uno stile architettonico orientato alle risorse ed è ampiamente utilizzata nelle interazioni tra microservizi.
gRPC: Un framework RPC (Remote Procedure Call) ad alte prestazioni e di uso generale sviluppato da Google, basato sul protocollo HTTP/2 e sul protocollo di serializzazione Protocol Buffers, ed è adatto a scenari con elevati requisiti di prestazioni ed efficienza.
coda di messaggi: Come RabbitMQ, Apache Kafka, Amazon SQS, ecc., come middleware di comunicazione asincrona, utilizzato per disaccoppiare i servizi, gestire i picchi di carico e implementare un'architettura basata sugli eventi.
3.4 Rete di servizi
Tecnologia mesh di servizi: Come Istio, Linkerd, Envoy, ecc., si trovano tra i servizi. In quanto livello di infrastruttura trasparente, sono responsabili della comunicazione di rete, dell'instradamento, della sicurezza, dell'osservabilità e di altre funzioni tra i servizi. Una rete di servizi astrae la complessità della comunicazione tra servizi, eliminando la necessità per gli sviluppatori di implementare queste funzioni nel codice dell'applicazione.
3.5 Integrazione continua e distribuzione continua (CI/CD)
Strumenti CI/CD: Come Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, ecc., utilizzati per automatizzare il processo di creazione, test, confezionamento, rilascio e distribuzione dello sviluppo del software. Le pratiche CI/CD aiutano ad abbreviare i cicli di iterazione, a migliorare la qualità del software e a ridurre gli errori causati dall'intervento manuale.
3.6 Infrastruttura dichiarativa
Configurazione dichiarativa: Utilizza file di configurazione in formato YAML o JSON per descrivere lo stato di destinazione della distribuzione dell'applicazione, come i manifesti YAML di Kubernetes. Gli sviluppatori devono solo definire lo stato desiderato e il sistema gestirà automaticamente come raggiungere questo stato.
Strumenti di gestione dell'infrastruttura come codice (IaC): Come Terraform, CloudFormation, ecc., utilizzati per la gestione dell'infrastruttura su piattaforme cloud per ottenere il controllo della versione, la distribuzione automatizzata e la gestione della coerenza dell'infrastruttura.
3.7 Catena di strumenti DevOps
Aggregazione dei registri: Come ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, ecc., utilizzati per raccogliere, analizzare, archiviare, cercare, analizzare e visualizzare i dati di registro.
tenere sotto controllo: Come Prometheus, Grafana, New Relic, Dynatrace, ecc., forniscono il monitoraggio delle prestazioni del sistema e delle applicazioni.
Traccia errore: Come Sentry, Bugsnag, Rollbar, ecc., utilizzati per acquisire, analizzare e gestire eccezioni ed errori durante il runtime dell'applicazione.
Ingegneria del caos: Come Chaos Monkey, Chaos Toolkit, ecc., introducendo in modo proattivo guasti nell'ambiente di produzione per testare le prestazioni del sistema e le capacità di ripristino in condizioni anomale.
3.8 Elaborazione serverless (Serverless)
Servizio senza server: Come AWS Lambda, Google Cloud Functions, Funzioni di Azure, ecc., che consentono agli sviluppatori di scrivere ed eseguire frammenti di codice (funzioni) senza preoccuparsi del funzionamento e della manutenzione del server sottostante. Vengono eseguiti e fatturati solo su richiesta quando la funzione E 'attivato.
Quattro scenari applicativi
La tecnologia nativa del cloud ha ampie prospettive di applicazione in molti campi, inclusi ma non limitati a:
Applicazioni Internet su larga scala: crea applicazioni Internet ad alta disponibilità, ad alte prestazioni e altamente scalabili.
Attività finanziarie: fornire metodi di sviluppo e distribuzione delle applicazioni sicuri, affidabili ed efficienti per migliorare l'affidabilità e la sicurezza delle applicazioni aziendali finanziarie.
Intelligenza artificiale e Big Data: fornire metodi di sviluppo e distribuzione di applicazioni efficienti, scalabili ed elastici per applicazioni AI e Big Data.
Internet delle cose: elabora enormi quantità di dati provenienti da sensori, ottieni un'implementazione rapida e una scalabilità elastica e migliora l'affidabilità e la manutenibilità delle applicazioni Internet delle cose.
Blockchain: fornire metodi di sviluppo e distribuzione di applicazioni efficienti, scalabili ed elastici per le applicazioni blockchain.
Questo è tutto basato sul cloud nativo, grazie per aver letto!