Los contenedores, los microservicios y NoSQL proporcionan un trío impresionante para crear aplicaciones modernas. Estas aplicaciones deben ser ágiles, satisfacer las demandas de los clientes en constante evolución, ser omnipresentes y funcionar en plataformas móviles, web e IoT.

Este blog explicará una sencilla pila de microservicios utilizando Enjambre WildFly, Dockery Couchbase. El código completo y las instrucciones de este blog están documentados en: github.com/arun-gupta/wildfly-swarm-couchbase.

Entendamos primero los componentes clave de esta pila.

wildfly-swarm-logoEnjambre WildFly permite empaquetar y ejecutar aplicaciones JavaEE empaquetándolas con lo justo del tiempo de ejecución del servidor para java -jar su aplicación. Con el descubrimiento de servicios integrado, inicio de sesión único con Keycloak, supervisión mediante Hawkulary muchas más características, WildFly Swarm proporciona todos los componentes necesarios para desarrollar su microservicio.

docker-for-mac

Docker para Mac proporciona soporte nativo para ejecutar contenedores Docker en Mac OSX. Se basa en Hipervisor.framework en OSX. El motor Docker se ejecuta en una distribución Linux Alpine sobre un xhyve Máquina Virtual, e incluso la VM es gestionada por Docker. No hay necesidad de Docker Machine o VirtualBox, y se integra con el modelo sandbox de seguridad de OSX. DockerCon 2016 eliminó la restricción de beta privada de Docker para Mac, por lo que ya está disponible para todo el mundo. Couchbase Logo

NoSQL ofrece la agilidad y flexibilidad de las bases de datos sin esquema. Esto permite que la aplicación evolucione de forma independiente y rápida sin pasar por engorrosas migraciones de bases de datos. Couchbase ofrece un verdadero escalado horizontal con arquitectura homogéneaa diferencia de la arquitectura maestro/esclavo no escalable. También ofrece auto-sharding, Lenguaje de consulta tipo SQL para JSON (N1QL), base de datos móvil y sincronización con el servidor backend, y mucho más. La aplicación de ejemplo completa en este blog está en: github.com/arun-gupta/wildfly-swarm-couchbase.

Aplicación WildFly Swarm

Veamos el punto final REST de Java EE:

Utiliza la anotación JAX-RS estándar para convertir un POJO en un endpoint REST. API Java de Couchbase proporcionan una API fluida y utilizan la sentencia N1QL para consultar los documentos y devolver los resultados. La sentencia N1QL devuelve los 10 primeros elementos del resultado de la consulta. Aprenda más sobre la sintaxis N1QL en este tutorial interactivo. La abstracción de la base de datos se define como:

Se trata de un EJB singleton que se inicializa por anticipado. Utiliza SDK Java de Couchbase para conectarse a Couchbase. El punto final de la base de datos se puede especificar utilizando el parámetro COUCHBASE_URI variable de entorno. El siguiente paso es pom.xml para configurar WildFly Swarm y Cliente Java de Couchbase:

Utiliza la "lista de materiales" de WildFly Swarm para extraer todas las dependencias. Sólo las dependencias específicas necesarias para la compilación se especifican en . A continuación, se empaquetan en el "fat jar". El plugin Maven de WildFly Swarm se utiliza para empaquetar y ejecutar la aplicación:

COUCHBASE_URI se utiliza para leer el host donde se ejecuta el servidor de base de datos Couchbase.

Ejecutar Couchbase Server

Ejecute el servidor Couchbase utilizando Docker para Mac:

En arungupta/couchbase se basa en el imagen estándar de Couchbase y utiliza API REST de Couchbase para configurar el servidor. Espere un par de minutos a que el bucket de muestra se rellene con los documentos JSON. Ejecute la aplicación Herramienta CLI de Couchbase cbq crear un índice primario en el bucket de muestra:

Esto mostrará la salida como:

Esta salida muestra que el resultado de la creación del índice fue exitoso. Una de las ventajas de ejecutar Docker para Mac es que todos los contenedores son accesibles en localhost. Es decir Consola web de Couchbase puede consultarse en localhost:8091. couchbase-web-console-docker-mac-wildfly-swarm-microsoervice

Esta pantalla asegura que Couchbase está configurado correctamente.

Ejecutar el microservicio WildFly Swarm

Empaqueta y ejecuta el microservicio autónomo como:

Si Couchbase se está ejecutando en un host diferente, entonces el comando cambiará a:

Muestra la salida como:

Ahora se puede acceder a la aplicación como:

Y una salida formateada tiene este aspecto:

Así que has construido un microservicio simple usando WildFly Swarm accediendo a una base de datos Couchbase ejecutándose como un contenedor Docker. Ahora, idealmente este servicio WildFly Swarm debería ser empaquetado como una imagen Docker y luego esa imagen Docker serviría como el servicio. Un perfil de Maven con el nombre docker ya se ha añadido a pom.xml pero número #3 está haciendo fracasar ese escenario.

Referencias de microservicios

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

Dejar una respuesta