Panoramica
Red Hat® OpenShift® è la piattaforma più adatta a sviluppare ed eseguire app Spring e Spring Boot native di Kubernetes.
Cos'è Spring?
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.
Risorse da Red Hat
Supporto Kubernetes per gli sviluppatori Spring
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.
Ottimizzazione di Spring per 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.
Vantaggi di Red Hat OpenShift per gli sviluppatori Spring
Red Hat OpenShift offre agli sviluppatori svariati vantaggi. Questi servizi includono:
Ottimizzazione per Kubernetes e DevOps
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 su Red Hat OpenShift per strutturare rapidamente nuovi progetti Spring, accedere alle API Spring note nell'IDE preferito e distribuire su Red Hat OpenShift.
Funzionalità preintegrate nello stack
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.
- Build Red Hat di OpenJDK ottimizzata per l'esecuzione di app Java in un ambiente containerizzato
- Servizi nativi di Kubernetes tramite Red Hat Application Services che si integrano con Spring Cloud Kubernetes, Spring Security (con Red Hat SSO), Spring Caching (con Red Hat Data Grid), Spring Messaging (con Red Hat AMQ), Spring Web, Spring Data e molto altro
- Implementa modelli di integrazione enterprise comuni tra i servizi applicativi utilizzando Spring Boot e Red Hat Fuse (basato su Apache Camel)
Supporta le applicazioni moderne
Sfrutta le tue competenze Spring per sviluppare app moderne utilizzando la tecnologia più recente.
- App Spring serverless con Camel-K e Kafka
- Usa API Spring note per creare app Java container native con Quarkus
- Processi aziendali Kubernetes native con Kogito
- Adotta gli operatori Kubernetes per agevolare la creazione e il collegamento delle app Spring utilizzando le API Kubernetes tramite Halkyon
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.