Implemente aplicaciones en Heroku
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Describir las diferentes opciones de implementación de Heroku.
- Enumerar los pros y los contras de cada opción.
Heroku ofrece varias opciones de implementación. El método que elija dependerá del proceso, los requisitos y las aplicaciones específicos de su implementación.
Implementación con Git
Este método es el más sencillo. Agregue su aplicación Heroku como remota a un repositorio de Git existente y luego use git push
para enviar su código a Heroku. Heroku crea su aplicación y una versión de manera automática.
Implementación con la integración de GitHub
La integración de GitHub le permite implementar cambios desde un repositorio de GitHub directamente en Heroku. Esta integración tiene más funciones que todas las demás opciones de implementación. Después de vincular su repositorio, los cambios enviados a su repositorio se implementan automáticamente en la aplicación. Puede configurar implementaciones automáticas para una bifurcación específica o desencadenar implementaciones manualmente desde GitHub. Si utiliza la integración continua (CI), como Heroku CI, puede evitar las implementaciones en Heroku si las pruebas fallan.
La integración de GitHub también es útil para automatizar implementaciones en canalizaciones. Por ejemplo, cuando fusiona un cambio en la bifurcación principal, puede implementarlo automáticamente en el entorno de organización para realizar pruebas.
Implementación con Aplicaciones de revisión de Heroku
Las Aplicaciones de revisión le permiten implementar las solicitudes de incorporación de cambios (PR) de GitHub como una aplicación desechable y aislada. Puede hacer una demostración y probar la PR sin sobrescribir su aplicación de producción. Esto le hará ahorrar mucho tiempo de pruebas. Si cierra la PR, la aplicación de revisión se destruye.
Implementación con el botón “Implementar en Heroku”
El botón Implementar en Heroku le permite implementar una aplicación en Heroku desde un navegador web con unos pocos clics. Puede parametrizar cada botón con diferentes configuraciones, como pasar variables de entorno personalizadas a Heroku, usar una bifurcación específica de Git o proporcionar claves de OAuth. Las aplicaciones implementadas con este botón no se actualizan automáticamente cuando agrega nuevas confirmaciones al repositorio de GitHub.
Implementación con Docker
Docker empaqueta sus aplicaciones en entornos independientes. Este aislamiento garantiza que se comporten de la misma manera tanto en desarrollo como en producción. Docker brinda un mayor control sobre los lenguajes, los marcos y las bibliotecas que se usan para ejecutar su aplicación. Para implementar un contenedor en Heroku, envíe una imagen al registro de contenedores de Heroku o declárela en el archivo heroku.yml
de su aplicación para crearlo automáticamente.
Implementación con Hashicorp Terraform
Hashicorp Terraform es una herramienta de infraestructura como código que ayuda a gestionar infraestructuras complejas. Puede definir sus aplicaciones con HCL, un lenguaje de configuración declarativa, para automatizar el proceso de implementación y gestión de las aplicaciones de Heroku. Terraform v0.12+ le permite almacenar el estado remoto, por lo que puede ejecutar Terraform en un dyno de Heroku y almacenar el estado de Terraform en una base de datos Postgres de Heroku.
Comparación de las opciones de implementación
Utilice esta tabla como ayuda para elegir la mejor opción de implementación para su caso de uso y flujo de trabajo.
Método de implementación | Requisitos | Ideal para | Pros | Contras |
---|---|---|---|---|
Git | - Acceso completo tanto al repositorio de Git como a la aplicación Heroku para enviar código a producción manualmente. | - Proyectos con equipos pequeños y de confianza | - Fácil de agregar a flujos de trabajo basados en Git - Admite submódulos de Git | - Requiere la implementación manual del código con git push |
Integración de GitHub | - Acceso de administrador a un repositorio de GitHub | - Implementaciones automatizadas | - Implementa aplicaciones automáticamente y las mantiene actualizadas - Se integra con Canalizaciones de Heroku, Aplicaciones de revisión y Heroku CI para un flujo de trabajo continuo | - No admite submódulos de Git |
Aplicaciones de revisión de Heroku | - Proyectos en GitHub con aplicaciones implementadas en entornos múltiples | - Opción para crear y actualizar automáticamente Aplicaciones de revisión para cada PR - Admite Heroku Private Spaces para probar cambios en un entorno aislado | - Costos adicionales debido al uso de recursos en Aplicaciones de revisión. Consulte consejos sobre cómo optimizar costos en el Centro de desarrollo | |
Botón “Implementar en Heroku” | - Un repositorio de GitHub - Un archivo app.json válido en el directorio raíz del proyecto | - Aplicaciones proporcionadas a sus usuarios o clientes, como proyectos de código abierto - Incorporación de nuevos empleados | - Excelente para proyectos de plantillas de uso compartido - Fácil de agregar al archivo README o la página web de un proyecto - Proporciona una plantilla con valores predeterminados, variables de entorno y parámetros preconfigurados | - No admite submódulos de Git - No se actualiza automáticamente cuando cambia el repositorio. Debe usar otro método de implementación para las implementaciones posteriores en la misma aplicación |
Docker | - Una imagen de Docker | - Aplicaciones con pilas personalizadas | - Mayor control sobre la pila de su aplicación - Genere imágenes de manera automática o envíe una imagen existente al registro del contenedor - Coherencia entre entornos | - Debe mantener su propia pila - No se admiten las promociones a la canalización |
Hashicorp Terraform | - Terraform | - Aplicaciones con componentes de infraestructura complejos | - Automatiza las implementaciones de la aplicación Heroku - Le permite implementar aplicaciones Heroku como código - Simplifica la gestión de implementaciones grandes y complejas - Puede configurar aplicaciones, Private Spaces o recursos de otros proveedores en una arquitectura repetible de proveedores múltiples | La Asistencia de Heroku no puede proporcionar ayuda con estas implementaciones más complejas |
Resumen
Ahora conoce las diferentes opciones de implementación. Continúe este módulo para obtener más información acerca de la infraestructura que se utiliza para ejecutar aplicaciones en Heroku.
Recursos
- Centro de desarrollo de Heroku: Implementación con Git
- Centro de desarrollo de Heroku: Integración de GitHub
- Centro de desarrollo de Heroku: Aplicaciones de revisión
- Centro de desarrollo de Heroku: Cómo crear un botón “Implementar en Heroku”
- Centro de desarrollo de Heroku: Registro del contenedor y tiempo de ejecución (implementaciones de Docker)
- Centro de desarrollo de Heroku: Cómo usar Terraform con Heroku