Seidor
Personas hablando

30 de gener de 2023

Què és Heroku? Per a què serveix? Amb Salesforce, com s'integra?

Dins Salesforce: podria tenir una integració utilitzant cua de missatges? i si necessito obrir un WebSocket per a la comunicació? i es podria dur a terme reconeixement facial? Sí, sí i sí! I tot això sense sortir de l'ecosistema Salesforce, ja que Heroku n'és part des del 2010.

Què és Heroku?

Heroku és una solució de Plataforma com a Servei (PaaS) basada en el núvol perquè el client només s'hagi de preocupar de desenvolupar la seva aplicació, mentre Heroku s'encarrega de la infraestructura que hi ha al darrere.

Per proporcionar aquest servei es disposa d'uns contenidors virtuals que són els encarregats de mantenir i d'executar les aplicacions. Aquests contenidors virtuals són totalment escalables a demanda. Tant en nombre com en capacitats.

Un avantatge de triar Heroku és la seva capacitat de suportar múltiples llenguatges de programació. Els principals a utilitzar són: Node.js, Ruby, Python, Java, PHP, Go, Scala i Clojure. Tot i això aquesta quantitat de llenguatges pot augmentar en cas d'utilitzar Heroku Buildpacks, que permeten compilar les aplicacions en molts més d'ells.

lenguas de java

Característiques a dojo (Dynos, CLI …)

Heroku és més profund del que ens podem imaginar abans de conèixer-lo. Al principi només se'n veu la punta de l'iceberg. Però en podem destacar algunes característiques, que són curioses o bé criden l'atenció:

comandos
  • Git

En qualsevol projecte o desenvolupament, Git hauria de ser indispensable, però amb Heroku encara ho és més. Git no tan sols s'utilitza com a control de versions, sinó que, a més, serveix com a connexió entre el desenvolupament local i el núvol de Heroku. La manera de desplegar l'aplicació a Heroku és amb el famós comandament git push.

  • Dynos

Els dynos (no val fer acudits amb dinosaures) és com s'anomenen els contenidors virtuals encarregats de mantenir l'aplicació en funcionament. N'hi ha de diversos tipus, segons la capacitat de processament, i es poden combinar en quantitat i tipus, com es vulgui. Són totalment escalables a demanda, un avantatge per a les aplicacions que reben pics de sol·licituds en dates assenyalades (Black Friday, Nadal…). És important tenir sota control quan i quants dynos estan actius, ja que Heroku cobra per segon de processament.

  • CLI

Per als amants de les terminals, Heroku posa a la seva disposició els comandaments de la seva Command Line Interfície personalitzada. És tan potent que, amb ella, ràpidament es pot fer qualsevol tasca que es faria anant a la interfície web.

  • Add-ons

Els Add-ons són eines que complementen l'aplicació —no aplicacions en si— i que tenen la capacitat d'adaptar-se i aportar utilitat independentment de l'aplicació. Encara que Heroku posa a disposició alguns Add-ons, n'hi ha molts que els han desenvolupat partners o altres empreses. Aconsegueixen un benefici, ja que tenen la capacitat de vendre aquests desenvolupaments a la botiga a diverses tarifes depenent de les capacitats que es volen contractar. És molt semblant al que passa amb Salesforce i AppExchange.

pasos
  • Buttons

Els botons són components, llibreries o plantilles d'aplicacions que es despleguen a Heroku en un clic. Un cop desplegada l'aplicació del botó, es pot modificar per adaptar-la a les necessitats. Aquí entra en joc l'Open Source (almenys en alguns botons que així ho especifiquin), ja que fer clic en un botó de Heroku equivaldria, per exemple, a fer un fork a Github.

4 pasos para deploy

Com es crea una app amb Heroku?

Realment passar de zero a ‘Hola món’ és força ràpid a Heroku. La complexitat radicarà sobretot en l'aplicació que es vulgui desenvolupar, ja que la resta ja ho disposa Heroku d'una manera ben senzilla.

Les aplicacions s'executen des d'un servidor Heroku, fent servir Heroku DNS Server per apuntar al domini de l'aplicació (en general, nom.herokuapp.com).

