HNHacker News
TopNewBestAskShowJobs

ianyanusko

151 karma · joined December 28, 2020

YC Badge: 0x96eeaa2dc7985d8c0d1bd52ed5855a5aeec0ca0b
submissionscomments
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
With Salesforce specifically, getting a stable and reliable event-driven stream. That's why we ended up adopting a hybrid approach of subscribing to pub/sub events, but also periodically polling the REST API in case pub/sub misses anything.

Salesforce's scattered docs don't make best practices super clear, so designing the syncs took us some time.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thank you! It means a lot to see your comment here
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Hubspot and MySQL are both next on our list for deploying out of beta! I'll shoot you a message when they're out :)
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Good question. Our ultimate goal is to be the go-to for any two-way data syncs.

We think the Salesforce syncing market by itself is 500 million to 1B. If you start including all of the tools we have our eyes on (Hubspot, Monday, ERPs), the market size comfortably gets into the billions.

Going after Heroku Connect makes sense as a starting point, but we've got our sights beyond that.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Gotcha, that makes sense. From our perspective, the one-way sync market (backups and ETL/rETL) was already saturated with heavily-capitalized players who were hitting each other hard with marketing dollars. We didn't feel that we had a unique insight with one-way syncs, but did feel like we'd come across something unique with two-way use cases.

So we decided to double down in this smaller, underserved area for now as we try to build something people love, even if it's a bit niche.

That being said, there probably is room in the backup space for challengers against the incumbents - it's a massive market.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Nice! Great point about the round trip - we do something similar for formulas and auto-generated fields like `Id`. That's awesome you built this in-house.

> Syncing data from Salesforce (to seed a database for example) is done via REST too. It works OK.

Have you thought about using the Bulk API for seeding? We started relying on that instead of REST, which helped us seed massive DBs much faster / more efficiently.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
1. Yes, on our roadmap for Q1! Getting that request a lot 2. We don't currently sync metadata 3. Our footprint on your Salesforce API depends on whether you're using polling or streaming, and then it depends on the cadence of your syncs or frequency of changes. You can see some data on best/worst case scenarios here: https://docs.usebracket.com/connecting/salesforce_api 4. Yup, we priced based on the amount of data kept in sync. You can see more here: https://www.usebracket.com/pricing
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Agreed on the trickiness! Our early users largely told us they preferred one source to take precedence in a conflict, and would rather set that general rule than review every conflict manually. But a handful have expressed interest in the latter approach, so it's on our roadmap to build.
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Nice, I hear you on "fun and aggravating" :)

Sounds similar to the use cases we're seeing, where it's not only easier to process/build on Postgres, but also saves you on the Salesforce API.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
> How specific is your solution to Postgres? Could it be ported to another db engine?

Our polling approach is relatively database-agnostic. We just need to handle each DB's quirks with our transformers (e.g. dealing with MySQL's lack of BOOL field types).

Streaming is currently Postgres-specific. We're planning on rolling out support for MySQL next, after we've finished our Hubspot integration. Do you have a specific DB in mind?

> (And, how are conflicts resolved? In a huge system with millions of records coming from everywhere it can fast become nightmarish?)

The primary source wins any merge conflicts that happen within a sync period. With polling, it's pretty straightforward: at every poll, we see how each side has changed, and for any record pairings for which there were edits on both sides, we prefer the primary source.

With streaming, we employ a hybrid method, where we only poll when events occur in either Salesforce or Postgres. If at that poll, the same record has been edited on both sides since the previous poll, we still prioritize the primary source (Salesforce). You can read the step-by-step flow here: https://docs.usebracket.com/streaming#the-streaming-sync-met...

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Really helpful on both fronts, thanks for the thoughts. Both the sandbox and migration use cases make a lot of sense.
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Agreed! We’re big fans of consolidating in Postgres. We’re also hearing some downstream benefits to having things scaled in Postgres (makes reporting easier, allows the data team to use SQL rather than hitting an API, etc) from our users.
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Sorry, forgot to respond to one piece:

> Many clients I can think of this being most useful for would rather host it themselves, is that an option?

Right now you can self-host the associated datasets (like the Postgres event log table), but we're still working on allowing you to self-host the entire service. Stay tuned :)

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thank you!

> do you support subsetting a data source -- only sync records matching criteria?

In a one-way sync from Postgres to Salesforce, yes, you can apply filters using a SQL statement, but we’re working on adding this to the Salesforce side as well as two-way syncs. From your perspective, how would you want to set these filters? A SOQL query, or something else?

> Do you support to/from different instances of the same connector (e.g. Salesforce to Salesforce)?

Yup, our infra is data-source agnostic! But Salesforce <> Salesforce is not heavily tested, so there may be some funky behavior with oauth tokens if you’re trying to connect objects from two different instances during onboarding. Curious what use case you have in mind?

> Can you perform any transformations like map over the data, normalize or denormalize tables, etc?

