Cómo implementar una aplicación de nodo y una base de datos en Heroku

Heroku es una plataforma como servicio (PaaS) totalmente administrada y basada en la nube para crear, ejecutar y administrar aplicaciones. La plataforma es flexible y está diseñada con soporte DX para usted y el estilo de desarrollo preferido de su equipo y para ayudarlo a mantenerse enfocado y productivo.

Desarrolladores, equipos y empresas de todos los tamaños utilizan Heroku para implementar, administrar y escalar aplicaciones. Ya sea que esté creando un prototipo simple o un producto crítico para el negocio, la plataforma completamente administrada de Heroku le brinda el camino más simple para entregar aplicaciones rápidamente.

Con características como Heroku Runtime, Heroku Postgres (SQL), Heroku Redis, complementos, clips de datos, métricas de aplicaciones, contenedores inteligentes, soporte de nivel empresarial, integración de GitHub y mucho más, Heroku brinda a los desarrolladores la libertad de enfocarse en su producto principal sin la distracción de mantener servidores, hardware o infraestructura.

Una de las características principales de Heroku es implementar, administrar y escalar aplicaciones con sus lenguajes favoritos [Node, Ruby, Python, Java, PHP, Go y más].

En este artículo, le mostraré cómo tomar una aplicación Node.js existente e implementarla en Heroku, desde crear su cuenta Heroku hasta agregar una base de datos a su aplicación implementada.

Prerrequisitos

En mi artículo anterior, escribí sobre "Creación de un SlackBot con Node.js y SlackBots.js" y prometí escribir un artículo de seguimiento para mostrar cómo alojar el SlackBot en Heroku, Zeit o Netlify y publicarlo en el Tienda de Slack Apps. Bueno, este es el artículo de seguimiento pero sin la parte "Publicar en aplicaciones de Slack". Cubriremos eso en otro artículo.

Supongo que ya tiene / sabe lo siguiente:

  • Lee mi artículo anterior
  • Construyó el inspireNuggets SlackBot
  • Git, Node y npm instalados
  • Una cuenta gratuita de Heroku
  • Heroku CLI instalado

Prima

Si no tiene npm, Node y Heroku CLI instalados o una cuenta de Heroku ya, aquí hay un bono rápido [Sí, de nada :)].

Instalación de npm y Node

  • Node.js es un tiempo de ejecución de JavaScript construido en el motor de JavaScript V8 de Chrome.
  • npm es el administrador de paquetes de Node.js. Un proyecto de código abierto creado para ayudar a los desarrolladores de JavaScript a compartir fácilmente módulos de código empaquetados.

Simplemente puede descargar Node.js aquí. No se preocupe, npm viene con Node.js, por lo que hacer esto instala ambos ✨

Crear una cuenta gratuita de Heroku

Por favor diríjase aquí y complete el formulario de registro. Es bastante simple.

Instalación de Heroku CLI

La interfaz de línea de comandos de Heroku (CLI) facilita la creación y administración de sus aplicaciones de Heroku directamente desde el terminal. Es una parte esencial del uso de Heroku. [Bueno, puede decidir usar la función de integración de GitHub y el Panel de Heroku, pero sí, debe aprender a usar la CLI]

Heroku CLI requiere Git, el popular sistema de control de versiones. Si aún no tiene Git instalado, escribí este artículo para ayudarlo.

Heroku CLI para Mac OS

brew tap heroku/brew && brew install heroku 

o descargue el instalador.

Heroku CLI para Ubuntu

sudo snap install --classic heroku 

Heroku CLI para Windows

Descargue el instalador para 64 bits o 32 bits.

Otros métodos de instalación

Por favor lee esto.

Empezando con Heroku CLI

  • Verifica tu instalación
heroku --version 

heroku / 7.30.1 linux-x64 nodo-v11.14.0

  • Inicie sesión en su cuenta de Heroku

Hay dos maneras de hacer esto:

  • Autenticación basada en web
heroku login 

Siga las instrucciones e inicie sesión a través de su navegador web y luego regrese a su terminal.

  • Autenticación CLI

Esta es una opción más segura, ya que guarda su dirección de correo electrónico y un token de API ~/.netrcpara uso futuro.

heroku login -i 

Implementar su aplicación Node.js

Supongo que ya ha creado el SlackBot. Si no lo ha hecho, clone el proyecto terminado.

El proyecto es un Slackbot simple que muestra citas y bromas de técnicos inspiradores al azar para desarrolladores / diseñadores.

git clone //github.com/BolajiAyodeji/inspireNuggetsSlackBot.git && cd inspireNuggetsSlackBot 

Ahora implementemos nuestra aplicación en Heroku. Te mostraré dos formas de hacer esto:

Implementar a través de Heroku Git

Esto se hace a través de la CLI de Heroku.

☑️ Lista de verificación
  • Especifique la versión de Node.js que se utilizará para ejecutar su aplicación en Heroku en su package.jsonarchivo.
"engines": { "node": "10.16.0" }, 
  • Especifique su guión de inicio.

    Simplemente cree un Procfile(sin ninguna extensión de archivo) y agregue

web: node index.js 

Heroku primero busca este Procfile. Si no se encuentra ninguno, Heroku intentará iniciar un proceso web predeterminado a través del script de inicio en su package.json.

  • Inicie su aplicación localmente usando el comando local heroku para asegurarse de que todo funcione bien