Vegem aquests passos senzills:

  • Instal·lar Heroku, iniciar sessió i crear l'app

Heroku es pot instal·lar tant a Linux com a Windows o MacOs. Primer cal crear un compte (de moment, gratuïta) i iniciar sessió amb «heroku login». Per crear l'app és tan instantani com escriure-hi «heroku create ».

  • Desenvolupar l'aplicació

Primer de tot, cal escollir el llenguatge de programació amb què es desenvoluparà i, per descomptat, programar aquesta aplicació. Per exemple, una que saludi amb «Hola món».

  • Procfile

Aquest fitxer és important. És l'encarregat de dir a cada dyno (i a cada tipus de dyno) què és el que executarà. És una llista d'instruccions. Per exemple, si s'hagués escrit una app a Python i es volgués aixecar un servidor d'aplicacions Gunicorn, per exemple, per servir una aplicació Django o Flask, el Procfile contindria «web: gunicorn main:app».

  • Dependències

Els dynos necessiten saber quines altres llibreries (i les seves versions concretes) necessiten ser instal·lades conjuntament amb l'aplicació. Si, per exemple, s'utilitza Python, n'hi hauria prou amb generar un fitxer de requisits d'entorn amb «pip freeze > requirements.txt».

  • Relacionar el Git

Un cop iniciat el Git de manera local, cal relacionar-lo amb el que té Heroku de manera remota i és on emmagatzemarà la seva versió al núvol de l'aplicació: «heroku git:remote -a ».

  • (Opcional) Utilitzar una BD

En cas que l'aplicació necessiti una base de dades externa, hi ha un Add-on, Heroku Postgres, que es pot començar a utilitzar de manera gratuïta per provar-ho.

  • I desplegar!

I llestos! Només fa falta un últim pas: executar el comandament «git push heroku master».
Com s'integren Heroku i Salesforce?

Un dels punts forts de Heroku és la seva multitud de possibilitats a l'hora d'integrar-se amb Salesforce. Estant en el mateix ecosistema, s'hauria trobat a faltar si no fos així.

tabla

Les més interessants són:

  • Heroku Connect

És una sincronització bidireccional de les dades entre Salesforce i una altra base de dades externa. Qualsevol modificació en les dades feta tant dins com fora de Salesforce es veu reflectida talment com si es tractés d'un mirall. L'espera mínima, això sí, seria de 10 minuts. Si es necessita alguna cosa més instantània, caldria recórrer a utilitzar Salesforce Streaming API per aconseguir un ‘polling on demand’.

  • External Objects

Aquesta forma d'integrar-se no és exclusiva de Heroku, ja que els External Objects de Salesforce es poden utilitzar amb altres bases de dades externes. Però amb Heroku és realment senzill i ràpid de configurar. És una solució interessant per estalviar l'espai a Salesforce i emmagatzemar les dades externament. S'exposen les dades a Salesforce i es poden visualitzar, cercar i relacionar.

  • Apex Callout

De vegades la senzillesa és el que més s'ajusta a allò que necessitem. Una simple trucada HTTP POST des d'Apex a l'endpoint que proporciona Heroku pot arribar a ser suficient si necessitem el servei que està disposat a Heroku de manera puntual.

Casos d'ús

El motiu principal amb el qual fan publicitat de l'ús de Heroku és la tranquil·litat que ofereix, ja que s'ocupa de tota la infraestructura que cal muntar perquè un servei al núvol estigui sempre disponible, mentre ens podem focalitzar a desenvolupar l'aplicació que necessitem.

Comuns

Alguns dels usos més comuns de Heroku serien:

  • Integracions per a Salesforce amb bases de dades externes

Ja hem valorat anteriorment la multitud de possibilitats que proporciona Heroku per integrar-se amb Salesforce. La senzillesa a l'hora de configurar, la rapidesa i la confiança de no haver de sortir de l'ecosistema Salesforce són uns bons motius per, si cal, optar per Heroku.

  • Pont entre Salesforce i una aplicació mòbil

Les aplicacions mòbils acostumen a disposar d'un servei API RESTful que encaixa perfectament amb les integracions Heroku-Salesforce.

  • Incrustar a Salesforce una aplicació web o interfície d'usuari externa

