SlideShare una empresa de Scribd logo
1 de 26
Introducción a Heroku
Madrid Salesforce Developer Group
Liquid Kloud – Abril/2016
José Ramón Huerga (@jrhuerga)
Acerca de Liquid Kloud
Fundada en 2016
Objetivo 1: formar un equipo de profesionales expertos
en tecnologías cloud
Objetivo 2: colaborar con la comunidad Salesforce
(boutiques, empresas servicios, clientes, etc)
El equipo actual tiene además un fuerte background en
ECM, gestión de contenidos, marketing digital, social
media, etc.
¿Qué es Heroku?
Es una plataforma tanto de desarrollo como de
delivery de aplicaciones.
Al igual que force.com es una arquitectura multi-
tenant
Se apoya en Amazon . No comparte infraestructura con
force.com
Integrada en GIT. Permite desplegar versiones, hacer
rollback, gestionar dependencias, etc.
Proporciona bases de datos Postgres.
Se puede utilizar para aplicaciones y sites que puedan
tener altos picos de actividad (campañas, registro online
eventos, etc).
Historia de Heroku
2007 - James Lindenbaum, Adam Wiggins, Orion Henry fundan Heroku. Solo soportaba
Ruby inicialmente.
2008 – Consiguen levantar $3 Millones (vía business angels)
2010 – Salesforce compra Heroku por $200 Millones
2011 – Se anuncia un fuerte acuerdo con Facebook para que Heroku sea una plataforma de
hosting para aplicaciones en Facebook
2011 – Se incluye soporte para aplicaciones Java
2014 – Se crean data centers en Europa
2014 – Lanzamiento de Heroku Connect (sincronización con Salesforce)
2015 – Se lanza App Cloud, que incluye Force, Heroku y Lightning
2016 – Actualmente lo usan clientes como Citrix, Toyota, KLM, Macy’s, etc.
¿Qué es un Dyno?
En Heroku, el código corre siempre dentro de en un dyno.
Un dyno es un proceso. Puede usarse para servir contenido web,
para ejecutar procesos batch, etc. Suele disponer de unos 512 MB de
memoria.
Garantiza escalabilidad. Si una aplicación se convierte en viral y
comienza a tener muchas visitas, automáticamente se levantan varios
dynos.
Aísla de aspectos como comunicaciones SSL o enrutamiento y
balanceo.
Cada proceso dyno es independiente y puede ser levantado en otras
máquinas de manera transparente.
Cada dyno tiene su propio filesystem efímero y este es destruido
cuando el proceso es detenido. Si una aplicación necesita grabar
ficheros, debe usar otros servicios (ej: Amazon).
Heroku es “políglota”
Es posible construir aplicaciones en Heroku
usando muchos lenguajes de programación
diferentes.
Por cada aplicación se proporciona un fichero
llamado Procfile que es el que indica como se
levanta una determinada aplicación.
Mediante los ‘buildpacks’ es posible dar
soporte a cualquier lenguaje. En estos casos,
hay que construir tres scripts: 1) bin/detect ; 2)
bin/compile ; 3) bin/release.
Control de versiones
Heroku proporciona un repositorio
git.
Internamente se apoya en GitHub,
pero no es necesario hacer pagos
adicionales
Normalmente a la hora de
desarrollar con Heroku,
habitualmente se lanzarán estas tres
operaciones: 1) git add, 2) git
commit, 3) git push
•Tras el git push, se ejecuta el Heroku
slug compiler
Los 12 principios
Adam Wiggins fue uno de los fundadores de Heroku.
Definió una metodología con 12 factores o principios.
Las aplicaciones Heroku se ajustan a estos principios
Migración a Heroku
A la hora de migrar una aplicación a Heroku, hay que adaptar cualquier tipo de
grabación de fichero a filesystem que estuviéramos haciendo, y pasarlo a otros servicios
(Amazon).
Si utilizábamos bases de datos en memoria, en el caso de Heroku al ser los dynos
efímeros, es recomendable rediseñar la solución.
No se garantiza que entre requests se vaya a mantener estado en memoria. No se
soportan sesiones. Alternativas: cookies, Redis, memcached.
La aplicaciones Java en Heroku no necesitan un contenedor de servlets. Suelen
arrancarse aplicaciones standalone.
Las aplicaciones deben tener un buen rendimiento. Si un request tarda más de 30
segundos, se detiene ese proceso.
Tratamiento de logs
Heroku incluye Logplex
Asume que un log es un stream de eventos.
Los logs se pueden tratar con add-ons que permiten
hacer operaciones de monitorización, análisis, etc.
Heroku Toolbelt
En cada puesto de desarrollo hay que instalar el Heroku
Toolbelt.
Incluye una versión de git así como una versión de forego
(anteriormente se usaba foreman). Forego se utiliza para poder
ejecutar las aplicaciones en local
También incluye el Heroku Client.
Existe una integración con Eclipse.
Planes / Versiones
Conseguir un entorno de desarrollo
Los entornos de desarrollo son gratuitos.
Tienen una serie de limitaciones.
Estos entornos ‘duermen’ al cabo de 30 minutos de inactividad, de tal manera que la
siguiente petición tardará en ser atendida.
Por cada 24 horas, el sistema debe haber dormido unas 6 horas en total.
Para conseguir un entorno que nunca ‘duerma’ hay que pasar al siguiente plan, al
‘Hobby’.
Interfaz de administración
Monitor rendimiento
Marketplace
Heroku Postgres
Existen diversas opciones para crear bases de datos Postgres.
Configuración de Postgres
Se recomienda instalar en local
PostgreSQL
Eso dará acceso a la herramienta de
línea de comando psql, la cual está
integrada con Heroku client.
Desde aquí se pueden listar esquemas,
tablas de base de datos, etc.
Configuración de Postgres
Configuración de base de
datos en Spring
Importante para
desarrollo el número
máximo de conexiones .
En local hay que usar
parámetros como ssl=true
y sslfactory
NonValidatingFactory
Desarrollo con Java
Las PaaS como Heroku liberan a los desarrolladores de tener que apoyarse en un
contenedor de aplicaciones.
No es preciso desplegar archivos WAR
Se generan archivos JAR que llevan embebido un tomcat o un jetty
Uso de Maven para gestionar dependencias.
Las aplicaciones Heroku deben ser stateless (si es preciso almacenar estado, debe
usarse Redis / memcached).
Pasos para desplegar una aplicación Java
Desarrollar la aplicación apoyándose en Maven.
Lanzar un “git init” para inicializar el repositorio.
Lanzar un “heroku create <nombre_aplicación>”
Hacer un “git add” y un “git commit”
Desplegar en Heroku con “git push heroku master”
Abrir la aplicación, vía URL o lanzando “heroku open”
Integración con force.com
Mediante Heroku Connect es posible elegir
objetos (tablas) en force.com y a partir de ahí
seleccionar qué campos queremos que se
repliquen en Heroku.
Integración con force.com
Se puede configurar la frecuencia con la que los cambios en Salesforce se
trasladarán a Heroku.
Es posible definir una sincronización bidireccional, de tal manera que los cambios
en Heroku se envíen a force.com
Arquitectura aplicación demo
Colgada aquí: https://github.com/jrhuerga
Gestionar un objeto (TipoEnvio) creado en Salesforce y asociado al objeto Account
Se apoya en Spring Boot para el backend (fundamentalmente un CRUD basado en
REST)
Uso de WebJars para gestionar dependencias de front-end
La parte cliente se ha construido usando AngularJS
La presentación está hecha con Bootstrap.
Aplicación demo
Prueba Heroku hoy mismo
Créate una cuenta gratuita en heroku.com
Bájate los fuentes de https://github.com/jrhuerga
Para cualquier duda: @jrhuerga
Gracias !!

