Seidor
Personas hablando

30 de gener de 2023

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

Dins de 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 és part d'ell des de 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 darrere.

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

Un avantatge d'escollir 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. Encara que aquesta quantitat de llenguatges pot augmentar en el cas d'utilitzar Heroku Buildpacks, que permeten compilar les aplicacions en multitud d'ells més.

lenguas de java

Característiques a dojo (Dynos, CLI…)

Heroku és més profund del que un pot imaginar abans de conèixer-lo. Al principi només es veu la punta de l'iceberg. Però es poden destacar algunes de les seves característiques que resulten més curioses o cridaneres:

comandos
  • Git

En qualsevol projecte o desenvolupament, Git hauria de ser indispensable, però amb Heroku ho és encara més. Git no només 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 forma 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 es denominen els contenidors virtuals encarregats de mantenir en funcionament l'aplicació. N'hi ha de diferents tipus segons la capacitat de processament, i es poden combinar en quantitat i tipus com es desitgi. Són totalment escalables sota demanda, un avantatge per a aquelles 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 Interface personalitzada. És tan potent que amb ella es pot realitzar ràpidament qualsevol tasca que es realitzaria acudint a la interfície web.

  • Add-ons

Els Add-ons són eines que complementen l'aplicació, no aplicacions en si, amb la qual cosa tenen la capacitat d'adaptar-se i aportar utilitat independentment de l'aplicació. Encara que hi ha alguns Add-ons posats a disposició pel mateix Heroku, molts d'ells han estat desenvolupats per partners o altres empreses. Aconsegueixen un benefici ja que tenen la capacitat de vendre aquests desenvolupaments a la botiga sota diverses tarifes depenent de les capacitats a contractar. Molt semblant al que passa amb Salesforce i AppExchange.

pasos
  • Botons

Els botons són components, llibreries o plantilles d'aplicacions que es despleguen a Heroku en un sol 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 crear una app amb Heroku?

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

Les aplicacions es corren des d'un servidor Heroku, usant Heroku DNS Server per apuntar al domini de l'aplicació (generalment nom.herokuapp.com).

Vegem aquests senzills passos:

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

Heroku es pot instal·lar ja sigui Linux, Windows o MacOs. Primer caldrà crear-se un compte (per ara gratuït) i iniciar sessió amb “heroku login”. Per crear l'app és tan instantani com escriure “heroku create <nom app>”.

  • Desenvolupar l'aplicació

Abans de res, cal escollir el llenguatge de programació amb el qual 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 un llistat d'instruccions. Per exemple, si s'hagués escrit una app en Python i es volgués aixecar un servidor d'aplicacions Gunicorn per, per exemple, 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, seria suficient 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 <nom app>”.

  • (Opcional) Utilitzar una BBDD

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!

Ja està! Només queda 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 seu 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 com si fos 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’.

  • Objectes Externs

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 dins de Salesforce i es poden visualitzar, cercar i relacionar.

  • Crida Apex

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

Cases d'ús

El principal motiu amb el qual publiciten l'ús de Heroku és la tranquil·litat que dóna que s'ocupi de tota la infraestructura que cal muntar perquè un servei al núvol estigui sempre disponible, mentre un pot focalitzar-se en desenvolupar l'aplicació que necessiti.

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, rapidesa i la confiança de no haver de sortir de l'ecosistema Salesforce, són bons motius per optar per Heroku en cas necessari.

  • Pont entre Salesforce i una aplicació mòbil

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

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

Si ja existeix l'aplicació, per què tornar-la a fer? 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 una 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 dins de Salesforce aquestes dades per explotar-les.

Més enllà

Però en aquest blog anirem més enllà i pensarem en portar a Salesforce aquelles necessitats atípiques, però que podrien necessitar-se alguna vegada, i en les quals Apex flaqueja, com podrien ser:

  • Integrar-se amb cues de missatges

Cada cop més, s'estan potenciant les integracions basades en cues de missatges (MQTT, RabbitMQ…) ja que és una forma de no perdre informació en moments de col·lapse o 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.

  • SDKs

En entorns industrials o integracions amb maquinària antiga, sol ser habitual integrar-se amb SDKs 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 cal realitzar aquesta tasca des d'Apex, de moment és una limitació, ja que no es podria deixar en Apex, per exemple, un socket escoltant connexions. Pel que fa als WebSockets, poden utilitzar-se des del frontend, però, i si necessitem fer-los servir des del backend? des d'Apex seria molt complicat. Aquí entra en joc per tant també Heroku.

  • Gestió de vídeo i imatge

En aquest àmbit Apex es queda bastant curt. És una cosa que li perdonem, Apex no té com a focus d'atenció les imatges i el vídeo, i és un àmbit de la informàtica en què per ser competitiu cal especialitzar-se. Per a això ja existeixen multitud de llibreries, algunes de codi obert com 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 de 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

En ocasions 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 Einstein Analytics, de vegades la seva potència (i el seu preu) es excedeixen. Ja existeixen llibreries de codi obert, com NumPy o MatPlotLib, i que poden estar molt dins de Salesforce utilitzant Heroku.

  • Web scraping

Encara que pot haver-hi solucions amb JavaScript, si la solució es necessita en Apex, Heroku podria col·laborar-hi. Ja existeixen llibreries de codi obert especialitzades en web scraping com Selenium o ScraPy, que es situarien a pas d'integració (pas realment petit gràcies a Heroku).

Documentació

I fins aquí el tutorial en espanyol de com Heroku pot ajudar a estendre les funcionalitats de Salesforce. Per a més informació es recomana encaridament acudir al Heroku Dev Center. En ell es troba tota la documentació més tècnica sobre la configuració i ús de Heroku. I per descomptat, Trailhead sempre té com a suport petits mòduls on descobrir més sobre Heroku o guies pas a pas per arribar a ‘Hola món’ en uns minuts.

Potser et pot interessar

13 de febrer de 2023

Què és MuleSoft? Components d'Anypoint Platform?

És la pregunta que tots ens fem en escoltar aquesta paraula, en aquest article analitzaré les principals característiques i avantatges de MuleSoft, el producte d'integració de Salesforce, però per poder entendre què és MuleSoft, hem de primer aprofundir en la problemàtica que tracta de solucionar aquesta eina, i només d'aquesta manera podrem conèixer el seu veritable significat.

SEIDOR
10 de febrer de 2023

Els 5 Millors CRM de vendes 2023

Una eina CRM ofereix informació per crear campanyes de màrqueting més prometedores i efectives, així com potenciar la productivitat. El resultat és garantir la satisfacció dels clients i la seva fidelització, al mateix temps que millorem les nostres vendes.

SEIDOR
13 de febrer de 2023

Què és Microsoft Intune? Per a què serveix?

Amb el pas del temps, les empreses s'han adonat dels avantatges que suposa oferir als empleats entorns de treball flexibles, ja sigui en ordinadors de sobretaula o en dispositius mòbils per poder utilitzar-los en diferents entorns. Això ha donat lloc a buscar fórmules per consolidar l'administració del maquinari utilitzant una sola consola.

SEIDOR