Si ja existeix l'aplicació, per a què cal tornar a fer-la? Gràcies a Heroku es pot carregar en un canvas l'aplicació a través d'un iframe. Heroku garanteix un protocol de comunicació segur.

  • Exposar un API REST a dispositius IoT

Els dispositius d'Internet of Things estan a l'ordre del dia i la informació que recopilen és molt útil. Heroku proporciona la possibilitat de tenir a Salesforce aquestes dades per explotar-les.

Més enllà

Però en aquest blog anirem més enllà i pensarem a portar a Salesforce aquelles necessitats atípiques, però que es podrien necessitar algun cop, i en les que Apex fluixeja, com ara podrien ser:

  • Integrar-se amb Cues de missatges

Cada vegada més, s'estan potenciant les integracions basades en cues de missatges (MQTT, RabbitMQ…) perquè és una manera de no perdre informació en moments de col·lapse o de saturació, ja que els missatges queden emmagatzemats fins que poden ser processats. Una possible idea seria utilitzar Heroku per transformar aquests missatges a Platform Events de Salesforce.

  • SDK

En entorns industrials o integracions amb maquinària antiga, acostuma a ser habitual integrar-se amb SDK (equips de desenvolupament de programari) i no amb serveis. Heroku pot ser una solució per integrar aquest SDK i transformar-lo perquè pugui ser explotat per un servei.

  • Obrir un Socket o WebSocket

També hi ha serveis moderns que s'estructuren al voltant de Sockets. Si s'ha de fer aquesta tasca des d'Apex, de moment és una limitació, ja que no es podria deixar a Apex, per exemple, un socket escoltant connexions. Pel que fa als WebSockets, es poden utilitzar des del frontend, però, i si necessitem fer-ne ús des del backend? des d'Apex seria molt complicat. Per tant, aquí també entra en joc Heroku.

  • Maneig de vídeo i imatge

En aquest àmbit, Apex fa curt. Però li ho podem perdonar perquè Apex no té com a focus d'atenció les imatges i el vídeo, i aquest és un àmbit de la informàtica en què cal especialitzar-se per ser competitiu. Per a això, ja hi ha una multitud de llibreries, algunes de codi obert com ara OpenCV o FFMPEG, que treballen la visió artificial per detectar en imatges o vídeo, per exemple, el moviment, objectes concrets, distància, reconeixement facial, etc. Amb Heroku s'està a un pas d'incloure aquestes funcionalitats dins Salesforce.

  • Crear un proxy per saltar-se el CORS

Els problemes amb el CORS són molt típics, ja que actualment els navegadors bloquegen les peticions d'origen creuat si no s'inclouen unes capçaleres específiques. Una possible solució seria crear-se un servidor Proxy a Heroku i utilitzar-lo per evitar aquests errors, ja que fa d'intermediari entre el navegador i el servidor API.

  • Generació de gràfics científics

A vegades es podria requerir la necessitat d'utilitzar funcions estadístiques, matemàtiques o de generació de gràfics científics. Encara que es podria arribar a pensar en solucions com ara Einstein Analytics, de vegades la potència i el preu s'excedeixen. Ja existeixen llibreries de codi obert, com ara NumPy o MatPlotLib, i que poden estar molt endins de Salesforce utilitzant Heroku.

  • Web scraping

Tot i que poden haver-hi solucions amb Javascript, si la solució es necessita a Apex, Heroku podria col·laborar-hi. Ja existeixen llibreries de codi obert especialitzades en web scraping com ara Selenium o ScraPy, que se situarien a un pas de la integració (pas realment petit gràcies a Heroku).

Documentació

I fins aquí el tutorial en català de com Heroku pot ajudar a estendre les funcionalitats de Salesforce. Per a més informació es recomana encaridament anar a l'Heroku Dev Center. Allí, hi trobareu tota la documentació més tècnica sobre la configuració i l'ús de Heroku. I, per descomptat, Trailhead sempre té com a suport petits mòduls on es poden descobrir més coses sobre Heroku o guies pas a pas per arribar a «Hola món» en uns minuts.