Más contenido relacionado

La actualidad más candente

Git y drupal
Git y drupalGit y drupal
Git y drupalJuampy NR
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación DockerITPAMI
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonarRocío Muñoz
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoMario IC
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaipquaip
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores DockerPlain Concepts
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoRestorando
 

La actualidad más candente (20)

Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Fury DevopsConf 2015
Fury DevopsConf 2015Fury DevopsConf 2015
Fury DevopsConf 2015
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
 
Docker containers-itb-2021
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021
 
Sprint 5 Despliegue de la Empresa
Sprint 5 Despliegue de la EmpresaSprint 5 Despliegue de la Empresa
Sprint 5 Despliegue de la Empresa
 
Node-webkit
Node-webkitNode-webkit
Node-webkit
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
 
El camino de Java a Kubernetes
El camino de Java a KubernetesEl camino de Java a Kubernetes
El camino de Java a Kubernetes
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores Docker
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 

Destacado

Heroku 101 py con 2015 - David Gouldin
Heroku 101   py con 2015 - David GouldinHeroku 101   py con 2015 - David Gouldin
Heroku 101 py con 2015 - David GouldinHeroku
 
Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku
 
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]ខ្មែរមហានគរ
 
Visa processes for AAIM 2012
Visa processes for AAIM 2012Visa processes for AAIM 2012
Visa processes for AAIM 2012IC2012
 
