Accedi / Registrati Account
Jump to section

Spring su Kubernetes

Copia URL

Red Hat® OpenShift® è la piattaforma più adatta a sviluppare ed eseguire applicazioni Spring e Spring Boot native di Kubernetes.

Il framework Spring è uno dei più diffusi framework Java utilizzato per sviluppare applicazioni basate su un'architettura di microservizi distribuita. Il modello di programmazione e configurazione Spring per le applicazioni basate su Java si occupa principalmente delle attività legate all'interconnessione dei vari componenti, il che permette agli sviluppatori di dedicarsi alla logica aziendale a livello di applicazione, indipendentemente dall'ambiente di deployment. Spring Boot consente quindi un'agevole configurazione e creazione del pacchetto dell'applicazione realizzando un'applicazione eseguibile autonoma che può essere facilmente distribuita come container in Kubernetes.

Spring nativo di Kubernetes

Spring, come molti framework Java tradizionali, di per sé non "sa" di essere in esecuzione in un container su una piattaforma come Kubernetes. Il framework Spring include molti componenti che semplificano la creazione e il deployment di applicazioni distribuite, come Spring Boot, Spring Cloud, Spring Web e una serie di altri componenti per eseguire il rilevamento dei servizi, il bilanciamento del carico, il routing delle richieste e altro ancora. Con Kubernetes, molte di queste attività possono essere delegate alla piattaforma container sottostante per realizzare un'applicazione che si integri in modo più efficiente con la piattaforma su cui è in esecuzione. La creazione di app Spring utilizzando questi percorsi di codice ottimizzati è fondamentale per sfruttare le opportunità offerte dalla combinazione di Spring e Kubernetes.

Le app Spring possono fare affidamento su Kubernetes e sulle funzionalità distribuite su questo sistema per fornire i servizi cloud necessari che consentono uno sviluppo efficiente su Kubernetes. Ciò include servizi come code di messaggi, database, storage permanente, memorizzazione nella cache e molti altri.

Registro dei servizi

Le architetture di microservizi spesso includono una scalabilità dinamica dei singoli servizi, in un cloud privato, ibrido o pubblico in cui il numero e l'indirizzo degli host non possono sempre essere previsti o configurati staticamente in anticipo. In Kubernetes, la replica e la scalabilità dei servizi sono una funzionalità fondamentale. Ciò significa che il client non ha bisogno di mantenere una cache e tenere conto degli errori del registro dei servizi stesso. Ad esempio, Netflix Ribbon (spesso utilizzato con le app Spring) può essere configurato in modo dichiarativo per utilizzare Kubernetes invece di un registro dei servizi, senza modifiche al codice.

Bilanciamento del carico

Per le chiamate client ai servizi stateless nelle app Spring, l'elevata disponibilità (HA) si traduce nella necessità di cercare il servizio in un registro dei servizi e di bilanciare il carico tra le istanze disponibili. Kubernetes fornisce un unico indirizzo del servizio in cui le chiamate saranno con bilanciamento dal carico e reindirizzate a un'istanza appropriata. All'interno di un cluster Kubernetes, il nome del servizio si risolve in questo indirizzo IP del cluster e può essere utilizzato per raggiungere il servizio di bilanciamento del carico. Per le chiamate dall'esterno e per quando non è consigliabile passare attraverso il router, è possibile configurare un indirizzo IP esterno per il servizio.

Tolleranza agli errori

Il fatto che i microservizi siano sistemi altamente distribuiti implica un rischio maggiore di fallimento di una chiamata remota, poiché il numero di tali chiamate remote aumenta. Tradizionalmente, la responsabilità di implementare modelli di tolleranza agli errori come un interruttore automatico ricade sullo sviluppatore. Tuttavia, progetti come Istio che implementano una service mesh possono alleggerire questo compito e fornire un controllo operativo notevolmente maggiore sui servizi Spring in esecuzione nel cluster.

Configurazione esternalizzata

