sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo implementar MongoDB en Heroku

MongoDB Atlas es fácil y gratuito de configurar e implementar MongoDB en Heroku. MongoDB Atlas se conoce comúnmente como la plataforma de aplicaciones de datos de múltiples nubes. Es un servicio integrado de datos y base de datos en la nube que simplifica y acelera la forma en que los usuarios construyen con datos.

Cuando comienza a crear aplicaciones nativas de la nube más complejas, seleccionar las herramientas y los servicios adecuados tiende a ser bastante abrumador. Sin embargo, ese no es el caso al elegir el mejor servicio de base de datos en la nube, ya que MongoDB Atlas es su mejor solución.

Por otro lado, Heroku es una plataforma como servicio (PaaS) que brinda a los desarrolladores la capacidad de ejecutar, crear, manipular y operar aplicaciones en la nube. Heroku es compatible con una multitud de lenguajes de programación.

Esta guía de artículos ilustrará cómo implementar MongoDB en Heroku. Usaremos la versión MongoDB Atlas ya que se integra fácilmente con la mayoría de las aplicaciones de Heroku. Este proceso puede parecer complejo al principio, pero te darás cuenta de que nada es complicado cuando te sumerjas profundamente en él. Todo lo que necesita es configurar su cadena de conexión de clúster de MongoDB Atlas en una variable de configuración conocida de Heroku, y está listo para comenzar.

La edición Atlas es un servicio de MongoDB en la nube completamente administrado que automatiza la administración de clústeres de MongoDB en la nube. Ofrece a los usuarios escalado automático, copias de seguridad automatizadas, administración completa de conjuntos, herramientas analíticas y una falla de tolerancia multi-AZ. MongoDB Atlas se encuentra entre los DBaaS más sofisticados.

Siga los pasos proporcionados aquí para aprender cómo poner en marcha MongoDB y ejecutarlo rápidamente. También podrá ver cómo conectar el clúster de MongoDB Atlas a las aplicaciones de Heroku siguiendo la guía detallada que se proporciona en este artículo.

Cómo implementar MongoDB en Heroku

Esta guía de artículos asume que tiene los siguientes requisitos previos:

  1. Conoce bien MongoDB y ha escrito aplicaciones MongoDB
  2. Está familiarizado con Heroku y ha implementado aplicaciones de Heroku antes
  3. Ha instalado la CLI de Heroku
  4. Conoces Git y lo has instalado.

Con los requisitos previos mencionados, aprendamos más sobre el tema tratado anteriormente.

Configurar MongoDB Atlas Cluster

Primero, veremos cómo configurar MongoDB Atlas Cluster en menos de cinco pasos.

Paso 1:Creación de una cuenta de MongoDB Atlas

Nota: Si ya ha creado una cuenta MongoDB con su dirección de correo electrónico, omita el proceso de registro e inicie sesión en su cuenta.

Registrarse para obtener una nueva cuenta de MongoDB Atlas es muy fácil. Puede optar por utilizar su dirección de correo electrónico o su cuenta de Google para registrarse.

El proceso es totalmente gratuito; por lo tanto, no tiene que preocuparse por incurrir en cargos adicionales.

Siga este enlace para registrarse para obtener una cuenta de MongoDB Atlas de forma gratuita. Simplemente complete sus datos y haga clic en el botón "Comenzar gratis" para obtener su cuenta gratuita de Atlas.

Una vez que tenga una cuenta de Atlas, continúe con el siguiente paso

Paso 2:Creación de su proyecto y organización

MongoDB Atlas, de forma predeterminada, le pedirá que cree una organización y un proyecto después de completar el proceso de registro. Complete rápidamente los detalles requeridos para completar este proceso y pasar al siguiente paso. La organización y el proyecto se utilizarán para implementar su clúster en el futuro.

Paso 3:implementar el clúster

En esta fase, seleccionará un clúster de varias opciones de clúster. Por el bien de esta guía de artículo, utilizaremos la opción "Cluster compartido", que es la opción de clúster gratuita proporcionada por MongoDB Atlas. Debajo de la opción "Clúster compartido", haga clic en "Crear".

Se le pedirá que seleccione algunas opciones para su clúster en la página siguiente, como se destaca a continuación:

Proveedor de nube y región

Aquí debe elegir dónde se implementará su clúster. Es esencial seleccionar una región más cercana a su aplicación. Idealmente, debe seleccionar una región constante para minimizar los problemas relacionados con la latencia. Usaremos esta Región, “N. Virginia (us-east-1)”, con AWS como nuestro proveedor de nube de origen para esta guía. Seleccionamos AWS como nuestro proveedor de la nube, ya que realizaremos la implementación en Heroku y alojaremos su infraestructura en AWS.