Besides the one-way SQL filter I mention above, we try to make field mapping easy between the sources by automatically transforming when necessary (e.g., transforming a Salesforce picklist to a Postgres integer and vice versa). But we’re working on allowing users to create more detailed field-level transformations in the next few months.

Thanks for the feedback! Totally hear you on SSL, we’ll move that to every tier.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thanks for the comment - are you saying that one-way sync has a 10x wider audience than two-way syncs?
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Agreed that many technical founders build on the pain points they've experienced themselves. I'm curious your take on why the managed services approach is hard to scale?

IMO, the reason many YC companies struggle with enterprise sales is because it's generally much harder than PLG, with long sales cycles and delayed feedback loops. It was definitely a learning curve for us!

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thanks! Going to shoot you a note
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
We use a custom trigger to build an event log in Postgres. We actually found it more straightforward to use this approach than to use the WAL packages we considered.

If you're curious, you can read more about our approach to it and the actual SQL we use here: https://docs.usebracket.com/streaming#postgres

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thanks! We've had to internalize the lesson "startups can do one thing well at a time" :)

At first, it was a matter of doing discovery with people who we thought would find Bracket useful. These weren't sales convos, but pure feedback/discovery. From that process, we got a good sense of which roles face these pain points, and exactly what those pain points are.

Since then we've split our time between 1) writing content/distributing it in places people would find it helpful and 2) reaching out directly to people who would use Bracket. In the latter case, we really don't like generic sales campaigns, so we spend a good bit of time crafting each message.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
For sure, definitely has not been an easy problem to solve. The two-way syncing is one tough element (for the reasons mentioned above), and configuring our requests to the Salesforce API in a way that minimizes our footprint (while still keeping syncs fast) has been another tricky task.
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Thank you!
ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Yeah exactly. One-way data syncing is a big market, and these companies have plenty of use cases to tackle, which is why I think two-way syncing has not been a priority for them.

That’s one reason why people trying to stand up two-way syncs have been stuck with dated tech (Heroku Connect) or have had to build in-house.

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Yup! We offer two ways of interacting with Salesforce: polling and streaming. The benefits of streaming are faster syncs and optimized Salesforce API usage.

Right now, we're focusing on use cases that require changes to be synced within a minute. Fivetran and its ilk are generally more focused on large data batches at less frequent intervals (e.g., to unlock 1-minute syncs at Fivetran, you must be on the Enterprise plan, whereas we offer that out of the gate with the Starter plan).

ianyanusko··on Launch HN: Bracket (YC W22) – Two-Way Sync Between Salesforce and Postgres
Fivetran and Hightouch do ELT and reverse ETL, respectively, which are one-way syncs. While Bracket can handle one-way syncs, two-way syncs (in situations where you need writes from both Postgres and Salesforce to sync) are our bread and butter.

We’ve worked with some folks who were cobbling together ELT and rETL to achieve a type of two-way sync, but they faced three problems with this approach: most importantly, handling for infinite loops, where an insert in one data source triggers an insert in the other, which then gets picked up anew, etc. Second, it wasn’t clear how to handle merge conflicts when the same record is edited from both sides (we give priority to the primary source). Finally, it was frustrating to debug problems when having to log into two separate tools.

ianyanusko··on Fertility Scenarios
Good point. Even if we're stuck on Earth for a while, I wonder if the repression he mentions will manifest itself meaningfully. E.g. today, how repressed are the Amish, who have famously high birth rates? Exempt from SS taxes and ACA requirements, few incidents of "outsiders" harassing them, etc. I find it hard to imagine pro-natal subcultures will really feel targeted unless there are other factors at play.
ianyanusko··on Ask HN: Any interesting books you have read lately?
A trilogy of books from Reza Aslan: God: A Human History, Zealot, and No god but God.

These follow 1) the evolution of human conceptions of God, 2) the historical Jesus, and 3) the historical Muhammad, respectively. They're extremely accessible and have deeply influenced my thoughts on religion.

ianyanusko··on Arc Browser 1.0
A step in the direction of a personalized software future. Congrats, Arc team - rooting for you.
ianyanusko··on Ask HN: Are there better alternatives to disagree and commit?
Perhaps tangential, but my team and I have been able to avoid a lot of disagreement by asking ourselves if we truly need to make a decision in that moment. We found that we'd often debate/disagree about issues that were not pressing. Even more specifically, we noticed that many debates were over issues where we were nearly guaranteed to have better information in one week, one month, etc, when we'd truly need to make a decision.

So why debate now, only to have to debate again with new info?

We still practice disagree & commit among the three founders, which is simply a majority vote game, but now the number of heated debates has decreased.

ianyanusko··on Ask HN: Could you share your personal blog here?
https://somethingaboutcats.substack.com/

Exploratory, but the general themes are startups, religion, the Beatles, article reviews, and travel!

ianyanusko··on Kagi raises $670k
So happy to see this at the top of Hacker News. Rounds < $1 million need to be celebrated more. Rooting for Kagi.
Page 1 of 2Next →