Back to blog

One Codebase, Five Clouds: Designing Out Vendor Lock-In

By Rplus AnalyticsCase study11 Aug 2026

Cloud & Engineering · Case study

One codebase, five clouds: designing out vendor lock-in

A central government department asked a deceptively simple question: could its lakehouse run unchanged on any major cloud, and on-premises, without rewriting a line? We built the reference architecture two ways — once on Databricks, once on Snowflake — and compared what each would actually cost the department in freedom of movement.

5Deployment targets proven from one codebase — four hyperscalers plus on-premises
1Version-controlled codebase, deployed unchanged to every environment
2Cloud-agnostic patterns designed and evaluated side by side
5Governance services spanning all environments from a single control plane

Why the department asked

UK government is committing to public cloud at a scale that changes the negotiating arithmetic. On a single day in December 2023, three central government departments signed three-year hosting contracts with the same hyperscaler, worth £894m between them. To put that in proportion: those three contracts alone are worth more than the provider had earned across the entire decade-plus life of the G-Cloud framework they were procured through.

Contract values and framework comparison reported by Computer Weekly, January 2024.

Each contract can be defended on its own merits. Taken together, they describe a procurement pattern that quietly narrows the buyer's position — and lock-in is what makes that narrowing hard to reverse.

Lock-in is rarely a single decision. It accumulates. A team picks a managed ingestion service because it integrates cleanly with the storage layer they have already chosen. The warehouse is selected because it shares an IAM model with the rest of the estate. Dashboards, notebooks and governance tooling settle into the same provider's ecosystem, because doing otherwise means rebuilding integration plumbing from scratch.

By year three the platform is no longer running on a cloud. It is the cloud. Migrating away would mean rewriting ingestion pipelines in a different dialect, re-implementing security controls in a different IAM model, retraining engineers, and retiring years of dashboards built against proprietary SQL extensions. The exit cost is so high that the renewal conversation is over before it starts.

AWSHighHeavy reliance on proprietary services; Glue and EMR are tightly coupled to the AWS control plane.
AzureHighDeep integration between ADLS, Synapse/Fabric and Azure ML.
Google CloudMediumSome open components — Dataproc, BigQuery SQL — but still Google-optimised.
Oracle CloudHighStrong gravitational pull toward Oracle-native databases and pipelines.

Lock-in levels reflect Rplus Analytics' own assessment, based on platform work across UK central government since 2012.


What we built

The design principle was that the valuable parts of the platform — the data, the transformation logic, the governance model, the access controls — stay portable, even where some operational glue is provider-specific. In practice that resolves to a single rule: one codebase, deployed unchanged to every target.

Applications / Power BI Codebase A AWS Codebase A Version A.n Microsoft Azure Codebase A Version A.n Google Cloud Codebase A Version A.n Oracle Cloud Codebase A Version A.n On-premises Codebase A · Version A.n DATA MANAGEMENT Data catalogue Data quality Data governance MDM & 360 application Data marketplace GOVERNANCE & CATALOGUE PLANE
The reference architecture. The same version-controlled codebase deploys to four hyperscalers and to on-premises infrastructure; a single governance and catalogue plane spans all five. Nothing above the infrastructure layer is provider-specific, so a migration is a redeployment rather than a rebuild.

Concretely, that means storage in open table formats on object storage rather than proprietary warehouse-internal formats; transformation logic written against portable engines rather than provider-specific dialects; a unified governance and catalogue layer that travels with the data; and decoupled storage and compute, so each can scale — or be replaced — independently.

The layer-by-layer method behind this architecture is set out separately in our reference architecture for a cloud-agnostic lakehouse.

Our position

Portability is not an architecture preference. It is a commercial instrument. It gives a department a credible position at renewal: if the pricing is not right, the workload genuinely can move. That credibility is the negotiating leverage.


The two patterns, compared

Cloud-agnostic is not a single design. We built the architecture twice, on the two lakehouse platforms the department was realistically choosing between, so the trade-offs could be seen rather than argued about.

LayerDatabricks patternSnowflake pattern
Compute engine
Apache Spark on the Databricks runtime
Apache Spark with Snowpark
Lakehouse / warehouse
Databricks Lakehouse on Delta Lake
Snowflake
Integration & transformation
Informatica
Talend
Semantic & BI
Power BI
Sigma and Power BI
Orchestration
Apache Airflow
Apache Airflow
Cloud targets
AWS · Azure · Google Cloud · Oracle Cloud
AWS · Azure · Google Cloud · Oracle Cloud
On-premises parity
Same stack runs on-premises unchanged
No on-premises equivalent — falls back to the open stack

Both patterns satisfy the brief across the four hyperscalers. They diverge at the fifth target. Because the Databricks pattern rests on Spark and an open table format, the on-premises deployment is the same stack running on different infrastructure. The Snowflake pattern has no on-premises form: an environment that cannot reach the public cloud has to run something else, which reintroduces a second codebase — the exact condition the architecture was designed to eliminate.

That is not a verdict on either platform in general. It is a specific consequence of a department that needs on-premises capability alongside cloud, which many public sector organisations do.


Governance that travels

The portability argument fails if governance is rebuilt per environment. In both patterns the catalogue, data quality rules, governance policies, master data management and data marketplace sit in a single plane spanning every deployment target, rather than being reimplemented inside each provider's native tooling. Moving a workload moves its policies with it.

This is also what makes cross-departmental sharing tractable. Government increasingly needs data to flow between departments — fraud detection, benefits administration, public health, policy evaluation. When two departments standardise on different hyperscalers, every cross-departmental analysis becomes an integration project rather than a query. A governance layer that already abstracts across providers removes most of that friction.


Where to start

  1. Audit your portability ratio

    What percentage of the platform — by code volume, by storage cost, by user-facing surface — would survive a provider migration unchanged? Most teams are surprised by the answer.

  2. Move new workloads to open table formats first

    Don't try to migrate everything. Let new pipelines land on Delta or Iceberg from day one, and let the proprietary estate run down naturally.

  3. Centralise governance before centralising compute

    A governance layer that already abstracts across providers makes everything downstream easier — including the migration you may never need to make.


Working with Rplus

Rplus Analytics has supported UK central government data platforms since 2012. We help public sector organisations design cloud architectures that preserve negotiating power, support cross-departmental data sharing, and survive contract renewals intact.

Since2012 · UK central government and public sector data platforms
ApproachCloud-agnostic lakehouse on open table formats
Scale800 TB managed · 300+ data feeds
PartnersDatabricks · Informatica · AWS · Cloudera · Azure