Nivel de clúster

En esta subsección, verá los niveles de clúster disponibles para la opción de clúster que elegimos, en este caso, las opciones de clúster compartidas. Aquí, verá una comparación de RAM, almacenamiento, niveles, precio base y vCPU. Estas comparaciones lo ayudarán a seleccionar el nivel adecuado para su proyecto. Lo dejaremos en el nivel predeterminado "M0 Sandbox" para esta guía.

Configuración adicional

Esta sección depende del nivel que elija. Es posible que obtenga algunas configuraciones adicionales según el nivel que seleccione. Estas configuraciones incluirán opciones de copia de seguridad y versiones de MongoDB que se implementarán. Seleccione MongoDB versión 4.4 y deje la opción de copia de seguridad desactivada.

Nombre del clúster

Esta es la última opción. Aquí ayudaría si nombrara su clúster. Llamaré a nuestro grupo "Leafix". Recuerda que no podrás cambiarlo una vez que hayas creado el clúster.

Nota:Se recomienda revisar las opciones seleccionadas y realizar los cambios necesarios antes de crear el clúster mediante el botón "Crear clúster".

Paso 4:Cree un usuario de base de datos para su clúster recién creado

MongoDB Atlas requiere que los clientes se autentiquen como usuarios de la base de datos MongoDB para acceder a los clústeres. Siga los pasos proporcionados para crear un usuario de base de datos para su clúster.

  • Navegue a la sección "Acceso a la base de datos". Se encuentra debajo de la pestaña "Seguridad" en el lado izquierdo.
  • Haga clic en la opción "Agregar un nuevo usuario de la base de datos".
  • Aparecerá un aviso. Ingrese su método de autenticación y los privilegios de usuario de la base de datos
  • Utilice la "Contraseña" como método de autenticación y proporcione la contraseña y el nombre de usuario.

Nota: Se recomienda encarecidamente generar automáticamente una contraseña segura de Atlas para evitar complicaciones relacionadas con la inseguridad. Una vez que haya generado automáticamente la contraseña, cópiela y guárdela en un lugar conveniente para recuperarla fácilmente en el futuro. Este paso es vital ya que necesitaremos la contraseña mientras nos conectamos al clúster.

  • Otorgue al usuario la mayor cantidad de privilegios seleccionando la opción "Administrador de Atlas".
  • Una vez que haya terminado, haga clic en "Agregar usuario" para crear un usuario de base de datos.

Paso 5:otorgar acceso al clúster de direcciones IP autorizadas

Este es el paso final al configurar el clúster de MongoDB Atlas. En este apartado elegiremos las direcciones IP que nos permiten acceder al clúster Atlas. Para otorgar la autorización, siga los pasos mencionados aquí:

  1. En "Seguridad", seleccione "Acceso a la red".
  2. Luego, seleccione "Agregar dirección IP".
  3. Seleccione "Permitir acceso desde cualquier lugar" y haga clic en el botón "Confirmar" para completar el proceso.

Eso es todo. Ha configurado correctamente su clúster de MongoDB Atlas.

Nota :no desea permitir este tipo de acceso a la dirección IP en un entorno de producción debido a problemas de seguridad. Debe identificar la dirección IP exacta para su aplicación y establecer explícitamente el rango de direcciones IP. Este proceso está diseñado para mejorar la seguridad de su clúster.

Conectándose a su Clúster

Para conectarse a su clúster recién creado, siga esta guía:

  1. En la sección "Almacenamiento de datos" en la barra de navegación de la izquierda, haga clic en "Clusters".
  2. Haga clic en la pestaña "Conectar".
  3. Elija su versión de controlador, luego copie solo la cadena de conexión

Una vez que haya terminado, actualice la cadena de conexión. Nuevamente, no se olvide de agregar su nombre de usuario y contraseña.

Crear una cuenta de Heroku

Crear una cuenta de Heroku es muy fácil. Primero, visite el sitio web oficial de Heroku y regístrese como lo hicimos nosotros para MongoDB Atlas. Después de completar su cuenta de Heroku, continúe e instale la CLI de Heroku.

Instalar CLI de Heroku

Es vital asegurarse de tener Git instalado en su sistema operativo Linux, ya que la CLI de Heroku requiere Git. Git es un popular sistema de control de versiones comúnmente utilizado por la mayoría de los desarrolladores. Instalar Git es muy fácil. Abre tu terminal y ejecuta el siguiente comando:

sudo apt-get install git-all

Salida:

Ese comando instalará Git en su sistema operativo Linux. Después de eso, ejecute este otro comando para instalar Heroku en su sistema operativo Linux:

sudo snap install --classic heroku

Salida:

Dale tiempo a la terminal para ejecutar el comando e instalar Heroku por completo.