Le soluzioni di gestione della configurazione esternalizzate possono fornire un'ottima alternativa alla tipica combinazione di file di configurazione, argomenti della riga di comando e variabili di ambiente utilizzata per rendere le applicazioni più portabili e meno rigide in risposta alle modifiche esterne. Le ConfigMap di Kubernetes possono essere usate per archiviare informazioni dettagliate come singole proprietà o informazioni generiche come interi file di configurazione o blob JSON. Forniscono meccanismi per inserire nei container i dati di configurazione, mantenendo la configurazione separata ma accessibile per le app Spring utilizzando annotazioni come @ConfigProperty.

Tracciamento distribuito e metriche dell'applicazione

Nonostante offra molti vantaggi, un'architettura di microservizi può essere difficile da analizzare e correggere in caso di problemi. Ogni richiesta aziendale genera più chiamate verso e tra i singoli servizi a vari livelli. Il tracciamento distribuito collega tutte le singole chiamate di servizio e le associa a una richiesta aziendale tramite un ID generato univoco. In maggiore dettaglio, le metriche consentono alle app Spring di esporre i dati a livello di applicazione per consentire un esame approfondito della condizione di un'applicazione. Strumenti di tracciamento come Jaeger, integrati con un insieme di metriche ottenute tramite Prometheus e Grafana forniscono una solida base per il monitoraggio e la risoluzione dei problemi delle app Spring su Kubernetes.

Man mano che le applicazioni Spring si evolvono in raccolte di servizi decentralizzati, la gestione delle comunicazioni e della sicurezza tra tali servizi diventa più complessa. Red Hat OpenShift in combinazione con Red Hat Runtimes offre agli sviluppatori Spring gli strumenti, i framework e le integrazioni Kubernetes native necessari per creare e gestire le applicazioni Spring su larga scala sul container leader del settore e sulla piattaforma di cloud ibrido Kubernetes.

Red Hat OpenShift offre agli sviluppatori svariati vantaggi. Questi vantaggi includono:

L'utilizzo di Spring Boot su OpenShift offre un'esperienza di sviluppo autentica del tipo "Spring Boot su Kubernetes" per le app Spring nuove ed esistenti.

  • Supporto per la creazione di applicazioni cloud native con Spring e Spring Boot
  • Integrazione delle funzionalità di Kubernetes che sostituiscono i tradizionali servizi di supporto standalone
    • Configurazione esternalizzata: Kubernetes ConfigMap e integrazione con Spring Cloud Kubernetes
    • Individuazione dei servizi: Kubernetes Services
    • Bilanciamento del carico: Kubernetes Replication Controller
    • Riavvio automatico: Kubernetes Health Probes e integrazione con Spring Actuator
    • Metriche: Prometheus, Grafana e integrazione con Spring Cloud Sleuth
    • Tracciamento distribuito con Istio e Jaeger Tracing
  • Strumenti per sviluppatori di Red Hat OpenShift e Red Hat CodeReady Studio per strutturare rapidamente nuovi progetti Spring, accedere alle API Spring note nell'IDE preferito e distribuire su Red Hat OpenShift

Utilizza API Spring note e ottieni i vantaggi della piattaforma e dei servizi Kubernetes che le supportano in Red Hat OpenShift e Red Hat Application Services.

Sfrutta le tue competenze Spring per sviluppare app moderne utilizzando la tecnologia più recente.

Approfondisci

Apprendimento pratico

Scenario di apprendimento

Impara a sviluppare app Spring e Spring su Kubernetes e OpenShift attraverso gli scenari di apprendimento pratico proposti

Documentazione

Architettura di riferimento

Scopri come progettare app Spring distribuite su OpenShift.

Community

Open source

Scopri di più sull'approccio open source di Red Hat alla creazione e al supporto di Cloud Native Spring tramite il progetto SnowDrop.

La base Kubernetes per lo sviluppo applicativo moderno

Red Hat OpenShift

Red Hat OpenShift

Una piattaforma container che accelera il deployment delle applicazioni cloud native.

Red Hat OpenShift

Red Hat OpenShift Streams for Apache Kafka

Un servizio cloud gestito per la creazione, il deployment e la scalabilità delle app.

Red Hat Runtimes

Red Hat Runtimes

Una selezione di runtime e framework per lo sviluppo delle app cloud native.

Red Hat OpenShift

Red Hat OpenShift Data Foundation

Storage software defined per container.

Illustration - mail

Ricevi contenuti simili

Iscriviti a Red Hat Shares, la nostra newsletter gratuita.