Red Hat Quarkus è uno stack Java Kubernetes nativo pensato per applicazioni serverless e per la realizzazione di microservizi rapidi ed ottimizzati. Si tratta di una piattaforma pensata per accedere in ambiente Cloud fornendo un framework orientato ai microservizi, come ad esempio Spring Boot o Micronaut, che si distingua rispetto allo stato dell'arte in questo ambito per una serie di caratteristiche che andremo a illustrare in questo articolo.
Supersonic, Subatomic
Dal punto di vista delle prestazioni, la possibilità di generare pacchetti applicativi per il deploy di dimensioni ridotte (Subatomic) e avere fasi di deploy estremamente più rapide (Supersonic) rispetto a molti altri framework per microservizi, rende Quarkus particolarmente attraente. Con Quarkus siamo in grado di:
- avviare velocemente applicazioni per avere uno scaling applicativo rapido all'interno di un container Docker.
- Minimizzare l'occupazione di memoria.
- Avere scenari di deploy prevedibili.
Native Image Support
Generare codice nativo partendo da sorgenti Java permette di evitare la fase d'interpretazione della JRE nell'esecuzione di una normale applicazione fornendo un'autentica accelerazione con un consumo limitato di risorse. Questa caratteristica integrata in Quarkus consente la generazione di immagini native partendo da applicazioni scritte in Java.
Serverless e Container-Friendly
Il deploy serverless è un tipo di deploy applicativo fornito solo in ambiente Cloud. Si tratta essenzialmente di un modello di deployment offerto da Cloud provider dove non ci si preoccupa dell'application server che ospiterà il microservizio, tutto ciò che si deve fare è fornire un adeguato pacchetto applicativo (WAR, JAR...). In questo contesto Quarkus è stato progettato per avere come punto di rifierimento Kubernetes.
Con il supporto per la compilazione nativa attraverso GraalVM, Quarkus consente di avere:
- unità di deployment di ridotte dimensioni.
- Meno quantità di memoria richiesta.
- Tempo di avvio veloce.
Tali fattori sono di vitale importanza se si sta operando in un ambiente a container o serverless, in questo caso infatti desideriamo avere applicazioni che utilizzino Docker, che abbiano un avvio rapido e che occupino una quantità di memoria ragionevole.
Hot Reload
La produttività nello sviluppo è un altro aspetto centrale di Quarkus. La capacità di hot reloading consente agli sviluppatori di verificare le modifiche apportate al codice in modo rapido ed efficiente. Non si deve quindi attendere una fase di deploy che sottrae tempo prezioso o addirittura riavvire il server in alcuni casi estremi.
Questa caratteristica si estende anche ai file di configurazione, è possibile infatti modificare un file maven pom.xml
in un progetto in esecuzione e ottenere nuove librerie senza dover riavviare l'applicazione.
Robust Framework Support
Quarkus fornisce il supporto per diversi framework. Possiamo ad esempio utilizzare:
- Java EE.
- Microprofile.
- Apache Camel.
- Spring Framework.
Reactive SQL
La programmazione Reactive è caratterizzata da uno stile responsive, flow-driven e orientato ai messaggi nell'ambito della gestione dei dati. Possiamo ad esempio operare sul risultato di una query considerandolo come streaming di dati, processandolo anche in modalità asincrona in un modello orientato ai messaggi, piuttosto che iterare sul risultato un record alla volta.
Questo tipologia di programmazione è disponibile in Quarkus è sarà oggetto di uno dei prossimi articoli.