Inicie sesión y cree una nueva aplicación en el sitio web de Heroku

Creemos que ha estado siguiendo de cerca el artículo y ha creado una cuenta de Heroku. Si es así, abra su Tablero de Heroku. Ingrese los detalles que utilizó para crear su cuenta de Heroku para iniciar sesión en su tablero. Una vez que haya iniciado sesión, continúe con el siguiente paso para crear una nueva aplicación:

  1. Navega a heroku.com/apps
  2. Seleccione Nuevo>Crear nueva aplicación>Elija Región>Crear aplicación.
  3. Tenga paciencia mientras se crea la aplicación.
  4. Una vez que finalice el proceso, se le redirigirá a su panel de control. Seleccione la sección "Implementar"

Conectando la aplicación Heroku a repositorios locales

Siga las guías de implementación proporcionadas en la sección de implementación de este artículo que seleccionó anteriormente.

Aún así, inicie sesión en Heroku en la sección "Implementar" que seleccionamos anteriormente.

Ejecute los siguientes comandos (también especificados en la sección Implementar) para conectarse a Heroku y crear un nuevo Dyno desde el directorio raíz de su servidor/proyecto:

Nota: Los paréntesis angulares “<> ” utilizado en los ejemplos a continuación denota los valores de identificador/parámetro/argumento proporcionados por el usuario. Al ejecutar los comandos, debe omitirlos.

# Agregar control remoto Heroku

heroku git:remote -a <name-of-the-newly-created-app>

# Eche un vistazo a los controles remotos disponibles.

# La conexión al nuevo repositorio remoto 'heroku' debería estar visible.

git remote -v

# En la rama de desarrollo, confirme el trabajo más reciente.

git add .

git commit -m 'Write a clear, meaningful commit message here.'

git push origin <development-branch-name>

# Las sucursales se deben desproteger de la sucursal maestra.

git checkout master

# Las actualizaciones de la rama de desarrollo se fusionan.

git merge <development-branch-name>

git push heroku master

Configuración de Heroku para conectarse al MongoDB Atlas Cluster usando variables de configuración

Nos divertimos mucho configurando rápidamente nuestro clúster Atlas, ¡pero creemos que disfrutará aún más de esta sección!

Las aplicaciones de Heroku respaldadas por Atlas son fáciles de desarrollar. Construya una variable de configuración de nivel de aplicación que contenga la cadena de conexión de su clúster. ¡Puede acceder de forma segura a esa variable de configuración dentro de su aplicación una vez que se haya configurado!

Así es como lo haces:

Paso 1:Abra la CLI de Heroku e inicie sesión.

heroku login

Este comando lo lleva a la página de inicio de sesión de Heroku en su navegador web. Haga clic en el botón "Iniciar sesión" si ya ha iniciado sesión. También puede usar el indicador -i para iniciar sesión desde la línea de comandos.

Paso 2:hacer una copia de mi aplicación de demostración

Construí una aplicación de nodo prototipo que usa MongoDB Atlas y que me gustaría publicar en Heroku para continuar con esta lección. Clónalo, luego ve al siguiente directorio:

git clone https://github.com/adriennetacke/mongodb-atlas-heroku-leaflix-demo.git

cd mongodb-atlas-heroku-leaflix-demo

Salida:

Paso 3:Cree una aplicación de Heroku

heroku create leaflix

Salida:

Como puede ver, le he dado un nombre a mi leaflix.

Obtenga su cadena de conexión de Atlas Cluster

Vuelva al panel de control de su clúster de Atlas para recuperar nuestra cadena de conexión.

  • Seleccione "Conectar" en el menú desplegable.
  • Seleccione "Conectar su aplicación" en el menú desplegable.

La cadena de conexión que necesitaremos para conectarnos a nuestro clúster se encontrará aquí. Anota la cadena de conexión.

Pegue la cadena de conexión en un editor; haremos algunos cambios antes de asignarlo a una variable de configuración de Heroku.

Atlas ha incluido fácilmente el nombre de usuario del usuario de la base de datos que creamos previamente, como puede ver. Reemplace la "contraseña" con la contraseña del usuario de su base de datos personal y "dbname" con "sample_mflix", que es el conjunto de datos de muestra que utilizará nuestra aplicación de demostración para completar la cadena de conexión y hacerla válida.

Nota:Si no tiene la contraseña para el usuario de su base de datos, genere una automáticamente y utilícela en la cadena de conexión. Si lo vuelves a generar automáticamente, ¡recuerda actualizarlo! Vaya a Acceso a la base de datos> Haga clic en "Editar" en el usuario de la base de datos para el que desea encontrar la contraseña> Restablecer su contraseña> Generar automáticamente otra contraseña segura.

