Cómo hacer deploy de una aplicación MeteorJS en AWS via waveshosting.com en 2018

Jean Boudeguer

02-10-2018

02-10-2018

02-10-2018

Tecnología

Tecnología

Tecnología

Tecnología

Post recientes

Post recientes

Post recientes

Cómo hacer deploy de una aplicación MeteorJS en AWS via waveshosting.com en 2018

Me topé con waveshosting.com por casualidad en los digest de los foros de meteor.com. Y como cada vez que hay un deployer nuevo, me dan ganas de ver si se puede hacer más fácil que mi método actual. Y me fue muy bien!

Hasta ahora estaba haciendo deploy en AWS con Meteor-Up y sus versiones siguientes (actualmente con un plugin para AWS llamado mup-aws-bean). También probé Galaxy (pero lo encuentro un poco caro) y el último que probé fue Zeit (que tampoco me gustó, tiene una interfaz compleja y no tenía scaling en el momento que lo probé).

Y llegué a WavesHosting

Descripción de la imagen

WavesHosting encapsula el deploy de una aplicación MeteorJS y todas sus configuraciones particulares en AWS (Elastic Beankstalk + S3) para hacerlo fácil.

No guarda código, archivos de configuración o variables de entorno. Guarda las credenciales del usuario IAM para agregar la información que entregas a través de sus interfaces, donde deba ir en AWS. Y por eso además encuentro que tiene un muy buen precio. 29 USD / mes por un número ilimitado de servidores o deploys.

Vamos al grano…

Asumamos que ya tienes una cuenta en AWS y otra en WavesHosting.com. Te recomiendo usar 2FA en ambas cuentas.

Lo primero que tienes que hacer es crear un usuario IAM en AWS con las siguientes instrucciones. Estas credenciales le permiten a Waves escribir las configuraciones necesarias para hacer el deploy a través de la API de AWS.

Luego debes ir a Settings y agregar las credenciales

Descripción de la imagen

Luego, a través del terminal, instala el CLI de Waves (si no tienes yarn instálalo aquí):

yarn global add waves-cli

Y luego haces login con tu usuario.

waves login

Ya tienes todo el setup listo para poder comenzar.

Vamos a crear una app. Elige un nombre, usa las credenciales que creaste en IAM, elige una región (US-East North Virgina == us-east-1) y la plataforma será Meteor.

Descripción de la imagen

Esto le dará la instrucción a AWS de crear el ambiente en Beanstalk y S3 con estas características. Se va a demorar algunos minutos…

En la sección de configuración puedes agregar el settings.json (copia el contenido del archivo), la URL de mongo y el ROOT_URL (que está como The public URL of our app). Agrega como custom variable la URL del enviador de mail.

Descripción de la imagen

Después de que deja de pensar… haces deploy a través del terminal.

cd /www/tu-aplicacionwaves deploy tu-aplicacion

Si llegaras a tener dos ambientes con el mismo código, pero con dos archivos de configuración diferentes (por ejemplo una aplicación de producción y otra de staging), puedes crear una aplicación con diferentes variables de entorno.

Primero ejecutas este comando

waves deploy tu-aplicacion

Luego creas los entornos producción y staging y luego ejecutas es siguiente comando (variables de entorno separados por ,):

waves deploy tu-aplicacion --env production,stagingBuilding app...
Node version: 8.11.4
NPM version: 6.3.0
App built
Build prepared
Uploaded version v6
Deployment of version v6 in tu-aplicacion#production started correctly
Deployment of version v6 in tu-aplicacion#demo started correctly

Eso subirá el código a dos ambientes diferentes con archivos de configuración distintos (que debes configurar en Waves como mostré anteriormente).

Descripción de la imagen

Si llega a pasar algo inesperado, puedes revisar los logs. Específicamente el nodejs/nodejs. Ojo que los logs debes activarlos explícitamente y puede tener costos asociados en AWS.

Descripción de la imagen

Routing

En tu DNS (Route53 en nuestro caso), apuntas la URL de tu dominio a la URL que aparece en Configuration.

Type A, alias Yes, y pegas el CNAME.

Descripción de la imagen

Autoscaling

Bajo la opción Servers puedes configurar, entre otras cosas, el auto escalamiento. Elige cuántas instancias mínimas quieres tener (mínimo 1, no 0) y las condiciones en las cuales va a escalar. En el ejemplo escalará para arriba si la CPU está por sobre 50% y bajará si es menor a 30%.

Descripción de la imagen

Costo de instancias

Otra funcionalidad útil es saber el costo de cada servidor sin tener que ir a buscarlo cada vez que escalas verticalmente. Si vas a Instance Types podrás elegir el tipo de máquina que quieres y ver cuánto te costará mensualmente.

Descripción de la imagen

Y creo que eso sería todo.

Dudas o preguntas

Si tienes alguna pregunta puedes hacerla via el chat, todo el sitio está en inglés pero el desarrollador detrás es chileno así que podrás conversar en español sin problemas.

¿Qué cosas podría mejorar?

A la fecha de este artículo (28/09/2018) no tenía la posibilidad de hacer un equipo. Es decir, compartir la responsabilidad del deploy con más personas.

Y sería muy cool poder conectarlo con GitHub u otro repositorio para poder hacer deploys via pull request.

#Suscríbete a nuestro newletter

No te quedes fuera

Comienza la transformación digital hoy

Con más de 8 años de experiencia, Clay es la fintech que necesitas para llevar las finanzas de tu empresa al siguiente nivel.

Visualizando las finanzas de la empresa desde el celular o móbil

Comienza la transformación digital hoy

Con más de 8 años de experiencia, Clay es la fintech que necesitas para llevar las finanzas de tu empresa al siguiente nivel.

Visualizando las finanzas de la empresa desde el celular o móbil

Comienza la transformación digital hoy

Con más de 8 años de experiencia, Clay es la fintech que necesitas para llevar las finanzas de tu empresa al siguiente nivel.

Visualizando las finanzas de la empresa desde el celular o móbil

Comienza la transformación
digital hoy

Con más de 8 años de experiencia, Clay es la fintech que necesitas para llevar las finanzas de tu empresa al siguiente nivel.

Visualizando las finanzas de la empresa desde el celular o móbil