Stuff about Software Engineering

Category: Cloud

Hosting Location ≠ Jurisdictional Independence

Executive Summary

Running a workload in an EU data center is not the same as operating independently of non-EU jurisdictions. For sovereignty, the important questions are not only where the infrastructure is physically located, but also who owns, controls and operates it, which legal regimes apply to the provider, and whether a third-country government could materially affect continued access.

If AI becomes critical enterprise infrastructure, jurisdictional resilience should be treated as a business-continuity concern rather than merely as a data-residency or procurement issue.

Hosting Location and Jurisdiction Are Different Things

Cloud providers increasingly offer products described as EU sovereign, European sovereign or sovereign cloud. These offerings can provide real controls, including EU data residency, locally operated infrastructure, restricted administrative access, EU-based personnel, encryption and key-management controls, and contractual commitments around support and operations.

Those controls matter, but they do not by themselves establish jurisdictional independence. A service can be physically hosted and operationally isolated in Europe while the ultimate provider, parent company, software supply chain or control structure remains subject to another jurisdiction.

The practical sovereignty test is therefore whether geopolitical, legal or trade changes in a third country could materially affect access to the service.

Europe Is Beginning to Distinguish Levels of Sovereignty

The European Commission’s current Cloud and AI Development Act framing is useful because it separates physical location from deeper forms of sovereignty. The proposed framework describes four levels:

  1. Level 1 — data is processed and stored in infrastructure located in the EU.

  2. Level 2 — providers must demonstrate independence from third countries and transparency over their software supply chain.

  3. Level 3 — providers must be owned and controlled from the EU, with additional requirements.

  4. Level 4 — providers provide full transparency and control over the software supply chain and no interference from a third country.

Source: European Commission — Cloud and AI Development Act

The important point is that physical location is only one dimension. Independence, ownership, operational control and freedom from third-country interference are separate considerations.

Data Residency Is Not Sovereignty

Data residency answers where data is stored and processed. Sovereignty is broader: who can access and operate the service, which legal regimes can compel the provider, who controls the software and infrastructure, and whether the service can continue if geopolitical relationships deteriorate.

European data-protection guidance following the Schrems II judgment already reflects this distinction by requiring organizations to consider whether laws and practices in a third country could prevent a provider from complying with European safeguards.

Source: European Commission — Standard Contractual Clauses and Schrems II

The same reasoning is relevant to strategic technology dependency even when the immediate issue is not personal-data transfer.

Sovereignty Is Also About Continuity

For organizations, the more important issue may be continuity of strategic capability rather than compliance alone. If AI becomes embedded in research, supply chain, commercial operations, software engineering and knowledge work, dependence on a single geopolitical technology ecosystem becomes a business risk.

The relevant scenario is not necessarily that a provider voluntarily chooses to stop serving us. Regulation, sanctions, export controls, national-security measures or broader geopolitical events can constrain what a provider is legally permitted to deliver. In that situation, contractual assurances about an EU-hosted region are only as durable as the legal and operational independence behind them.

This should therefore be framed as resilience rather than vendor distrust. The issue is whether strategically important AI capabilities should depend entirely on continued permission from one jurisdiction.

Architectural Implication

The answer is not to abandon US hyperscalers or frontier-model providers. We should use the best services available where they create value, while ensuring that strategically important AI capabilities have a credible path to alternative jurisdictions and providers if needed.

That implies designing for:

  • portable workloads

  • model independence where practical

  • open or replaceable interfaces

  • data portability

  • infrastructure portability

  • open models as a credible fallback

  • access to EU-controlled compute and inference

  • avoidance of dependencies that cannot be reproduced outside a single provider ecosystem

This is consistent with the EU Data Act, which pushes cloud providers toward interoperability, switching and open interfaces so customers can move between providers without losing data or functionality.

Sources:

Sovereign AI Should Be an Option, Not Necessarily the Default

This is not an argument that every workload should immediately run on European-owned infrastructure. It is an argument for maintaining a viable option.

If strong open models continue to close the capability gap with proprietary frontier models for many enterprise workloads, then a sovereign execution path becomes increasingly practical. That path could involve European-owned GPU infrastructure, European inference providers, open-weight models, managed or self-hosted open-model inference, European model providers, and workloads capable of moving between US, EU and other regional ecosystems.