Cree una variable de configuración MONGODB_URI

Ahora que lo creamos correctamente, es hora de guardar nuestra cadena de conexión en una variable de configuración de Heroku. Establezca la variable de configuración MONGODB_URI en nuestra cadena de conexión:

heroku config:set MONGODB_URI="mongodb+srv://yourUsername:[email protected]/sample_mflix?retryWrites=true&w=majority"

Estos son algunos puntos clave a tener en cuenta:

  • Este comando consta de una sola línea.
  • Debido a que el formato de nuestra cadena de conexión contiene caracteres especiales, debe estar entre comillas.

¡Es tan simple como eso! Ha agregado con éxito la cadena de conexión de su clúster de Atlas a una variable de configuración de Heroku, lo que le permite acceder de forma segura después de implementar su aplicación en Heroku.

Nota: También puede ingresar esta variable de configuración en la pestaña "Configuración" de Heroku Dashboard para su aplicación. Vaya a Leaflix> Configuración en sus aplicaciones. Haga clic en el botón "Reveal Config Vars" en la sección Config Vars e ingrese su configuración var allí.

El paso final es cambiar el código de su aplicación para permitir el acceso a estas variables.

Uso de los valores var de configuración de Heroku para conectar su aplicación a un clúster de MongoDB Atlas

Notará que codificamos nuestra cadena de conexión del clúster Atlas en nuestra aplicación de demostración. Necesitamos volver a trabajar en nuestro código para usar la variable de configuración de Heroku generada anteriormente.

Las variables de entorno se utilizan para exponer las variables de configuración al código de su aplicación. El idioma que elija para acceder a estas variables determinará cómo accede a ellas; por ejemplo, en Java, usaría System.getenv('clave') llamadas, y en Ruby, usaría ENV['key'] llamadas.

Sabiendo que nuestra aplicación está escrita en Node, podemos usar la variable process.env en Node.js para conectarnos a nuestro clúster Atlas. Cambie la constante uri en el archivo server.js a:

const uri = process.env.MONGODB_URI;

Eso concluye nuestra discusión. Nuestra aplicación accederá de forma segura a nuestra cadena de conexión del clúster Atlas una vez implementada porque la agregamos como una variable de configuración de Heroku.

Guarde el archivo, confirme la modificación y luego implemente en Heroku.

git commit -am "fix: refactor hard-coded connection string to Heroku config var"

git push heroku master

¡Su aplicación ahora ha sido implementada! Con este comando, puede verificar que al menos una instancia de Leaflix se esté ejecutando:

heroku ps:scale web=1

Sabrá que al menos una instancia está en funcionamiento si recibe un aviso que dice:"Escalando dynos... terminado, actualmente se está ejecutando web en 1:gratis".

Finalmente, navegue al sitio web de su aplicación. Puede hacerlo siguiendo los pasos a continuación:

heroku open

Cuando presionas el botón "¿Necesitas reírte?" botón, nuestro software seleccionará una película basada en la categoría "Comedia" en el área de géneros. Si todo está en orden, debería ver algo como esto:el conjunto de datos sample_mflix se usa en este ejemplo, que proviene directamente de nuestro clúster Atlas.

Configuración de direcciones IP para Heroku en MongoDB Atlas

¡Nuestro clúster ya está operativo y nuestra aplicación ya está activa en Heroku!

Configuramos nuestro clúster para aceptar conexiones desde cualquier dirección IP para guiarnos a través de la guía del artículo. Preferiría limitar el acceso únicamente a su aplicación, y hay algunas opciones en Heroku para hacerlo.

La primera opción es utilizar un complemento para darle a su aplicación una dirección IP de salida estática que puede usar para restringir el acceso en Atlas. Se pueden encontrar algunos ejemplos aquí.

Otra opción es usar Heroku Private Spaces y usar las direcciones IP de salida estáticas del espacio. Esta es una opción más costosa, pero elimina un complemento adicional.

Existen varios documentos y artículos que afirman que puede usar los rangos de IP de AWS o Heroku para brindar acceso a las IP que se originan en su área de AWS o Heroku Dynos en esas regiones. Si bien esto es concebible, no se recomienda porque dichos rangos pueden cambiar con el tiempo. Entonces, en su lugar, sugerimos usar uno de los dos enfoques enumerados anteriormente.

Puede usar las direcciones IP de su aplicación para configurar su firewall en Atlas una vez que las tenga.

Elimine cualquier rango de IP existente de su clúster de Atlas, luego agréguelo a su lista de permitidos. Puede hacerlo siguiendo el procedimiento que usamos para "Agregar direcciones IP y eliminar los rangos de IP existentes".

¡Eso es todo! Ha implementado correctamente MongoDB en Heroku