JHipster (per Java Hipster) è un generatore di applicazioni open source, basato su Yeoman. Esso genera un'applicazione Spring Boot (che è la parte Java) e AngularJS (che è la parte hipster), con strumenti e configurazioni pre-impostate. In questo post imparerai come utilizzare JHipster per generare uno stack di microservizi affrontando problemi di progettazione come la registrazione del servizio, la configurazione e il routing lato client. Gli sviluppatori utilizzano JHipster per avviare il loro progetto molto rapidamente, con un'applicazione full-stack pronta per essere eseguita in produzione in pochi minuti: possiamo definirlo un RAD al quadrato(avvalendosi per la parte Java di Spring Boot, il quale fornisce anch'esso la funzione di Rapid Application Development).
L'applicazione generata è ricca di best practice, suggerimenti e strumenti: ad esempio include BrowserSync (per il "ricaricamento in tempo reale" lato client dell'applicazione), Spring Boot Devtools (per "ricaricare a caldo" il codice Java) e Liquibase (per migrazione automatica dello schema del database). Usati insieme in modo coerente, questi 3 strumenti rendono il flusso di lavoro di sviluppo molto più efficiente di quello che tradizionalmente sperimentano gli sviluppatori Java.
Oltre alla classica applicazione monolitica, JHipster può fornire un'architettura completa a microservizi basata sullo stack Spring Cloud costituita da tre componenti(nella sua forma più semplice):
- Service Discovery: rappresenta il registro dei microservizi e funge da hub per l'intera architettura.
- Gateway: intercetta le richieste lato client e agisce da router e load-balancer.
- Microservizio: componente software contenente la logica di business della nostra applicazione.
Il registry di JHipster si compone di un server Spring Cloud Netflix Eureka, usato per "scoprire" tutte i servizi, e di un server Spring Cloud Config che, invece, consente di gestire tutti i nodi e relativa configurazione in modo centralizzato.
Dal repository Github ufficiale del progetto JHipster, è possibile deployare su Heroku un Service registry pre-configurato semplicemente attraverso il pulsante Deploy to Heroku. Questo il link:
Il primo passo è fatto....per la generazione del microservizio, non avendo a disposizione una procedura automatizzata come per il registry, eseguiamo il comando:
yo jhipster
Il generatore ci offrirà una serie di opzioni tra le quali scegliere relativamente a base dati, cache ed altri tools opzionali che potrebbero essere utili alla vita di uno sviluppatore.
Prima di procedere al deploy del microservizio, è necessario effettuare delle piccole modifiche in modo che tutta la "giostra" funzioni correttamente ed i vari componenti riescano a comunicare tra loro.
Per prima cosa, una volta aperto il microservizio all'interno dell'IDE(sia esso Eclipse o IntelliJ Idea), modificare il file .yml disponibile in corrispondenza del percorso src/main/resources/config/application-prod.yml.
In particolare, occorre modificare il nodo eureka.instance in modo che l'hostname coincida con il nome del microservizio stesso. Fatto ciò, eseguire il seguente comando per il deploy su Heroku:
yo jhipster:heroku
Tale comando avvierà la procedura automatica di deploy: sul terminale compariranno delle domande di supporto dove, in corrispondenza della richiesta di specificare l'url del service registry, è necessario inserire l'indirizzo nella formahttp://my-jhipster-registry.herokuapp.com/
(sostituendo my-jhipster-registry
con il nome dell'app del registro stesso).
Una volta che il microservizio è deployato, è necessario creare un Gateway che possa consentirne l'accesso. Questo componente software non è altro che uno "smistatore" di richieste: sulla base di regole e path invocati, dirotta i client chiamanti verso un'applicazione piuttosto che un'altra. Per generare il gateway, creare un nuovo progetto con il consueto comando:
yo jhipster
Nella procedura guidata, selezionare "microservice gateway" come tipo di applicazione; terminato il processo, eseguire il comando
./mvnw test
per testare l'applicazione Java.
Così come fatto per il microservice, anche per deployare il gateway è necessario effettuare delle piccole modifiche: in particolare, editare nuovamente il file .yml come descritto per il microservizio in modo che il service registry sia in grado di localizzare il gateway.
Ed ora??? Come testare l'intera architettura?
Prima cosa che consiglio è di dare un' occhiata ai logo attraverso il comando:
heroku logs --tail
Per il registry, è possibile visualizzare la dashboard attraverso l'indirizzo http://my-jhipster-registry.herokuapp.com/ e le credenziali admin/admin. Se tutto è configurato correttamente, dovreste vedere sia il microservizio che il gateway tra le applicazioni registrate e potrete raggiungerli via browser semplicemente selezionandoli.
Comments
Post a Comment