En algunas ocasiones en mi trabajo me veo obligado a crear pruebas de concepto (Proof of Concept) de algunas funcionalidades. Estas funcionalidades las pruebo en un entorno pequeño antes de integrarlas en un proyecto más complejo.

Dependiendo de lo que necesite mostrar utilizo herramientas que van desde una instancia de servidor en digital Ocean o Heroku hasta hostear archivos estáticos en GitHub pages.

Algunas de estas necesidades dependen de si es necesario tener solo el frontend, el backend con el frontend o microservicios con features específicos en diferentes instancias de NodeJS eso solo por dar algunos ejemplos.

Otra necesidad es tener listo el proyecto para probar en distintos dispositivos, esto es porque a veces los emuladores o simuladores de dispositivos móviles están limitados.

Bueno aquí viene la lista de herramientas que utilizo, para probar y mostrar features.

Digital Ocean

De que se trata?
Es un servicio que permite tener servidores virtuales privados (droplets).

Cuando usarlo?
Recomendable para proyectos monolíticos, donde tengas el backend y frontend en el mismo lugar. Tambien para microservicios ya que puedes tener varias instancias corriendo.

Ventajas:

  • Altamente configurable, puedes hacerle a tu droplet lo que quieras.
  • Puedes correr multiples proyectos con diferentes tecnologías en un solo droplet.
  • Configuraciones de tu web server y certificados SSL.
  • Configurar DNS y nombres de dominio.

Desventajas:

  • Tanta libertad de configuración lo hace lento para proyectos pequeños.
  • No es un servicio gratis, hay que pagar por el.

Heroku

De que se trata?
Heroku es una plataforma de computo en la nube el cual nos proveé de instancias llamadas dynos donde corren nuestros proyectos.

Cuando usarlo?
En proyectos monolíticos o de solo frontend.

Ventajas:

  • La CLI (command line interface) de Heroku hace que sea facil deployar cambios al proyecto.
  • Las configuraciones son simples desde el dashboard en web, puedes agregar variables de entorno.
  • Hay dynos gratis!!.

Desventajas:

  • No hay libertad para setear y configurar lo que quieras en el dyno.
  • Solo puedes tener un solo proyecto corriendo por dyno.
  • A los dynos gratis les falta poder.

Surge.sh / Vercel (antes Now.sh)

De que se trata?
Ambas herramientas son similiares, son servicios para hostear proyectos web estáticos.

Cuando usarlo?
Sirve bien para probar funcionalidades de solo frontend.

Ventajas:

  • La velocidad con la cual podemos subir un sitio web.
  • Su CLI hace posible con un solo comando hospedar archivos estaticos y obtener urls con certificado SSL (https).
  • Cero configuraciones.

Desventajas:

  • Las configuraciones son cero o minimas con lo cual la URL que te dan no es customizable.
  • URLs customizables o con nombres de dominio es solamente en versiones de paga.

Ngrok

De que se trata?
Lo que hace esta herramienta es es crear un tunel de lo que se encuentra corriendo en tu maquina desde localhost en un puerto específico y lo expone con un nombre de dominio en http y https por medio de una red NAT.

Cuando usarlo?
En lo personal yo lo uso cuando necesito testear features que funcionan en dispositivos moviles. Hay casos especificos donde en simuladores, emuladores o en navegadores de escritorio no es posible ver si esos features funcionan o no, como es en el caso de las Progressive Web Apps.

Ventajas:

  • Es super veloz.

Desventajas:

  • No se hostea el proyecto, si dejas de correr el proyecto no vez nada en las urls que te dan.
  • El tiempo en que permanece el tunel es limitado.

Bonus! Github Pages

De que se trata?
Es la manera en como github "convierte" un repositorio en un website.

Cuando usarlo?
Para proyectos solo frontend o sitios web estáticos, me ha servido bien como portafolio.

Ventajas:

  • Es rapido porque el proceso de "deployment" es directo de una rama del repositorio.
  • Es totalmente gratis.

Desventajas:

  • Solo sitios estaticos.