A little over a year ago, I wrote about my experience with Microsoft Fabric: The Good, The Bad & the Ugly. The verdict was mixed: great ideas, solid fundamentals, but a platform that felt rushed to market. The Ugly section basically said: I wouldn’t trust this for real production workloads yet. That post got a lot of traction and a lot of responses from people who felt the same way. But, a lot has changed since then. So I figured it was time for a follow-up.

What I Said Then
To quickly recap: The Good was the idea, OneLake, and genuinely great support. The Bad was the lack of Infrastructure as Code support, inconsistent UX across items, and a licensing model that required two support tickets to untangle. The Ugly was the honest conclusion that Fabric wasn’t ready for serious production workloads.
Again, if you haven’t read it, here’s the original post.
The Biggest Change: Terraform Provider Goes GA
Let me get straight to the main point: When I wrote the original post, one of my biggest criticisms was the lack of Infrastructure as Code support. There was a Terraform provider in development, but it was explicitly labeled as not production ready. For any team that takes deployment seriously (repeatable environments, CI/CD pipelines, no ClickOps in production) this was a blocker. In March 2025, just after I published my article, that changed. The official Terraform provider for Microsoft Fabric reached General Availability.
With the provider now GA, you can reliably manage workspaces, lakehouses, pipelines and more through IaC, the way infrastructure should be managed. I’ve been using it extensively this last year, and I’m happy with it. It’s officially maintained by Microsoft, and they have proven to be very active pushing updates.
Though I have to place a slight comment here, I am very confused about why Microsoft only supports Terraform, and not their own (!) Bicep templating. I mean it’s fine… But it feels weird.
What Still Holds Up
The things I praised in the first article have not regressed, which sounds like a low bar but is not really — platforms at this stage of maturity can go either way.
OneLake is still excellent. The centralised storage built on Delta Lake, with multi-cloud connectivity and Spark on top, remains one of the best things about Fabric. It genuinely feels like the right architectural bet.
Support is still surprisingly good. I’ve had a few more interactions since the original post and the quality has held up. Fast responses, people who actually know the product. This still doesn’t feel like a given for a platform at this price point, especially since platforms like AWS charge a jawdropping premium for this.
What Has Improved
Beyond Terraform, the platform has been moving.
The CI/CD story has grown up alongside the Terraform provider. Git integration with both Azure DevOps and GitHub is now solid, deployment pipelines support dev/test/prod promotion with approval gates, and there is a built-in diff experience so you can review workspace changes before committing (though it’s very basic). A year ago, the answer to “how do I manage Fabric like a real platform?” was essentially “good luck.” Now there is a real answer. I’m still missing approval steps, and I would appreciate a git-first approach for everything, but the current state is workable and better than a year ago.
Another significant improvement is OneLake Security. One of the quiet frustrations with Fabric was that each workload had its own security model — Spark did its thing, SQL did its thing, Power BI did its thing, and you spent your time reconciling them. The newly introduced OneLake Security model aims to fix this: security lives with the data itself, enforced at the OneLake layer, and respected regardless of which engine touches it downstream. It is still in preview, but the direction is right, and it directly addresses something that made serious enterprise adoption hard to justify.
On the cost side, Spark Autoscale Billing is worth calling out. Spark jobs can now run in a pay-as-you-go mode, provisioned outside your regular capacity so they do not starve other workloads. For teams with variable or unpredictable Spark usage, this changes the economics meaningfully.
Also, the licensing complexity is still not perfect, but it is no longer the support-ticket minefield it was. To me it’s clear that everything is moving towards the F-SKU model, which is fine. In my experience you get quite a lot of bang for your buck, though native autoscaling on a capacity level is still missing and would be a nice addition. We’re currently doing this ourselves with Data Activator and an event-triggered pipeline, not pretty but does the trick.
What Is Still Bad
I’d be doing you a disservice if I pretended everything is fixed. Two things still bother me.
Purview integration is still not where it should be. Governance in Fabric still requires navigating the M365/Azure/Fabric triangle in ways that feel clunky. Roles and permissions are better than they were, but if you’re expecting seamless, governed, enterprise-grade data management out of the box you should temper those expectations.
Feature fragmentation hasn’t fully gone away either. Fabric still carries the weight of its history. When you’re working across Data Pipelines, DataFlows, notebooks and reports, you can still feel that these were separate products before someone decided to wrap them in a unified UI.
So, Where Does Fabric Stand Now?
My conclusion in the original post was that Fabric had real potential but wasn’t ready for serious production workloads. I stand by that assessment for what Fabric was in early 2025.
For Fabric today, I’d revise it.
The Terraform provider going GA removed the single biggest architectural blocker for production adoption. OneLake and Spark were already solid. Support is still good. The rough edges are being sanded down with each release cycle.
Fabric is no longer a platform I’d recommend only for PoCs and analyst-owned solutions. It’s becoming a platform I’d recommend for production workloads, though with a few notes. You still need to account for the Purview limitations. You still need to know that some UX inconsistencies exist. But the foundation is sound, and Microsoft is clearly still heavily investing in getting this right.
A year ago, I wrote that Fabric needed more work before I’d trust it with real products. It’s done some of that work. Not all of it, but enough to change the conversation. For what it’s worth, I am currently using it in production.
Hi, I’m Bastiaan 👋🏼 Founder of datalyft, a small data agency helping companies transform their raw data into real value. I write about the Modern Data Workflow, where I explore tools & processes to supercharge your data capabilities. Follow me for more!