CAP 2013 Space Scoop
CAP 2013 Space ScoopCAP 2013 Space Scoop
CAP 2013 Space Scoopunawe
 
Definio Compliance Engine (Italian)
Definio Compliance Engine (Italian)Definio Compliance Engine (Italian)
Definio Compliance Engine (Italian)DefinioReply
 
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.S
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.SPROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.S
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.Ssalogi
 
Perfil tea marzo 2015 (1)
Perfil tea marzo 2015 (1)Perfil tea marzo 2015 (1)
Perfil tea marzo 2015 (1)CCastroC
 
Sity Consultores. Innovamos para el turismo
Sity Consultores. Innovamos para el turismo Sity Consultores. Innovamos para el turismo
Sity Consultores. Innovamos para el turismo VivEmociones
 
Santiago Aparicio ppt direccion final
Santiago Aparicio ppt direccion finalSantiago Aparicio ppt direccion final
Santiago Aparicio ppt direccion final5ForoASCTI
 
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientiane
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientianeSignes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientiane
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientianeIFMT
 
Rozenchan_et_al-2009-International_Journal_of_Cancer
Rozenchan_et_al-2009-International_Journal_of_CancerRozenchan_et_al-2009-International_Journal_of_Cancer
Rozenchan_et_al-2009-International_Journal_of_CancerPatricia Rozenchan
 

Destacado (15)

Introducing Heroku for Beginners
Introducing Heroku for BeginnersIntroducing Heroku for Beginners
Introducing Heroku for Beginners
 
Heroku 101 py con 2015 - David Gouldin
Heroku 101   py con 2015 - David GouldinHeroku 101   py con 2015 - David Gouldin
Heroku 101 py con 2015 - David Gouldin
 
Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku webcastdeck+20130828
Heroku webcastdeck+20130828
 
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]
ចៅហ្វាយគុយ 01 [www.khmer mahanorkor.blogspot.com]
 
Visa processes for AAIM 2012
Visa processes for AAIM 2012Visa processes for AAIM 2012
Visa processes for AAIM 2012
 
CAP 2013 Space Scoop
CAP 2013 Space ScoopCAP 2013 Space Scoop
CAP 2013 Space Scoop
 
Definio Compliance Engine (Italian)
Definio Compliance Engine (Italian)Definio Compliance Engine (Italian)
Definio Compliance Engine (Italian)
 
Software de sistema
Software de sistemaSoftware de sistema
Software de sistema
 
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.S
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.SPROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.S
PROYECTO DIPLOMADO - SEÑALES TRANSITO PREVENTIVAS - I.E.S.B.S
 
Perfil tea marzo 2015 (1)
Perfil tea marzo 2015 (1)Perfil tea marzo 2015 (1)
Perfil tea marzo 2015 (1)
 
Sity Consultores. Innovamos para el turismo
Sity Consultores. Innovamos para el turismo Sity Consultores. Innovamos para el turismo
Sity Consultores. Innovamos para el turismo
 
Santiago Aparicio ppt direccion final
Santiago Aparicio ppt direccion finalSantiago Aparicio ppt direccion final
Santiago Aparicio ppt direccion final
 
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientiane
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientianeSignes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientiane
Signes sévères des cas de dengue selon l'âge à l'hôpital mahosot de vientiane
 
Rozenchan_et_al-2009-International_Journal_of_Cancer
Rozenchan_et_al-2009-International_Journal_of_CancerRozenchan_et_al-2009-International_Journal_of_Cancer
Rozenchan_et_al-2009-International_Journal_of_Cancer
 
Jovesnagevantsproposal
JovesnagevantsproposalJovesnagevantsproposal
Jovesnagevantsproposal
 

Similar a Introducción a Heroku

Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y PythonCarlos Toxtli
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...campus party
 
tecnologias detras de las redes sociales
tecnologias detras de las redes socialestecnologias detras de las redes sociales
tecnologias detras de las redes socialesyhangaona
 
EcoSistema DevOps DevSecOps un pequeño brief
EcoSistema DevOps DevSecOps un pequeño briefEcoSistema DevOps DevSecOps un pequeño brief
EcoSistema DevOps DevSecOps un pequeño briefCarlos Aliaga
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasScio Consulting
 
