Introduction
In today’s digital landscape, making software increasingly benefits from architectural flexibility and accelerated feedback for developers. Software architecture naturally evolves with customer needs, organizational growth, and technological change necessitating flexibility. However, the rate at which you can make new features, fix bugs, and resolve incidents is throttled by how fast developers can receive actionable feedback. Tensions between these two objectives are often exacerbated by limitations inherent in the ways we're used to running software.
Developer Platforms offer a unified solution for running software with greater architectural flexibility and accelerated feedback for developers. These expectations represent the aspirational capabilities and experience for developers from a mature Developer Platform. While specific implementations may differ across industries and technologies, the overarching goals and benefits remain consistent. A successful Developer Platform increases development velocity, lowers cost, and boosts developer satisfaction.
Audience
Developers, including anyone involved in making software, particularly in technical roles. Engineers and leaders involved with the running of software.
The Twelve Expectations
I - Declarative Architecture
Application architecture is expressed and evolved directly in source code
II - Code Neutral
Developers have the freedom to choose code languages, frameworks, and libraries
III - Infrastructure Abstracted
Infrastructure is an implementation detail and should not be exposed in raw form
IV - Local/Cloud Parity
Developers can iterate and collaborate with consistent local runtime environments
V - Easily Automatable
Automatic workflows for feedback and deployments on code repository events
VI - Cost Conscious
Developers can make informed decisions with cost estimation and reporting
VII - Dynamically Scalable
Platforms can scale from infrequent dev usage through major events in production
VIII - Inherently Secure
Deploy with confidence knowing that your application is instrumented with best security practices
IX - Realtime Inspectability
Developers can inspect running state with terminals, debuggers, and database clients
X - Unified Observability
Developers can get valuable insights into how everything has been running with a unified experience
XI - Discoverable Problems
Proactive detection and collection of problems like alarms, concerns, and user reports
XII - Inclusive Incidents
Incidents can be swiftly identifed, triaged, and resolved while engaging all stakeholders
Background
The ideas in this document represent the collective insights from our team at Noop while pursing the next generation of running software. We've all dedicated years to improving the delivery of software at companies ranging from startups to enterprises while closely collaborating with developers. We believe that every substantial improvement in running software has fundamentally come through the further empowerment of developers.
In this document, we hope to instigate a conversation about the future of running software along with a shared set of goals and vocabulary. We drew inspiration from the 12 Factor App for the format of this document and applaud the collective impact their ideas have had on software.