Esta aplicación tiene como objetivo gestionar conferencias de un tour latinoamericano. Contamos con tres (3) microservicios:
-
Speaker: Este microservicio gestionará la información de un ponente: nombre, biografía y enlaces a redes.
-
Conference: Este microservicio gestionará las conferencias de cada una de las ciudades del tour: nombre, ciudad y año.
-
Session: Este microservicio gestionará las sesiones dentro de una conferencia: nombre, título, descripción e información del ponente y la conferencia a la que pertenece.
Conexión a Internet es requerida para poder descargar dependencias de cada uno de los microservicios y para su posterior despliegue en la nube. Por favor instalar las siguientes herramientas para poder realizar el taller:
-
Algún IDE Java (Intellij IDEA community, Eclipse, Apache Netbeans)
-
Algún JDK 8 (for example: OpenJDK, Oracle JDK, Amazon Corretto)
Una vez se han instalado las herramientas, es necesario descargar algunas imagenes de Docker y dependencias de Maven. Para ello ejecutamos los siguientes comandos:
-
docker pull elasticsearch:6.8.1
-
docker pull mongo:3.6
-
docker pull postgres:11.4
-
git clone https://github.com/EventosJEspanol/latin-america-micro-profile.git
-
cd latin-america-micro-profile
-
mvn clean package
Cada microservicio usa una motor de base de datos apropiado para su caso de uso:
PostgreSQL, también conocido como Postgres, es una base de datos relacional gratuita de código abierto que hace énfasis en la extensibilidad y el cumplimiento de estándares. Está diseñada para soportar diferentes cargas de trabajo, desde una sola máquina hasta grandes almacenes de datos o servicios web con muchos usuarios concurrentes. |
|
MongoDB es una base de datos multiplataforma orientada a Documentos. Clasificada como una base de datos NoSQL, MongoDB usa documentos estilo JSON con esquemas. MongoDB es desarrollada por MongoDB Inc. y licenciada bajo la licencia Server Side Public License. |
|
Elasticsearch es un motor de búsqueda basado en la API Lucene. Provee un motor de búsqueda de texto completo, distribuido y con capacidad de multitenencia con una interfaz web y documentos JSON sin esquema. Elasticsearch es desarrollado en Java. |
La comunidad MicroProfile (http://microprofile.io/) es una comunidad relativamente nueva dedicada a optimizar Java empresarial para arquitecturas basadas en microservicios. Su objetivo es definir una plataforma para microservicios que sea portable. Actualmente, los principales miembros de este grupo son IBM, Red Hat, Tomitribe, Payara, la comunidad Java de Londres (LJC) y SouJava. Adicionalmente, personas reconocidas en la industria también están participando.
Thorntail ofrece un enfoque innovador al empaquetar y ejecutar aplicaciones Java EE con solo lo necesario del servidor para luego ejecutarlas con un "java -jar". También es compatible con MicroProfile: https://thorntail.io/ |
|
PayaraMicro la plataforma de código abierto y ligera preferida para desplegar microservicios Java EE (Jakarta EE) contenerizados. Con menos de 70MB, PayaraMicro no requiere instalación ni configuración, así podemos construir y desplegar aplicaciones completamente funcionales en minutos: https://www.payara.fish/software/payara-server/payara-micro/ |
|
Con KumuluzEE podemos desarrollar microservicios con tecnología Java EE (Jakarta EE) y complementarlos con Node.js, Go y otros lenguajes. Podemos migrar aplicaciones Java EE existentes a microservicios y arquitectura nube-nativa (cloud-native): https://ee.kumuluz.com/ |
Primero debemos ejecutar los servicios de base de datos. Para ello usaremos Docker:
-
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.1
-
docker run -d --name mongodb-instance -p 27017:27017 mongo
-
docker run -d --name postgresql -p 5432:5432 -e POSTGRES_PASSWORD=password -e POSTGRES_DB=speaker postgres
Cuando los servicios estén en línea, el siguiente paso es ejecutar los microservicios:
-
Speaker (thorntail):
-
mvn -DskipTests clean package thorntail:package
-
java -jar -Xmx512m -Dswarm.http.port=$PORT target/speaker-thorntail.jar
-
-
Session (kumuluzee):
-
mvn -DskipTests clean package kumuluzee:repackage
-
java -jar -Xmx512m -Dkumuluzee.server.http.port=$PORT target/session.jar
-
-
Conference (Payara):
-
mvn -DskipTests clean package payara-micro:bundle
-
java -jar -Xmx512m target/conference-microbundle.jar --port $PORT
-
Platform.sh es la nueva generación de PaaS, que permite que los servicios sean gestionados por la misma plataforma usando infraestructura como código.
-
.platform/routes.yaml
: Platform.sh nos permite definir rutas. -
.platform/services.yaml
: Platform.sh nos permite definir y configurar la topología y los servicios que deseamos usar en los proyectos. -
Archivos
.platform.app.yaml
: Controlamos la aplicación y la forma en la que se construye y despliega en Platform.sh via un único archivo de configuración.