hexagon

Twelve Expectations for Developer Platforms

I - Declarative Architecture

Application architecture is expressed and evolved directly in source code

Developers should have the freedom to define their own software architecture. Similar freedoms are already common within software code, where developers regularly manipulate modules, classes, and functions to meet their needs. Historically, software architecture has been limited to the patterns and flexibility with rigid constraints imposed by infrastructure and organization design.

Everything about software architecture should be defined within it's software source code. Declaring architecture within source code endows it with the same rapid iteration properties as software. Each offering will have it's own higher-level building blocks for expressing your architecture, but a few common elements include:

  • Components can be any form running or hosting your software. Examples include services, tasks, and statics.
  • Resources are any stateful dependency your software expects available when running. Examples include databases, caches, and queues.
  • Routes are key in many applications for managing HTTP traffic and targeting different components.

architecture diagram

Developers platforms should be flexible to enable developers to adapt and evolve their software architecture with their evolving needs. It should be as easy to add a new service to your architecture as it is to add a new module in your source code.