atSistemas - Presentacion Hybreed
atSistemas - Presentacion HybreedatSistemas - Presentacion Hybreed
atSistemas - Presentacion HybreedJuanjo Sánchez
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Marco Antonio Ordoñez Valverde
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 

Similar a Introducción a Heroku (20)

Atix30
Atix30Atix30
Atix30
 
ATIX19
ATIX19ATIX19
ATIX19
 
Atix19
Atix19Atix19
Atix19
 
Atix19
Atix19Atix19
Atix19
 
Atix19
Atix19Atix19
Atix19
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
Redes Sociales Libres
Redes Sociales LibresRedes Sociales Libres
Redes Sociales Libres
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Atix13
Atix13Atix13
Atix13
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
 
tecnologias detras de las redes sociales
tecnologias detras de las redes socialestecnologias detras de las redes sociales
tecnologias detras de las redes sociales
 
EcoSistema DevOps DevSecOps un pequeño brief
EcoSistema DevOps DevSecOps un pequeño briefEcoSistema DevOps DevSecOps un pequeño brief
EcoSistema DevOps DevSecOps un pequeño brief
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Aplicaciones Móviles Híbridas
Aplicaciones Móviles HíbridasAplicaciones Móviles Híbridas
Aplicaciones Móviles Híbridas
 
atSistemas - Presentacion Hybreed
atSistemas - Presentacion HybreedatSistemas - Presentacion Hybreed
atSistemas - Presentacion Hybreed
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 

