Heroku est un PaaS créé il y a bientôt 20 ans. Racheté par Salesforce en 2010, il reste assez confidentiel dans l’écosystème. Pourtant, la plateforme possède un atout unique dans un contexte Salesforce : le connecteur Heroku Connect.
Ce connecteur permet la synchronisation bidirectionnelle entre une base de données hébergée sur Heroku et Salesforce. En tant que Trailblazer de l’eco-système Salesforce, nous, BearingPoint avons souhaité mettre en lumière cette spécificité, et passer en revue les principales caractéristiques techniques et cas d’usage de la plateforme.
Avant de plonger plus spécifiquement dans le monde Heroku, il est important de redéfinir le concept de PaaS. Un PaaS, ou plateforme en tant que service, est une plateforme qui met à disposition des utilisateurs un environnement d’exécution pour les applications qu'ils ont développées. Il comprend infrastructure et outils.
En comparaison, un modèle SaaS (Software as a Service) comme Salesforce comprend également la partie applicative. Un IaaS (Infrastructure as a Service) ne fournit, lui, que la partie infrastructure (serveurs, stockage, réseau).
Un PaaS est donc un environnement qui offre aux développeurs un ensemble complet d'outils et de services pré packagés. Il abstrait l'infrastructure sous-jacente, et permet aux équipes de se concentrer sur le développement, sans se soucier de la gestion des serveurs ou du réseau. Un PaaS se caractérise par sa scalabilité (souvent automatique), ses services middleware intégrés, son déploiement simplifié et ses mises à jour automatiques. Il offre une bonne sécurité de base, et adopte généralement un modèle de tarification basé sur l'utilisation. C’est une approche qui accélère le cycle de développement, tout en réduisant la complexité opérationnelle pour les entreprises.
Heroku fait partie de la première vague de ce type de plateformes, apparues entre 2006 et 2008. La deuxième vague, apparue autour de 2014, fait écho à la démocratisation des conteneurs Docker.
Heroku se distingue des plateformes concurrentes par la simplicité de sa mise en œuvre et certaines fonctionnalités uniques :
Nous l’avons vu, Heroku se distingue des autres PaaS par son intégration native à l'écosystème Salesforce, via l’add-on Heroku Connect.
Dans le détail, comment fonctionne ce connecteur ?
Le mapping des données détermine comment les objets et champs Salesforce sont synchronisés entre Heroku et Salesforce. Il se fait simplement via l’interface utilisateur, qui permet de choisir quels objets doivent être synchronisés, leur direction (unidirectionnelle ou bidirectionnelle), puis, pour chacun de ces objets, quels champs. La majorité des objets standards et custom sont pris en charge. Les types de données sont gérés automatiquement.
2. Fréquence de synchronisation
La fréquence de synchronisation est configurable par objet, de 2 à 60 minutes. Elle est de 10 minutes par défaut.
Si besoin, il est possible d’activer l’option « Accelerate Polling », pour bénéficier d’une synchronisation en quasi-temps réel (quelques secondes).
3. Synchronisation via les API Salesforce
En arrière-plan, le connecteur Heroku Connect utilise les API Salesforce pour lire et écrire les données.
Il utilise 3 types d’API Salesforce, en fonction des besoins :
4. Gestion des conflits et erreurs
Heroku Connect gère automatiquement les rejeux en cas d’erreur. Il se base sur des files d’attentes qu’il dépile lorsque Salesforce est de nouveau disponible. En cas d’erreur fonctionnelle, l’erreur est loguée et visible directement dans le menu des logs. Une opération manuelle peut-être nécessaire pour débloquer la synchro de l’enregistrement (ex : règle de validation sur Salesforce non respectée qui empêche la sauvegarde).
5. Sécurité
Le connecteur est authentifié sur Salesforce par un token OAuth. Heroku gère automatiquement le refresh du token quand nécessaire. Toutes les communications sont bien sûr chiffrées par TLS.
6. Gestion des limites
Heroku Connect est conçu pour respecter les limites API de Salesforce, en regroupant et en échelonnant les requêtes si nécessaire.
Le nombre d’enregistrements synchronisés est illimité en théorie, mais dépend bien sûr de la capacité de la base Postgres. Elle doit donc être configuré en conséquence (storage max de 8TB sur les plans les plus élevés).
Heroku Connect permet donc de s’affranchir des problématiques techniques les plus complexes liées à la synchronisation. Cela permet notamment un plus grande rapidité de développement, une meilleure sécurité, plus de fiabilité dans les échanges et une grande scalabilité. Heroku Connect peut gérer de grands volumes de données (> 100 millions d’enregistrements) et ne nécessite aucun changement en cas de modification rapide dans les volumes traités.
L’intérêt d’Heroku Connect est donc lié à l’écosystème Salesforce. Les cas d’usages intéressants, fonctionnels comme techniques, résident dans le besoin de dupliquer et maintenir à jour des données Salesforce pour un usage externe.
Heroku Connect est particulièrement adapté dans les scénarios suivants :
1. Création d’interfaces utilisateur complexes, sur mesure, web ou mobile
L’utilisation d’Heroku Connect est particulièrement adaptée lors de la création d’application mobile devant s’appuyer sur des données Salesforce, tout en gérant des problématiques de fonctionnement hors connexion complexe. Le connecteur prend automatiquement en charge la synchronisation à la reconnexion, et la gestion des éventuels conflits. Il est également intéressant pour la création de portail web complexes, pouvant mélanger les sources de données, avec des besoins de personnalisations graphiques avancés et/ou des volumes utilisateurs très importants.
2. Analyses avancées et reporting en temps réel
En exploitant les capacités de la base de données Postgres, Heroku Connect facilite la réalisation de requêtes complexes et d'analyses poussées sur des données Salesforce. Il permet de générer des tableaux de bord et des rapports complexes en temps réel, sans impact sur les performances Salesforce.
3. Intégrations IoT et traitement de données massives
Heroku Connect permet la collecte et le traitement de grands volumes de données avant leur synchronisation avec Salesforce. Les données peuvent être chargées dans la base Postgres, éventuellement filtrées, transformées et agrégées, avant d’être synchronisées avec Salesforce. Cet usage s'avère particulièrement intéressant dans un cadre IoT, mais également pour la gestion de systèmes de réservation ou de stocks en temps réel, par exemple.
4. Migrations de données et intégrations multi-systèmes
Heroku et Heroku Connect n’ont bien sûr pas vocation à remplacer un middleware comme MuleSoft par exemple. Mais dans certains cas d’usages où une solution de stockage intermédiaire est nécessaire, comme les migrations de données complexes à plusieurs sources vers Salesforce, l’utilisation de la plateforme permet de simplifier et d’accélérer l’implémentation. Effectivement, comme dans le point précédent, l’utilisation de Postgres comme base intermédiaire permet la transformation et l’agrégation de façon simple (utilisant les standards SQL), avant la synchronisation avec Salesforce.
5. Intelligence artificielle
Heroku Connect peut également être une bonne option dans le cadre du développement de modèles de machine learning ou de système de scoring, utilisant les données Salesforce. L’utilisation de bibliothèques et de frameworks de ML avancés ou custom, pas toujours disponibles nativement dans Salesforce, permettent ainsi de créer des modèles complexes et performants.
Cette liste comprend les principaux cas d’usages, mais est évidemment incomplète. Chaque entreprise pourra trouver des cas d’utilisations techniques ou fonctionnels qui lui sont propres, et viendront simplifier l’intégration de Salesforce dans leur paysage applicatif.
BearingPoint utilise régulièrement la plateforme au cours de ses projets. Par exemple, une de nos dernières expériences est le développement d'une application mobile (PWA) déployée sur Heroku. Cette application fonctionne en mode déconnecté et utilise pleinement les capacités de synchronisation entre Heroku et Salesforce via Heroku Connect. Les données sont synchronisées automatiquement entre les deux plateformes, assurant une continuité des services, même sans connexion.
Nous l’avons vu, l'un des avantages majeurs de la plateforme est sa facilité de configuration. Un administrateur Salesforce peut la configurer sans avoir besoin de connaissances approfondies en PAAS. Cette simplicité permet une mise en place rapide et efficace des projets.
Le choix du langage de programmation est un point important à considérer. Les compétences nécessaires varient selon le langage choisi pour développer l'application ou le site. Il est important de noter qu'un développeur Salesforce n'a pas nécessairement les compétences pour développer en Node.js ou en PHP par exemple. Ce point doit être pris en compte lors de la constitution de l'équipe projet.
La gestion des droits d'accès nécessite une attention particulière. Le connecteur Heroku ne reproduit pas automatiquement les règles de visibilité de Salesforce. Par exemple, un utilisateur ayant un accès limité dans Salesforce pourrait voir toutes les données dans la base Postgres si des restrictions ne sont pas mises en place. Il est donc essentiel de prendre en compte ces aspects dès le début du projet, et développer la gestion des droits d'accès directement dans l'application pour reproduire les mêmes règles que dans Salesforce.
En résumé, Heroku est un PaaS facile à mettre en œuvre, et particulièrement adapté aux environnements Salesforce. Il possède une interface très simple et intuitive, supporte la plupart des langages clés, et offre des capacités d’intégration avec Salesforce uniques sur le marché. C’est une plateforme en constante évolution, qui s’adapte aux besoins changeants des développeurs et des entreprises.
Auteur :
- Yann Cherron, Senior Salesforce Architect