Upload
jose-ramon-huerga-ayuso
View
337
Download
0
Embed Size (px)
Citation preview
Introducción a HerokuMadrid Salesforce Developer GroupLiquid Kloud – Abril/2016José Ramón Huerga (@jrhuerga)
Acerca de Liquid KloudFundada en 2016Objetivo 1: formar un equipo de profesionales expertos en tecnologías cloudObjetivo 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-tenantSe apoya en Amazon . No comparte infraestructura con force.comIntegrada 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 Heroku2007 - 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 Millones2011 – Se anuncia un fuerte acuerdo con Facebook para que Heroku sea una plataforma de hosting para aplicaciones en Facebook2011 – Se incluye soporte para aplicaciones Java2014 – Se crean data centers en Europa2014 – Lanzamiento de Heroku Connect (sincronización con Salesforce)2015 – Se lanza App Cloud, que incluye Force, Heroku y Lightning2016 – 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 versionesHeroku proporciona un repositorio git.Internamente se apoya en GitHub, pero no es necesario hacer pagos adicionalesNormalmente 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 principiosAdam 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 HerokuA 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 logsHeroku incluye LogplexAsume 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 ToolbeltEn 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 localTambién incluye el Heroku Client.Existe una integración con Eclipse.
Planes / Versiones
Conseguir un entorno de desarrolloLos 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 PostgresExisten diversas opciones para crear bases de datos Postgres.
Configuración de PostgresSe recomienda instalar en local PostgreSQLEso 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 PostgresConfiguración de base de datos en SpringImportante para desarrollo el número máximo de conexiones .En local hay que usar parámetros como ssl=true y sslfactory NonValidatingFactory
Desarrollo con JavaLas PaaS como Heroku liberan a los desarrolladores de tener que apoyarse en un contenedor de aplicaciones.No es preciso desplegar archivos WARSe generan archivos JAR que llevan embebido un tomcat o un jettyUso 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 JavaDesarrollar 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.comMediante 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.comSe 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 demoColgada aquí: https://github.com/jrhuergaGestionar un objeto (TipoEnvio) creado en Salesforce y asociado al objeto AccountSe apoya en Spring Boot para el backend (fundamentalmente un CRUD basado en REST)Uso de WebJars para gestionar dependencias de front-endLa parte cliente se ha construido usando AngularJS La presentación está hecha con Bootstrap.
Aplicación demo
Prueba Heroku hoy mismoCréate una cuenta gratuita en heroku.comBájate los fuentes de https://github.com/jrhuergaPara cualquier duda: @jrhuerga
Gracias !!