introducción a heroku (by liquid kloud)

26
Introducción a Heroku Madrid Salesforce Developer Group Liquid Kloud – Abril/2016 José Ramón Huerga (@jrhuerga)

Upload: jose-ramon-huerga-ayuso

Post on 16-Apr-2017

337 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Introducción a Heroku (by Liquid Kloud)

Introducción a HerokuMadrid Salesforce Developer GroupLiquid Kloud – Abril/2016José Ramón Huerga (@jrhuerga)

Page 2: Introducción a Heroku (by Liquid Kloud)

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.

Page 3: Introducción a Heroku (by Liquid Kloud)

¿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).

Page 4: Introducción a Heroku (by Liquid Kloud)

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.

Page 5: Introducción a Heroku (by Liquid Kloud)

¿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).

Page 6: Introducción a Heroku (by Liquid Kloud)

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.

Page 7: Introducción a Heroku (by Liquid Kloud)

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

Page 8: Introducción a Heroku (by Liquid Kloud)

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

Page 9: Introducción a Heroku (by Liquid Kloud)

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.

Page 10: Introducción a Heroku (by Liquid Kloud)

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.

Page 11: Introducción a Heroku (by Liquid Kloud)

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.

Page 12: Introducción a Heroku (by Liquid Kloud)

Planes / Versiones

Page 13: Introducción a Heroku (by Liquid Kloud)

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’.

Page 14: Introducción a Heroku (by Liquid Kloud)

Interfaz de administración

Page 15: Introducción a Heroku (by Liquid Kloud)

Monitor rendimiento

Page 16: Introducción a Heroku (by Liquid Kloud)

Marketplace

Page 17: Introducción a Heroku (by Liquid Kloud)

Heroku PostgresExisten diversas opciones para crear bases de datos Postgres.

Page 18: Introducción a Heroku (by Liquid Kloud)

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.

Page 19: Introducción a Heroku (by Liquid Kloud)

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

Page 20: Introducción a Heroku (by Liquid Kloud)

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).

Page 21: Introducción a Heroku (by Liquid Kloud)

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”

Page 22: Introducción a Heroku (by Liquid Kloud)

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.

Page 23: Introducción a Heroku (by Liquid Kloud)

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

Page 24: Introducción a Heroku (by Liquid Kloud)

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.

Page 25: Introducción a Heroku (by Liquid Kloud)

Aplicación demo

Page 26: Introducción a Heroku (by Liquid Kloud)

Prueba Heroku hoy mismoCréate una cuenta gratuita en heroku.comBájate los fuentes de https://github.com/jrhuergaPara cualquier duda: @jrhuerga

Gracias !!