Giter Club home page Giter Club logo

hubble-dasboard's Introduction

HUBBLE

Descripción

Integra datos estadísticos provinientes de aplicaciones de Ciclo de Vida, como por ejemplo: BSM, AppPulse, PPM, ALM, RUM, ServiceNow.


Índice

  1. Ambientes
  2. Proyectos
  3. Code Coverage

Ambientes

Configuración de ambientes DEV para pruebas locales y luego explicación de ejecución de pruebas en ambientes de TEST.

DEV (Instalación)

Configuraciones

Docker

Para ejecutar la aplicación desde contenedores se requiere declarar las siguientes variables de ambiente:

  1. HUBBLE_FRONTEND_NAME: Nombre de la imágen.
  2. HUBBLE_FRONTEND: Nombre del contenedor.
  3. HUBBLE_FRONTEND_PORT: Número de puerto por ejemplo "80:8080".
  4. HUBBLE_MONGODB: Nombre del contenedor de mongo. Por convención es mongodb-nombre-rama
  5. HUBBLE_MONGODB_VOL: Dirección de dónde se mapean los datos. Por ejemplo: /data/mongodb-nombre-rama/:/data/db/
  6. HUBBLE_TASKRUNNER: Nombre del contenedor.
  7. HUBBLE_TASKRUNNER_NAME: Nombre de la imágen.

Los archivos Dockerfile se encuentran en:

  1. /hubble/hubble.backend.tasksrunner/src/main/resources/docker/Dockerfile
  2. /hubble/hubble.frontend.web/src/main/resources/docker/Dockerfile

Desde la ubicación del Dockerfile ejecutar:

  1. /hubble/hubble.backend.tasksrunner/src/main/resources/docker$ docker build .

  2. /hubble/hubble.frontend.web/src/main/resources/docker$ docker build .

Un ejemplo customizado de docker-compose.yml:

version: '3.0'

services:
   hubble-app:
       image: hubble/hubble.frontend.web
       container_name: hubble
       ports:
           - 8080
       hostname: hubble
       links:
           - mongodb:mongo

   mongodb:
       image: mongo
       container_name: mongodb
       ports:
           - 27017
       hostname: mongodb
       volumes:
           - /data/db/

   hubble-taskrunner:
       image: hubble/hubble.backend.tasksrunner
       container_name: hubble-taskrunner
       hostname: hubble-taskrunner
       stdin_open: true
       tty: true
       links:
           - mongodb:mongo
Linux

$ export HUBBLE_FRONTEND_NAME="localhost:5000/hubble/hubble.frontend.web"

Por último, se ejecuta el docker-compose que armoniza los contenedores en línea.

$ docker-compose up -d

Para ver el log, de algún contenedor simplemente escribir el siguiente comando en la terminal.

$ docker logs <Nombre de Contenedor>

Para detener los contenedores se escribe en la terminal el comando

$ docker-compose down

MongoDB

Los datos obtenidos por los proveedores se guardan en la base de datos de Mongo. El nombre de la base de datos actualmente se llama hubble-test. No se necesitan datos para correr la aplicación, desde que se inicia tomara los datos para las siguientes aplicaciones:

  1. applicationStorage
  2. availabilityStorage
  3. issueStorage
  4. workItemStorage
$ docker run --name=mongo -v /data/mongodb:/data/db --detach -p 27017:27017 mongo
# para acceder al shell
$ sudo docker exec -it -u root mongo /bin/bash

La base de datos también se puede correr de manera local mientras esté conectado al puerto: 27017.

Ejecución de Backend.Tasksrunner

Alternativamente, se puede ejecutar el TasksRunner de maner de poder ir consumiendo datos en la base datos de MongoDB a medida de desarrollo en forma local.

$ cd hubble.backend.tasksrunner\target
$ mvn exec:java -Dexec.mainClass="hubble.backend.tasksrunner.application.TasksRunnerApplication" -Dmaven.test.skip=true

TEST

Para crear el ambiente de TEST de una rama específica se utiliza el Job de Jenkins: Hubble-MultiBranch-TEST

El Job se encarga de ejecutar un proceso en el que primero baja las fuentes de la rama, compila sin las pruebas, crea las imagenes de docker de la aplicación y luego las levanta. El Front-End va a usar un puerto aleatorio que esté disponible. A excepción de la rama dev que sí va a usar el puerto 80. La imagen de mongo que se utiliza es la misma, es decir, sí no está creada con el nombre: mongodb-branch-name, éste proceso la crea. Apuntando al volúmen de datos: /data/mongodb-nombre-rama/

El número de versionado para la rama TEST: NUMERO_BUILD.NOMBRE_DE_LA_RAMA

Proyectos

Convenciones Generales

  • No permitir espacios en blanco al final de cada línea.
  • No dejar comentarios innecesarios.
  • El nombre de los métodos tiene que tener TOTAL significado y concordancia con lo que hace.
  • Respetar los principios de desarrollo SOLID
  • Para el lenguaje JAVA respetar las siguientes convenciones: http://www.literateprogramming.com/javaconv.pdf
  • Verificar que las pruebas corran en todos los proyectos.
  • Pruebas de integración deben contemplar casos diversos de complejidad ciclomática.Link
  • Buena actitud de equipo.

Backend

  1. TasksRunner
  2. Providers
  3. Services
  4. Storage

Proyecto Backend Storage


Convenciones

Usamos el prefijo find para los métodos que devuelven y obtienen datos. Para los que guardan datos usamos el prefijo save.

Proyecto Backend Services


Convenciones

Usamos el prefijo get para obtener datos, ya que es el standard para las comunicaciones HTTP. Y usamos set para guardar los datos.

Front-End

  1. Business
  2. Web

Business

El proyecto frontend.business contiene los modelos que conforman el negocio llamado business. El paquete de Business contiene la lógica de negocio que crea la vista del usuario, o sea, hace de la parte controladora de la vista. El paquete Views guarda las estructuras de los datos con los cuales se rellena la vista (html) que está en el proyecto frontend.web.


Code Coverage

El servidor de integración continua, Jenkins, corre el programa Jacoco (http://www.eclemma.org/jacoco/) para evaluar la cobertura del desarrollo de Hubble. Se requiere una mínima cobertura del 20% para que el maven permita compilarlo con satisfacción.

hubble-dasboard's People

Contributors

ismatim avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.