4 Star 7 Fork 1

Gitee 极速下载 / OAM-spec

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/oam-dev/spec
克隆/下载
9.design_principles.md 2.77 KB
一键复制 编辑 原始数据 按行查看 历史
Lei Zhang 提交于 2021-10-06 14:52 . Prepare v0.3.1: spec->model

9. Design Principles

The Open Application Model follows a set of design principles that ensure the clarity, richness, and extensibility of the model.

Separation of Concerns

Separation of Concerns is the design philosophy in which architectural choices are made with reference to the discrete problems being solved. Divisions in artifacts like "component" and "application", or "schematics" and "configuration" are made by dividing along functional or behavioral lines. By identifying roles and responsibilities of various groups of users, the spec is divided into concepts that match the problem space.

Runtime Neutrality

The Open Application Model is runtime-agnostic. It does not assume any runtime-specific features. Instead, it aims to provide a common vocabulary for application owners and operators to describe desired topologies and behaviors independent from any specific platforms.

Balance (Elegance)

While ensuring separation of concerns, OAM seeks to avoid unnecessary complexity to users who take on multiple roles in smaller teams. Simple scenarios should be achievable with minimal investment of time and energy, but complex scenarios should be accommodated without requiring re-platforming.

OAM offers multiple abstraction layers so that operational concerns can be captured independently of developer concerns.

Reusability

Components in the OAM schematics are designed to be re-usable and shareable. In addition, they remain independent of the code that they describe, making it possible to re-use the code (containers), and prevent "lock-in" conditions.

The model as a whole is designed to provide application "distributions" where the same application can be executed on different platforms without alteration. This portability of the application is intended to make the following scenarios not just possible, but easy:

  • Transferring an application from a developer workstation to a production cluster or service
  • Migrating from one implementation to another with no code changes
  • Creating marketplace-like environments where applications can be deployed onto customer platforms

Application Models Are Not Programming Models

There is a clear distinction between an application model and a programming model. An application model describes the composition of an application and the topology of its components. It is not concerned with how each component is implemented (language, design patterns, etc).

On the other hand, a programming model describes how an individual piece of software is composed. It is used by a developer to implement application components. The Open Application Model offers an application model that does not have any requirements of a programming model.

Previous
8. Practical Considerations
1
https://gitee.com/mirrors/OAM-spec.git
git@gitee.com:mirrors/OAM-spec.git
mirrors
OAM-spec
OAM-spec
master

搜索帮助