Cloud Sovereignty + 15 Factor App: The Architectural Bridge Between Law and Technology
TL;DR The Cloud Sovereignty Framework of the EU defines what digital sovereignty aims to achieve – …
Diese Serie erklärt systematisch, wie moderne Software compliant entwickelt und betrieben wird – von EU-Regulierungen bis zur technischen Umsetzung.
The 12-Factor App, formulated by Heroku in 2011, has shaped an entire generation of cloud and SaaS applications. It clearly articulated many practices that seem self-evident today – such as the separation of configuration and code or the avoidance of local state.
Since then, the world has moved on:
The 15-Factor App is not a departure from the 12 factors but their logical continuation. The original principles remain valid. They are complemented by three additional factors that fill gaps that were simply not in focus in 2011:
This expanded set addresses exactly the issues that make the difference in modern distributed systems: clean interfaces, operational transparency, and comprehensive security.
The 15-Factor App is divided into several thematic blocks that reinforce each other. It is worth understanding them as an interconnected system – not as a checklist of isolated “best practices.”
Codebase – One Codebase, Many Deployments
An application has exactly one codebase in a version control system. Different environments (development, staging, production) use different deployments of the same codebase. This creates clarity in ownership and versioning.
Dependencies – Explicitly Declare and Isolate
Every dependency is explicitly declared; the application does not rely on global system packages. This enables reproducible builds and minimizes “works on my machine” effects.
Config – Configuration in the Environment
Everything that varies between deployments – credentials, endpoints, feature flags – belongs in the environment, not in the code. This makes deployments flexible, more secure, and better automatable.
Backing Services – As Attached Resources
Databases, queues, object storage, or email services are interchangeable resources. Changing the service requires a configuration change, but no code refactor.
Build, Release, Run – Strict Separation
Build creates the artifact, release combines artifact and configuration, run executes the application. This separation is the foundation for reproducible deployments, rollbacks, and clear responsibilities along the toolchain.
Processes – Stateless Execution
Application processes are stateless. Persistent state resides in backing services, not in memory or the local filesystem. This facilitates scaling, failover, and self-healing.
Port Binding – Expose Services via Port
Applications bring their own HTTP server and expose their functionality over ports. They are not dependent on pre-installed web servers. This fits ideally with container and Kubernetes models.
Concurrency – Scale Horizontally
Load is handled by starting additional processes (or pods), not by “bigger machines.” Different workload types (web, worker, batch) are treated as separate process types.
Disposability – Fast Start, Graceful Stop
Processes should start quickly and handle signals like SIGTERM gracefully. This improves deployments, resilience, and autoscaling and is a prerequisite for efficient use of platform resources.
Dev/Prod Parity – Align Environments
Minimize technical, temporal, and organizational differences between development, staging, and production. The goal is for developers to work in environments as close to production as possible, reducing surprises at go-live.
Logs – Event Streams
Applications write logs to stdout/stderr. Collection, storage, and evaluation are handled by the platform, for example, through tools like Loki or VictoriaLogs. The application is thus independent of log infrastructure details.
Admin Processes – One-Off Processes
Administrative tasks like database migrations or maintenance jobs run in the same environment as regular processes, with the same codebase and configuration. This prevents “special paths” that are difficult to trace in case of errors.
API First – Contracts Before Implementation
APIs are first defined as contracts (e.g., with OpenAPI) and agreed upon with stakeholders. Only then does implementation follow. This increases decoupling between teams, facilitates parallel development, and reduces integration risks.
Telemetry – Observability by Design
Logs alone are not enough for distributed systems. Telemetry encompasses structured metrics, traces, events, and – where necessary – real user monitoring. It allows for proactive problem detection, performance bottleneck identification, and reliable SLA monitoring.
Authentication & Authorization – Security at Every Layer
Every API, every service endpoint is clearly authenticated and authorized. Modern standards like OAuth2, OpenID Connect, and JWT are central components. Role and permission models (RBAC) are considered early, not added later.
Factors 13–15 address three areas of tension that often make the difference between “it works, somehow” and “it’s manageable, secure, and developable.”
In a microservice architecture, the API is effectively the most important interface between teams, services, and sometimes even organizational boundaries. If this contract is vague, the entire organization suffers:
API First solves this problem by placing the API contract at the center:
Distributed systems naturally have more sources of error. A single request may pass through:
Without thoughtful telemetry, cause-effect chains are hardly traceable in case of errors. Telemetry as the 14th factor means:
This is not just an operational issue. In regulated environments (e.g., under NIS2, effective from 18.10.2024), the ability to detect, analyze, and demonstrate incidents is a core element of compliance.
The 15th factor addresses a development that has gained massive importance in recent years: moving away from implicit trust in “inner networks” to clear identities and permissions at all levels.
Specifically, this means:
In an API-driven world, security is thus an integral part of system design – not just a gateway feature. The 15-Factor App makes this explicit.
The power of the 15 factors is particularly evident in complex, distributed systems, such as:
In such environments:
The result is an architectural guideline that integrates both technical excellence and governance and compliance aspects – a decisive argument when companies in Europe want to seriously advance their digital sovereignty.
Principles are only as valuable as they are lived in everyday life. This is where ohMyHelm comes in: as an application packaging tool within the ayedo platform, preparing applications consistently for cloud-native environments on Kubernetes – with the 15 factors as a guideline.
In the spirit of Codebase, Config, and Dev/Prod Parity, ohMyHelm follows a clear approach:
TL;DR The Cloud Sovereignty Framework of the EU defines what digital sovereignty aims to achieve – …
TL;DR Multi-Tenant deployments consolidate many customers in a shared environment with logical …
TL;DR ohMyHelm is a universal Helm chart wrapper that delivers production-ready workloads without …