heroku local web 

Su aplicación ahora debería estar ejecutándose en // localhost: 5000.

  • No te olvides de .gitignore
/node_modules .DS_Store /*.env 
? Desplieguemos

Cómo funciona esto es que ya tienes el proyecto funcionando en local y ya lo has enviado a GitHub.

  • correr heroku create

Básicamente, este comando crea una nueva aplicación Heroku para usted con un dominio generado aleatoriamente y agrega Heroku a su repositorio local de Git.

  • Ahora corre git push heroku master

Este es el comando mágico, envía su aplicación a Heroku, la instala allí y la inicia en su dominio asignado.

En el ejemplo anterior, es //lit-cove-58897.herokuapp.com/

Siempre puede realizar cambios en la configuración y los dominios de su aplicación en su Panel de Heroku

  • Ahora visite su aplicación en su navegador
heroku open 
  • También puede ver información sobre su aplicación en ejecución mediante uno de los comandos de registro. Esto es muy útil para depurar errores.
heroku logs --tail 

Implementar a través de la integración de GitHub

Puede configurar la integración de GitHub en la pestaña Implementar de aplicaciones en el Panel de Heroku.

☑️ Lista de verificación
  • Todas las listas de verificación anteriores se aplican aquí: asegúrese de tener la aplicación implementada en GitHub
? Desplieguemos

El funcionamiento de este método es enviar todo el proyecto a GitHub y luego integrarlo en Heroku. Cada vez que presiona, se implementa desde GitHub a Heroku. Bastante bien, ¿verdad?

  • Inicie sesión en su Panel de Heroku y cree una nueva aplicación
  • Seleccione el nombre y la región de su aplicación

Ahora su aplicación se ha creado correctamente

  • Haga clic en la pestaña de implementación y desplácese hasta la sección Método de implementación
  • Haga clic en el botón Conectar a GitHub
  • Ahora tiene la sección Conectarse a GitHub , busque el repositorio e impleméntelo.
  • Ahora su aplicación se implementó correctamente

Despliegues automáticos

Ahora su aplicación está implementada, pero tendrá que seguir implementándola manualmente. Debe habilitar las implementaciones automáticas para una rama de GitHub, por lo que Heroku compila e implementa todos los empujes en esa rama.

  • Desplácese hasta la sección Implementaciones automáticas

Seleccione la rama que desea implementar. Idealmente, esta debería ser la masterrama pero cámbiela según sus preferencias.

Ahora, cada envío a master(o la rama que elija) implementará una nueva versión de esta aplicación.

Paquete de compilación de Node.js

En Heroku, Buildpacks son scripts que se ejecutan cuando se implementa su aplicación. Se utilizan para instalar dependencias para su aplicación y configurar su entorno.

Después de implementar su aplicación, asegúrese de agregar un paquete de compilación Node.js a su proyecto.

  • Vaya a Configuración y desplácese hasta la sección Buildpack
  • Haga clic en el botón Agregar paquete de compilación y seleccione Node.js en el modal emergente.
  • Ahora, la nueva configuración del paquete de compilación se utilizará la próxima vez que se implemente esta aplicación. Realice algunos cambios en su aplicación y envíela a GitHub; se implementará automáticamente.

Agregar una base de datos a su aplicación implementada '

El mercado de complementos de Heroku tiene una gran cantidad de almacenes de datos, desde proveedores de Redis y MongoDB hasta Postgres y MySQL.

Heroku proporciona tres servicios de datos administrados a todos los clientes en forma de complementos:

  • Heroku Postgres
  • Heroku Redis
  • Apache Kafka en Heroku

Escribir sobre estos tres hará que este artículo sea demasiado largo. Es bastante simple y agregaré algunos enlaces a Heroku Docs.

  • Documentos de Heroku Postgresql
  • Documentos de Heroku Redis
  • Apache Kafka en Heroku Docs

Conclusión

A cada cuenta de Heroku se le asigna un grupo de horas dinámicas gratuitas. Los dynos Heroku (gratuitos) son excelentes para alojar aplicaciones y proyectos personales. Sin embargo, la desventaja es que su aplicación se quedará dormida si no recibe tráfico web en 30 minutos :(.

Puede utilizar herramientas externas para hacer ping a su servidor periódicamente para que nunca se quede dormido.

A continuación, se incluyen algunos para considerar:

  • Pingmydyno
  • Heroku auto ping
  • Wakemydyno
  • Cafeína
Heroku está meticulosamente diseñado para ayudar a los desarrolladores a ser lo más productivos posible. La plataforma elimina obstáculos frustrantes y tareas mundanas, para que pueda mantenerse libre de distracciones en su flujo de desarrollo. Dondequiera que se encuentre en el camino de aprendizaje, Heroku lo ayuda a amar aún más el desarrollo de aplicaciones. - Heroku

La experiencia Heroku brinda servicios, herramientas, flujos de trabajo y soporte políglota, todo diseñado para mejorar la productividad del desarrollador. Hay más en el uso de Heroku y espero que explores más y construyas cosas increíbles con Heroku.

Si eres estudiante, regístrate en el Paquete de desarrollador para estudiantes de GitHub para obtener un Hobby Dyno gratis por hasta dos años.

El paquete brinda a los estudiantes acceso gratuito a las mejores herramientas de desarrollo en un solo lugar para que pueda aprender con la práctica.