The strategic value is that organizations would not need to create that capability from scratch after a crisis has already begun.

A Useful Test

For any service described as sovereign, ask what legal and operational mechanisms would prevent a government outside the EU from suspending, restricting or otherwise affecting the service through the ultimate provider. If the answer is only that the servers are located in Europe, then the service provides data residency; that alone does not establish jurisdictional independence.

Conclusion

Sovereignty is a spectrum, not a hosting-region label. Physical location, operational separation, personnel and key control all matter, but so do ownership, jurisdiction, software supply-chain control and the ability to operate independently of third-country intervention.

For strategic AI infrastructure, the objective should be to avoid single-jurisdiction dependency and preserve a credible path to continue operating critical AI capabilities under European legal and operational control if circumstances require it.

Hosting location ≠ jurisdictional independence.

Azure Functions

These are my thoughts and key take aways from working with Azure Functions for a while now.

Creating a Function in the Azure Portal is easy as Pie

Creating your first Function in the Azure Portal is a simple process and you can use pretty much any language you want. I prefer PowerShell for prototyping and management stuff – like reacting to events where I have to fire some PowerShell command to handle something in Azure – and I use JavaScript/TypeScript for the more heavy programmatic tasks like creating “real” solutions.

As Microsoft adds support for more languages the possibilities of using serverless Functions will extend to other areas. Recently Python was GA’ed (see below) and as soon as PowerShell for Functions is GA’ed “DevOps”-people can become Azure Function Developers too. Functions is not only for web services and databases but for all things serverless! Think Flow/Logic Apps -> Functions written in PowerShell which do IT management operations.

Great Developer Experience

The developer experience for creating, running and testing Functions locally is just perfect. You can do everything completely locally and even offline – just like any other local development stack/platform/toolchain.

Local development in Visual Studio Code on a Mac

Then push changes to a central repo like Azure DevOps where CI/CD pipelines can build and deploy the Function to Azure completely automated.

On the left building the Function deployment package and on the right deploying the package to Azure

If you don’t have Azure DevOps then Functions can pull in code from pretty much any cloud reachable Git repo – it’s completely cross platform.

There is complete support for Visual Studio and Visual Studio Code and lots of other editors for creating Functions so that writing, editing, testing, debugging and so on is a first class experience.

Triggers & Bindings

Functions can be triggered or react to a range of builtin sources like Azure Event Grid, Service Bus, Cosmos DB and so on – and of course HTTP requests. So calling and activating Functions is really easy.

Bindings are a way of declaratively receiving the input from a trigger or other resources and passing the output of the Function to a receiver – like Azure Cosmos DB, storage or Service Bus. This makes it very easy to react to events – get and process data and output the result with very little friction. Moving data in and out of Cosmos is almost like magic (Please note that more complicated usage of Cosmos requires the use of the SDK!).

For me it has completely replaced the necessity to create Web APIs in .NET or Node and deploy to Azure Web App. If you’re doing web services today using the regular technology platforms and you want to move to Azure I would recommend looking into Functions rather than Web Apps for hosting web services.

Proxies & API Management Gateway

Function Proxies is like a miniature API Manangement Gateway (APIM) which can route URL based requests to methods in your Function or even other Functions if you’re scaling out at the implementation level.

For instance a proxy could route requests to /api/shipments to the actual implementation in the “GetShipments” method.

I also really like the actual APIM and the integration with Functions but updating the API specification in the APIM when a Function is updated is a bit of a pain. I would never expose a Function to the internet just through the URL or even Proxies I would always use APIM as the front door.

Automated Scaling

You can deploy using either App Plan or Consumption Plan and unless you have very specific requirements (or extremely high load) I can’t think of a reason not to choose Consumption Plan and just let Azure handle everything.

Some of our APIs are hammered in the morning and Azure just scales the number of “servers” up in seconds and scales back down again when things settle. We haven’t missed a single call yet with Consumption Plan and we did that on App Plan because we ran out of horse power during that single it will never happen freak influx of data moment.

© 2026 Peter Birkholm-Buch

Theme by Anders Noren — Up ↑