En esta entrada vamos a ver la potencia de esta terna, ya sé que no tiene mucho que ver con el blog, pero me ha parecido interesante compartirlo ya que podemos desarrollar nuestra aplicación web basada en Sprint Boot con un frontal Angular sin mucho esfuerzo (más bien en maquetación), dockerizar esta aplicación, gestionarla desde nuestro dockerhub y publicarla en una máquina EC2 en Amazon completa, teniendo acceso a la misma.
JHipster
Os
recomiendo que echéis un ojo, me ha parecido muy completo, fácil e intuitivo de
manejar.
Podemos
integrarlo fácilmente dentro de Eclipse, montar nuestro proyecto y generar toda
la estructura básica necesaria.
Una vez que tenemos la estructura podemos añadir nuevas
entidades y gestionar las relaciones entre las mismas, podemos forzar a que se
nos construya el código básico que nos va a permitir en la parte de servicios,
toda la infraestructura en las diferentes capas: API REST, servicios, dominio
y repositorio. Dentro del front también se nos va a generar la infraestructura
en a angular.
Para ello únicamente necesitamos:
- Definir un fichero jdl con las entidades y las relaciones entre las mismas.
- Utilizar la herramienta jhipster import-jdl, que nos permitirá generar / actualizar la estructura a partir de la información del fichero (https://www.jhipster.tech/creating-an-entity/)
Un tema que no he mencionado, y me ha parecido muy interesante, es que podemos securizar la aplicación y la gestión de usuarios con múltiples tecnologías, en mi caso he añadido Oatuh2 con una autenticación de usuarios basado en un sistema externo, en mi caso he empleado el servicio de okta, donde únicamente he tenido que configurar la cuenta, y crear la configuración de usuarios y aplicación en el mismo, una vez realizado esto, podemos configurar fácilmente que las operaciones se dirijan al servicio sobre el fichero de configuración como en este ejemplo:
En cuanto al frontal, la parte de angular, fue la que he escogido en mis pruebas, muy sencilla de manejar, la estructura que crea para las entidades y los servicios, todo muy organizado, nada que objetar..
Docker
Con esto ya no solo nos queda crear el docker y correr nuestra aplicación, en la página de jhipster podemos revisar todo lo que necesario, para crear el docker y ejecutar la aplicación..
https://www.jhipster.tech/docker-compose/
Si curioseamos un poco, podemos ver que podemos levantar dockers de diversos tipos desde la solución que hemos generado, BD, Sonar, etc... muy completo, la verdad...
Nuestro objetivo era, desplegar en AWS, realmente podríamos optar por varias opciones, pero vamos a desarrollar la más simple, ejecutarlo sobre una máquina EC2, para ello que vamos a necesitar:
- Un repositorio donde podamos tener nuestra aplicación. Desde la máquina lo que haremos será conectarnos y cargar la imagen del docker y arrancarla.
- También vamos a necesitar la BD, yo en mi caso empleo un MySql que tendremos alojada en el servicio RDS de AWS.
- Crear una máquina EC2 en AWS, nos vale una de la capa gratuita.
Para el primer paso, podemos abrirnos una cuenta en docker y dentro del hub crearnos un repositorio donde vamos a impactar nuestra imagen. Hay múltiples urls donde puedes ver esto, yo por mi parte dejo una que nos puede valer.
https://ropenscilabs.github.io/r-docker-tutorial/04-Dockerhub.html
AWS
Los dos últimos pasos comprenden trabajar con AWS. La idea es tener la BD en una instancia de RDS y la aplicación web la vamos a ejecutar sobre una instancia EC2 por medio de un Docker.
Para la BD en RDS creamos una instancia MySql, aprovechamos la capa gratuita ya que esto es una pequeña PoC, creamos la instancia ya la configuramos.
Una vez creada la instancia, podremos conectarnos a la BD desde nuestro entorno favorito, yo en mi caso utilizo DBeaver, si no lo conocéis echarle un ojo, es muy potente.
Se me olvidaba, la primera vez que os conectéis la BD no va a estar creada, esto lo reservamos al arranque de la aplicación, donde por medio de la configuración y JPA vamos a conseguir que se cree la estructura de la BD y se pueble con la configuración por defecto.
Al contenedor podemos pasarle parámetros y para conseguir el efecto mencionado, debemos introducir el parámetro SPRING_JPA_HIBERNATE_DDL_AUTO=validate, de esta forma se comprobará si la BD tiene algún cambio o es nueva, aplicando los cambios que se detecten.
Para la máquina virtual nos vale una máquina de tipo t2.micro, de la capa gratuita, para ello una vez lanzada y configurada la instancia debemos hacer dos cosas:
- Instalar apache, tendremos lo necesitaremos para que haga de Proxy con respecto el contenedor docker que lancemos,
- Instalar docker, tendremos que poder lanzar nuestra aplicación paquetizada.
La instalación de apache no tiene complicación, por medio de yum y siguiendo cualquier tutorial en la web lo tendremos instalado en 3 minutos. Lo único será configurar lo para que haga de proxy sobre el puerto 80 y nos redirija al puerto 8080, que es donde vamos a configurar el contenedor para que escuche, nos basta con la siguiente configuración (tener en cuenta que estoy poniendo la url del servidor).
Para instalar Docker nos vale cualquier tutorial, hay multiples en la web. Una vez que lo tengamos instalado, vamos a logarnos en nuestro repositorio de contenedores.
Lo siguiente será hacer un pull del contenedor que queremos descargarnos y ya sólo nos quedará ejecutar el mismo.
Para ejecutarlo, nos basta con lanzar el comando señalado en verde y con esto ya podríamos acceder a a nuestra aplicación desplegada en la instancia de EC2.
Ya sólo nos queda terminar de configurar la web, para que sea más cómodo vamos usar una redirección a nivel de DNS dentro de nuestro dominio, para ello lo que vamos a hacer es redirigir la url mindundis.madridbigata.com a la url publica de la instancia EC2 en AWS ( por ahorrarnos unos €).
Ahora sólo nos queda configurar OKTA para que funcione la autenticación delegada que tenemos montada, para ello hay que dar de alta las nuevas url a nivel de la aplicación que hemos creado.
Con todo esto, si accedemos ya a la web podremos que ver que se carga sin problemas...
Y al logarnos, nos redirige a la url de OKTA donde entramos con las credenciales...
Una vez dentro, podremos navegar sobre los menús de administración como por ejemplo ver nuestros eventos:
Espero que os haya gustado, el objetivo es mostraros el proceso, no todos los detalles, si tenéis dudas os cuento como hacerlo.
Comentarios
Publicar un comentario