Introducción a Heroku

  • 1. Introducción a Heroku Madrid Salesforce Developer Group Liquid Kloud – Abril/2016 José Ramón Huerga (@jrhuerga)
  • 2. Acerca de Liquid Kloud Fundada en 2016 Objetivo 1: formar un equipo de profesionales expertos en tecnologías cloud Objetivo 2: colaborar con la comunidad Salesforce (boutiques, empresas servicios, clientes, etc) El equipo actual tiene además un fuerte background en ECM, gestión de contenidos, marketing digital, social media, etc.
  • 3. ¿Qué es Heroku? Es una plataforma tanto de desarrollo como de delivery de aplicaciones. Al igual que force.com es una arquitectura multi- tenant Se apoya en Amazon . No comparte infraestructura con force.com Integrada en GIT. Permite desplegar versiones, hacer rollback, gestionar dependencias, etc. Proporciona bases de datos Postgres. Se puede utilizar para aplicaciones y sites que puedan tener altos picos de actividad (campañas, registro online eventos, etc).
  • 4. Historia de Heroku 2007 - James Lindenbaum, Adam Wiggins, Orion Henry fundan Heroku. Solo soportaba Ruby inicialmente. 2008 – Consiguen levantar $3 Millones (vía business angels) 2010 – Salesforce compra Heroku por $200 Millones 2011 – Se anuncia un fuerte acuerdo con Facebook para que Heroku sea una plataforma de hosting para aplicaciones en Facebook 2011 – Se incluye soporte para aplicaciones Java 2014 – Se crean data centers en Europa 2014 – Lanzamiento de Heroku Connect (sincronización con Salesforce) 2015 – Se lanza App Cloud, que incluye Force, Heroku y Lightning 2016 – Actualmente lo usan clientes como Citrix, Toyota, KLM, Macy’s, etc.
  • 5. ¿Qué es un Dyno? En Heroku, el código corre siempre dentro de en un dyno. Un dyno es un proceso. Puede usarse para servir contenido web, para ejecutar procesos batch, etc. Suele disponer de unos 512 MB de memoria. Garantiza escalabilidad. Si una aplicación se convierte en viral y comienza a tener muchas visitas, automáticamente se levantan varios dynos. Aísla de aspectos como comunicaciones SSL o enrutamiento y balanceo. Cada proceso dyno es independiente y puede ser levantado en otras máquinas de manera transparente. Cada dyno tiene su propio filesystem efímero y este es destruido cuando el proceso es detenido. Si una aplicación necesita grabar ficheros, debe usar otros servicios (ej: Amazon).
  • 6. Heroku es “políglota” Es posible construir aplicaciones en Heroku usando muchos lenguajes de programación diferentes. Por cada aplicación se proporciona un fichero llamado Procfile que es el que indica como se levanta una determinada aplicación. Mediante los ‘buildpacks’ es posible dar soporte a cualquier lenguaje. En estos casos, hay que construir tres scripts: 1) bin/detect ; 2) bin/compile ; 3) bin/release.
  • 7. Control de versiones Heroku proporciona un repositorio git. Internamente se apoya en GitHub, pero no es necesario hacer pagos adicionales Normalmente a la hora de desarrollar con Heroku, habitualmente se lanzarán estas tres operaciones: 1) git add, 2) git commit, 3) git push •Tras el git push, se ejecuta el Heroku slug compiler
  • 8. Los 12 principios Adam Wiggins fue uno de los fundadores de Heroku. Definió una metodología con 12 factores o principios. Las aplicaciones Heroku se ajustan a estos principios
  • 9. Migración a Heroku A la hora de migrar una aplicación a Heroku, hay que adaptar cualquier tipo de grabación de fichero a filesystem que estuviéramos haciendo, y pasarlo a otros servicios (Amazon). Si utilizábamos bases de datos en memoria, en el caso de Heroku al ser los dynos efímeros, es recomendable rediseñar la solución. No se garantiza que entre requests se vaya a mantener estado en memoria. No se soportan sesiones. Alternativas: cookies, Redis, memcached. La aplicaciones Java en Heroku no necesitan un contenedor de servlets. Suelen arrancarse aplicaciones standalone. Las aplicaciones deben tener un buen rendimiento. Si un request tarda más de 30 segundos, se detiene ese proceso.
  • 10. Tratamiento de logs Heroku incluye Logplex Asume que un log es un stream de eventos. Los logs se pueden tratar con add-ons que permiten hacer operaciones de monitorización, análisis, etc.
  • 11. Heroku Toolbelt En cada puesto de desarrollo hay que instalar el Heroku Toolbelt. Incluye una versión de git así como una versión de forego (anteriormente se usaba foreman). Forego se utiliza para poder ejecutar las aplicaciones en local También incluye el Heroku Client. Existe una integración con Eclipse.
  • 13. Conseguir un entorno de desarrollo Los entornos de desarrollo son gratuitos. Tienen una serie de limitaciones. Estos entornos ‘duermen’ al cabo de 30 minutos de inactividad, de tal manera que la siguiente petición tardará en ser atendida. Por cada 24 horas, el sistema debe haber dormido unas 6 horas en total. Para conseguir un entorno que nunca ‘duerma’ hay que pasar al siguiente plan, al ‘Hobby’.
  • 17. Heroku Postgres Existen diversas opciones para crear bases de datos Postgres.
  • 18. Configuración de Postgres Se recomienda instalar en local PostgreSQL Eso dará acceso a la herramienta de línea de comando psql, la cual está integrada con Heroku client. Desde aquí se pueden listar esquemas, tablas de base de datos, etc.
  • 19. Configuración de Postgres Configuración de base de datos en Spring Importante para desarrollo el número máximo de conexiones . En local hay que usar parámetros como ssl=true y sslfactory NonValidatingFactory
  • 20. Desarrollo con Java Las PaaS como Heroku liberan a los desarrolladores de tener que apoyarse en un contenedor de aplicaciones. No es preciso desplegar archivos WAR Se generan archivos JAR que llevan embebido un tomcat o un jetty Uso de Maven para gestionar dependencias. Las aplicaciones Heroku deben ser stateless (si es preciso almacenar estado, debe usarse Redis / memcached).
  • 21. Pasos para desplegar una aplicación Java Desarrollar la aplicación apoyándose en Maven. Lanzar un “git init” para inicializar el repositorio. Lanzar un “heroku create <nombre_aplicación>” Hacer un “git add” y un “git commit” Desplegar en Heroku con “git push heroku master” Abrir la aplicación, vía URL o lanzando “heroku open”
  • 22. Integración con force.com Mediante Heroku Connect es posible elegir objetos (tablas) en force.com y a partir de ahí seleccionar qué campos queremos que se repliquen en Heroku.
  • 23. Integración con force.com Se puede configurar la frecuencia con la que los cambios en Salesforce se trasladarán a Heroku. Es posible definir una sincronización bidireccional, de tal manera que los cambios en Heroku se envíen a force.com
  • 24. Arquitectura aplicación demo Colgada aquí: https://github.com/jrhuerga Gestionar un objeto (TipoEnvio) creado en Salesforce y asociado al objeto Account Se apoya en Spring Boot para el backend (fundamentalmente un CRUD basado en REST) Uso de WebJars para gestionar dependencias de front-end La parte cliente se ha construido usando AngularJS La presentación está hecha con Bootstrap.
  • 26. Prueba Heroku hoy mismo Créate una cuenta gratuita en heroku.com Bájate los fuentes de https://github.com/jrhuerga Para cualquier duda: @jrhuerga Gracias !!