Heroku EnterpriseにはHeroku Connectという名のSalesforceオブジェクトをHeroku Postgresに同期する機能があります。
Heroku Connectは、標準設定では2分間隔でのポーリング(定期確認)が最短なので、ユースケースによっては、Salesforceでのレコード変更が即座にデータベースに反映されない、ということが問題になることがあります。
そこで、加速ポーリング(https://devcenter.heroku.com/ja/articles/mapping-configuration-options#accelerated-polling-of-salesforce )を有効にするとStreaming APIを活用して、ベストエフォートながらニアリアルタイムでSalesforceオブジェクトのレコード変更に応じて、Heroku Postgresに同期を図ることができます。
流行り言葉でいえば、イベントベースの変更データキャプチャということで、公式のブログの2014年の記事が再掲されています。
この記事にあるようにSalesforce側では PushTopic という標準オブジェクトも使うので、Heroku ConnectのSalesforce接続に使うユーザーは PushTopic へのアクセス権が必要になります。
行数ブロック課金のHeroku Connectでは、SalesforceのAPIアクセス量の制約から解放されるというのがウリですが、この加速ポーリングを前提として構成したシステムで、肝心な時に加速ポーリングが無効な状態に戻ってしまうという現象で、大変な目にあったことがあります。
と同じ症状でした。まあこの辺は改善されたという話があるなら聞きたいところです。
Salesforceオブジェクトの変更データキャプチャで、同期先をRDBにできるのは、たぶんHeroku Connectだけなので、活用ポイントはそれなりにあるのかなと思います。
閑話休題
Salesforceのデータを顧客へ繋げる定番としてのHerokuとして、Dreamforce2024でのランボルギーニ社の事例には、Herokuの明るい未来がたくさーん詰まっていますが、生成AIも頑張らないといけない東京の正面からはあまりお話がないのは寂しいよな。
そんな中、先日のコミュニティでは、Jonathan BrownさんがDreamforceの復習をしてくれて、大変良い機会でした。
Streaming APIですが、時代はPub/Sub APIですよねと公式にも書いてありますが、まだMuleのコネクタしかないなあとか、仙台の方に頑張ってもらいたいとか思って念を送っておきます…