a week ago
Hi All,
We are just getting started with a Databricks on Azure Proof of Concept platform. Right now we are thinking about the deployment of workloads using data bundles driven by GitHub Action workflows. The documents recommend using a single repo for all data bundles and managing some level of separation with folders and code owner files. Our concern comes from the idea of having multiple unrelated groups pushing and pulling from the same repo - and all the potential risks that poses. The alternative is to have multiple repos - one per team - but our searched suggest this adds a lot of administration overhead and duplication or code resulting in a more complex maintenance profile. We are wondering what people do out in the real world who are using databricks in large organisations? Any thoughts or suggestions will be gratefully received.
Cheers
a week ago
Hi MrDecisive,
More details here
a week ago
We run this at a mid-size scale (multiple business units on one Databricks-on-Azure workspace set) and landed on a hybrid, which I'd recommend over either pure extreme:
- One repo per team/domain for the actual pipeline code (bundle resources + src). This gives natural blast-radius isolation, independent CI/CD pipelines, and CODEOWNERS enforcement without fighting folder-level permissions inside a single shared repo.
- A shared/platform repo for common bundle templates, reusable Python packages (utils, connectors, logging wrappers), and CI workflow templates that team repos pull in via a published internal package or reusable workflow. This is what kills the "duplication" pain people cite as the monorepo's advantage - you're not duplicating logic, you're just not co-locating it in the same git history as unrelated teams.
- Environment/target definitions (dev/staging/prod, cluster policies, service principals) live in the platform repo too, referenced by each team repo's databricks.yml via variable overrides, so the platform team retains control of where things deploy without touching each team's pipeline code.
Why not the single-repo-with-folders approach the docs suggest: at any real headcount, "separation with folders and code owner files" degrades badly. Branch protection rules, PR review requirements, and CI triggers all get harder to scope precisely per-folder, and one team's bad merge/rebase can block CI for everyone. It works fine at PoC scale, which is where you are now, but it's worth revisiting before you onboard a 2nd or 3rd team.
One thing multi-repo genuinely costs you: cross-team bundle dependencies (Team A's pipeline needs Team B's Delta table) still need a contract. We handle that with Unity Catalog grants plus a lightweight schema registry doc, not git.
a week ago
Hi MrDecisive,
More details here
a week ago
Based on your requirements, I would recommend adopting a dedicated repository per team. While it may require some upfront effort in terms of setup and governance, it will significantly streamline development and deployment processes in the long run. Decoupling teams and codebases improves autonomy, reduces dependencies, and simplifies maintenance.
A single repository is more suitable in a Data Fabric architecture where multiple teams contribute shared code, definitions, or assets that need to be centrally managed and consumed by downstream systems. In such scenarios, a fork-based workflow may be more practical than relying solely on pull requests.
Overall, unless you are implementing a Data Fabric model or building a quick proof of concept, a repository-per-team approach aligns better with Data Mesh principles and is generally the preferred option.
Friday
Thanks for all the replies so far - definitely food for thought. I think as this is a POC we will probably go with the mono repo for easy of deployment with the view that as we learn more about our potential customer landscape we can always pivot to separate repos or a hybrid approach as best suits our position. Again thanks for all the really good information. Watch this space!