Hari Mohanraj
- SFDC Data Mover vs Heroku Connect
- Design and Implementation
- Hurdles and Learnings
- What's Next
Admissions producers need access to up-to-date data from Core to sell our long-form courses to prospective students.
- Accuracy and Currency
- Maintainability
- Bi-directional Data Movement
- Michelle
- Hopkins, Hari ft. Cory
- Dan Ross, John Walgren
- GetStuffDone (?)
- Salesforce (??)
- Authors of Salesforce plugins (???)
How It Works:
- Executes periodic jobs
- Reaches into Core's tables
- Interacts directly with Salesforce API
- Tight coupling to Core database
- ETL code is confusing
- Limited understanding of the application
- Fatal errors are a regular occurrence
- And debugging is difficult
- Sub-par performance
"...bi-directional synchronization between Salesforce and Heroku Postgres..."
- Authorize Heroku Connect (HC) to hook into a Salesforce instance
- Use HC to create staging tables in your app's DB to mirror Salesforce tables
- Put data into your staging tables, and HC will send it to Salesforce
- Change data in Salesforce, and HC will pull it down to your staging tables
- Last update wins
- Staging tables reduce coupling with Core's database
- Brand new code is less confusing (for now)
- HC abstracts away interaction with Salesforce
- Logs, metrics, errors are easier to access through HC interface
Core Model | Table Name |
---|---|
Metro | sfdc.metro__c |
Campus | sfdc.campus__c |
User | sfdc.account |
Lead | sfdc.interest__c |
Program | sfdc.product2 |
Instance | sfdc.date__c |
Invoice | sfdc.invoice__c |
Enrollment | sfdc.enrollment__c |
"I just changed, can I be synced to Salesforce please?"
"Worry not. I'll ask the right service object to do so."
"You're a Core Metro, right? Let me turn you into a Salesforce Metro and load you into our staging table."
- Synchronized switch-flipping with SFDC Data Mover
- One table at a time
- External dependencies and influences
- Heroku Connect is still young
- Lose control of your schema
- Data parity between production and staging
- Salesforce Data Model
- GSD - an external team
- Salesforce - Business interfering with technology
- Salesforce plugin authors
Fun Anecdote: Update Hell
- Cleaning up after itself
- Don't trust the UI
- Heroku Connect takes the liberty of modifying your database schema
- No artifact of these changes in codebase
Fun Anectode: Core DB Clone Wars
- Core Staging maintains data parity with Core Production
- Salesforce Staging (sandbox) does not
- Selective parity between Core Staging and Core Production
- Technical debt in our SFDC data model = 45k Honeybadger Errors
after_commit
plus double-tapping = race condition
- Shame!
- ETL in one object
after_commit
- Metrics
- A separate service
- Two-way data flow
- Heroku Connect - https://www.heroku.com/connect
- GA HC-Core Integration Docs - https://www.heroku.com/connect