La web está publicada en este enlace. La información se basa en los reportes emitidos por el MINSA
Espero que me ayuden a mejorar esta idea :)
Estoy usando Github Pages para publicar el código HTML y el mapa de calor de Google Maps para mostrar la información de casos COVID-19 confirmados.
El beneficio principal de trabajar con Github Pages es que el despliegue se hace ni bien ejecute el comando git push de este repositorio. Esto no aplica para los servicios construidos.
Los servicios construidos son:
- Resumen (summary)
- Ubicaciones en el mapa (locations)
- Top 5 de regiones (topregional)
- Pruebas realizadas y casos (cases)
Para el despliegue estoy aprovechando la plataforma de Google Cloud Functions.
La información utilizada y expuesta por cada servicio, se explicará más adelante.
Este gráfico nos ayudará a entender este concepto.
Dentro de la carpeta de un servicio (por ejemplo, service/summary), puedes ejecutar el comando:
npm run local
Si todo es correcto, verás lo siguiente:
Serving function...
Function: covidSummary
URL: http://localhost:8080/
El servicio estará listo para ser consumido en la URL indicada.
Dentro de la carpeta de un servicio (por ejemplo, service/summary), puedes ejecutar el comando:
npm test
Si todo es correcto, verás lo siguiente:
✓ covidSummary: service is running!
1 passing (8ms)
La prueba unitaria del servicio fue construida usando Mocha y Sinon. El código está en la carpeta test ubicada en cada servicio.
Dentro de la carpeta del servicio, ejecuta el comando:
npm run deploy
Si estas en modo bash (o algo similar), puedes ejecutar el siguiente comando
./deploy.sh
Si todo es correcto, verás lo siguiente:
Deploying function (may take a while - up to 2 minutes)...
- Debe instalar Google Cloud SDK
- Debes configurar la web que consumirá tu servicio. Esto se hace en el archivo de configuración .env.yaml que encontrarás en la raíz de cada servicio.
Para el servicio resumen utilizo un archivo CSV
Para el resto de casos utilizo un archivo de configuración que encontrarás en la carpeta generator/data.
Para la generación de datos usados por cada servicio, el proyecto incluye una herramienta que se basa en los datos arriba mencionados. Para ver un ejemplo del código generado, puedes revisar el contenido de la carpeta data ubicado en cada servicio.
Utilicé esta técnica de automatización para no depender de una base de datos –o de una memoria caché– ya que la información cambia por lo menos cada 24 horas y de aumentar una capa adicional, la latencia del servicio aumentaría.
Por ejemplo, si queremos actualizar los datos del servicio de Pruebas realizadas, debemos:
- Revisar o actualizar la configuración definida en la sección regions/cases
- Ir a la carpeta generator y ejecutar el siguiente comando:
node build.js --file cases
(opcional)
npm run build -- --file cases
(opcional)
Si quieres generar todos los archivos:
node build.js --file all
- Si todo es correcto, encontrarás un mensaje como este:
🤖Generating cases file...
🤖Cases file has been generated 😎
- El resultado de la ejecución lo puedes encontrar en la carpeta generator/dist
- Proceder con el despliegue correspondiente
node deploy.js --file cases
(opcional)
npm run deploy -- --file cases
(opcional)
Si quieres desplegar todos los archivos:
node deploy.js --file all
(opcional)
Si quieres desplegar todos los archivos y forzar la generación:
node deploy.js --file all --generate
- Si todo es correcto, encontrarás un mensaje como este:
🤖Deploying cases file...
🤖Cases file has been deployed 😎
- El archivo estará copiado en la carpeta data del servicio correspondiente. En este caso será la carpeta service/cases/data
Si tienen algún comentario o sugerencia, pueden contactarme por medio de la sección de issues, twitter (@jersson) o el formulario de contacto en mi blog.
Un abrazo,
JD