You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1.purpose_and_goals.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,22 @@
1
1
# 1. Purpose and Goals
2
2
3
-
The goal of Open Application Model is to define a standard, runtime-agnostic way to describe application deployment across hybrid environments, clouds or even edge devices.
3
+
The goal of Open Application Model is to define a standard, infrastructure-agnostic way to describe application deployment across hybrid environments, clouds or even edge devices.
4
4
5
-
The central problem this specification seeks to address is how distributed applications can be composed and then successfully handed off to those responsible for operating them. The problem is not so much about how to write programs, but how to take components of a service oriented (or microservice oriented) architecture, and streamline the workflow that surrounds such applications.
5
+
The central problem this model seeks to address is how distributed applications can be composed and then successfully handed off to those responsible for operating them. The problem is not so much about how to write programs, but how to take components of a service oriented (or microservice oriented) architecture, and streamline the workflow that surrounds such applications.
6
6
7
7
For example, a contemporary cloud application may be composed of dozens of microservices, each responsible for a discrete chunk of what, broadly speaking, is "an application." Such applications need to be configured, deployed, audited, updated, and deleted. Sometimes the application must be treated as a whole, and sometimes finer levels of granularity are required. And most importantly, often such applications are managed not by one person or one team, but by multiple teams who must cooperate to achieve reliability, stability, and timeliness.
8
8
9
-
This specification provides a description of such applications, where the description is declarative, extensible and with best clarity. Furthermore, it suggests patterns and processes for managing such applications. The specification describes a model for cloud native (i.e. highly distributed) applications, encompassing public cloud technologies, on-prem solutions, and IoT/edge technologies. By specifying a common model, this specification provides a foundation for building application delivery systems with a standard yet higher level description of cloud native applications.
9
+
This model provides a description of such workflow, where the description itself is declarative, extensible and with best clarity. Furthermore, it suggests patterns and processes for operating such applications. The model will focus on cloud native (i.e. highly distributed) applications, encompass public cloud technologies, on-prem solutions, and IoT/edge technologies. This sets a solid foundation for modern application delivery systems with a standard yet higher level description of cloud native application deployment.
10
10
11
11
Non-goals include:
12
12
13
-
- Defining or prescribing specific orchestrating workflow.
13
+
- Defining or prescribing specific orchestrating tool.
14
14
- Defining the schemas of operational resources, for example (but not limited
15
15
to):
16
16
- Secrets (secure, encrypted values)
17
17
- Networks
18
18
- Volumes
19
-
- Describing or defining the runtimes themselves.
19
+
- Describing or defining the runtime infrastructures themselves.
Copy file name to clipboardExpand all lines: 2.overview_and_terminology.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ This section provides an overview of the Open Application Model (OAM) and its te
4
4
5
5
## Overview of the Model
6
6
7
-
This specification proposes a model that defines cloud native applications as follows:
7
+
This documentation proposes a model that defines cloud native applications as follows:
8
8
9
-
> A cloud native application is a collection of interrelated, but discrete components (services, tasks, workers) that, when coupled with configuration and instantiated in a suitable runtime, together accomplish a unified functional purpose.
9
+
> A cloud native application is a collection of interrelated, but discrete components (services, tasks, workers) that, when coupled with configuration and instantiated in a suitable runtime infrastructure, together accomplish a unified functional purpose.
10
10
11
11
In current release, this application model defines the following:
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification|
23
+
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model|
24
24
|`kind`|`string`| Y || Must be `ComponentDefinition`|
25
25
|`metadata`|[`Metadata`](2.overview_and_terminology.md#metadata)| Y || Entity metadata. |
26
26
|`spec`|[`Spec`](#spec)| Y || The specification for the component definition. |
@@ -49,7 +49,7 @@ Here are the attributes that provide top-level information about the component d
49
49
50
50
#### Schematic
51
51
52
-
This section declares the schematic of a component that could be instantiated as part of an application in the later deployment workflow. Note that OAM specification has no enforcement on how to implement the schematic as long as it could:
52
+
This section declares the schematic of a component that could be instantiated as part of an application in the later deployment workflow. Note that OAM itself has no enforcement on how to implement the schematic as long as it could:
53
53
1. model a deployable unit;
54
54
2. expose a JSON schema or equivalent parameter list.
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification|
17
+
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model|
18
18
|`kind`|`string`| Y || Must be `WorkloadDefinition`|
19
19
|`metadata`|[`Metadata`](2.overview_and_terminology.md#metadata)| Y || Entity metadata. |
20
20
|`spec`|[`Spec`](#spec)| Y || The specification for the workload definition. |
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
32
+
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model. |
33
33
|`kind`|`string`| Y || Must end with `ScopeDefinition`. |
34
34
|`metadata`|[`Metadata`](2.overview_and_terminology.md#metadata)| Y || Entity metadata. |
35
35
|`spec`|[`Spec`](#spec)| Y || A specification for scope attributes. |
@@ -64,7 +64,7 @@ spec:
64
64
name: healthscopes.core.oam.dev
65
65
```
66
66
67
-
The following sample scope capabilities are defined in the OAM specification.
67
+
The following sample scope capabilities are defined in this documentation.
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
21
+
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of documentation. |
22
22
|`kind`|`string`| Y || Must be `TraitDefinition`|
23
23
|`metadata`|[`Metadata`](2.overview_and_terminology.md#metadata)| Y || Information about the trait. |
24
24
|`spec`|[`Spec`](#spec)| Y || A specification for trait attributes. |
@@ -47,11 +47,11 @@ The [`Application`](7.application.md) section will describe how a user can attac
47
47
48
48
## Implementing a Trait System
49
49
50
-
> WARNING: this section is for OAM platform implementors only, feel free to skip this section if you are only interested in the OAM concepts.
50
+
> WARNING: this section is for OAM platform implementors (i.e. KubVela) only, feel free to skip this section if you are only interested in the OAM concepts.
51
51
52
-
The _traits system_ is defined in this specification as the way a runtime applies and manages operational behaviors to instances of components through traits.
52
+
The _traits system_ is defined in this documentation as the way a runtime applies and manages operational behaviors to instances of components through traits.
53
53
54
-
Runtime implementations of the specification MUST provide the traits system for attaching operational behaviors to instances of components.
54
+
Runtime implementations of the model MUST provide the traits system for attaching operational behaviors to instances of components.
55
55
56
56
### Traits System Rules and Characteristics
57
57
@@ -80,19 +80,19 @@ The traits system is designed to serve as an extension point for runtime operati
80
80
81
81
The implementation details of a trait is beyond the scope of this document. However, to allow runtimes to implement arbitrary traits while maintaining a degree commonality for application portability across runtimes, traits are categorized in the following way:
82
82
83
-
-**Core traits.** This specification defines a set of trait definitions with type names in the `core.oam.dev` group. These traits provide operational functionality that is necessary for the operation of certain workload types and component features. Runtimes are REQUIRED to implement these traits as defined in this specification.
83
+
-**Core traits.** This category defines a set of trait definitions with type names in the `core.oam.dev` group. These traits provide operational functionality that is necessary for the operation of certain workload types and component features. Runtimes are REQUIRED to implement these traits as defined in this model.
84
84
85
-
-**Standard traits.** The specification defines a set of trait definitions with type names in the `standard.oam.dev` group. These traits provide operational functionality that is commonly used by application operators and implemented by most runtimes. Runtimes are RECOMMENDED to use the standard trait definitions as defined in this specification when providing equivalent operational functionality to those listed in the standard trait definitions. In other words, if a runtime is implementing trait with behavior `foo` and a standard trait definition for behavior `foo` exists, the runtime SHOULD use the standard `foo` trait definition. Application operators that intend to maximize portability of their applications should use these trait definitions when available. Although this does not _guarantee_ portability of an application, it is designed to increase portability across runtimes.
85
+
-**Standard traits.** The category defines a set of trait definitions with type names in the `standard.oam.dev` group. These traits provide operational functionality that is commonly used by application operators and implemented by most runtimes. Runtimes are RECOMMENDED to use the standard trait definitions as defined in this model when providing equivalent operational functionality to those listed in the standard trait definitions. In other words, if a runtime is implementing trait with behavior `foo` and a standard trait definition for behavior `foo` exists, the runtime SHOULD use the standard `foo` trait definition. Application operators that intend to maximize portability of their applications should use these trait definitions when available. Although this does not _guarantee_ portability of an application, it is designed to increase portability across runtimes.
86
86
87
-
-**Extension traits.** The specification allows a runtime to define its own set of trait definitions that are unique to that runtime in addition to those defined by core and standard traits. A runtime can choose to implement any set of traits in this category with any definition. Extension trait type names MUST NOT be in the `core.oam.dev` or `standard.oam.dev` groups.
87
+
-**Extension traits.** The category allows a runtime to define its own set of trait definitions that are unique to that runtime in addition to those defined by core and standard traits. A runtime can choose to implement any set of traits in this category with any definition. Extension trait type names MUST NOT be in the `core.oam.dev` or `standard.oam.dev` groups.
88
88
89
89
### Trait Characteristics
90
90
91
91
An individual trait MAY be tied to specific workloads (or MAY apply to all workloads). A trait MAY declare which workload it applies to.
92
92
93
-
The specification does not set requirements about how simple or complicated a trait may be. Some might expose an expansive set of configurable options while others may expose no configurable options. And it is not required that a trait be as exhaustive as its underlying technology. For example, an implementation of an autoscaling technology may provide numerous ways of determining when a component should scale. But the trait may only surface a few of those. Likewise, multiple autoscaling traits may be defined (each uniquely named), where each trait exposes a different subset of configurable options. Or one large trait may expose all of the possible autoscaling configurations.
93
+
The model does not set requirements about how simple or complicated a trait may be. Some might expose an expansive set of configurable options while others may expose no configurable options. And it is not required that a trait be as exhaustive as its underlying technology. For example, an implementation of an autoscaling technology may provide numerous ways of determining when a component should scale. But the trait may only surface a few of those. Likewise, multiple autoscaling traits may be defined (each uniquely named), where each trait exposes a different subset of configurable options. Or one large trait may expose all of the possible autoscaling configurations.
94
94
95
-
Implementations of an OAM runtime SHOULD make all supported traits discoverable in the format explained below.
95
+
Implementations of an OAM platform SHOULD make all supported traits discoverable in the format explained below.
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
19
+
|`apiVersion`|`string`| Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of documentation. |
20
20
|`kind`|`string`| Y || Must be `Application`|
21
21
|`metadata`|[`Metadata`](metadata.md)| Y || Information about the application. |
22
22
|`spec`|[`Spec`](#spec)| Y || A specification for application attributes. |
Copy file name to clipboardExpand all lines: 8.practical_considerations.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,30 +4,30 @@ This section provides additional guidance on practical considerations for implem
4
4
5
5
## Proposal Stages and the Maturity of the Specification
6
6
7
-
The specification is currently in Rough Draft, working toward Working Draft. After Working Draft, the specification will become a Final Specification (e.g., 1.0).
7
+
The model is currently in Rough Draft, working toward Working Draft. After Working Draft, the specification will become a Final Specification (e.g., 1.0).
8
8
9
-
- During _Rough Draft_, no part of the specification is considered stable
9
+
- During _Rough Draft_, no part of the model is considered stable
10
10
- During _Working Draft_, features may be added, and issues fixed. Breaking changes may occur, but as an irregularity
11
-
- During _Final Specification_, the specification will only be updated with errata, grammatical fixes, and clearly marked "clarifying text"
11
+
- During _Final Specification_, the model will only be updated with errata, grammatical fixes, and clearly marked "clarifying text"
12
12
13
13
Once a Final Specification is released (e.g., 1.0), a new _version_ of the spec (e.g., 1.1) may be started at the rough draft phase.
14
14
15
15
## Media Types
16
16
17
-
The media types for schematics will be defined when the specification enters Working Draft status. Preliminarily, the media types will be of the form:
17
+
The media types for schematics will be defined when the model enters Working Draft status. Preliminarily, the media types will be of the form:
18
18
19
19
-`application/oam.TYPE.v1+json`, where `TYPE` is replaced by the name of the type (e.g. `component`).
20
20
21
21
## Security
22
22
23
-
This specification, in its current form, does not mandate a specific set of security policies. However, it does provide guidance on certain aspects of security:
23
+
This model, in its current form, does not mandate a specific set of security policies. However, it does provide guidance on certain aspects of security:
24
24
25
25
- OCI/Docker images MUST be referenced by SHA wherever possible
26
26
- File formats MUST be converted to a canonical format so that they can be hashed
27
27
28
28
When these two conditions are satisfied, systems can be constructed in which a digest verification of schematics will preserve the immutability of all components of the system. To wit, if a schematic references an image with a hash, then the process to verify the digest of the schematic also ensures that the image pulled has the same reference used to generate the schematic.
29
29
30
-
Other security details, such as network transport security or securing data at rest, are considered beyond the scope of this specification.
30
+
Other security details, such as network transport security or securing data at rest, are considered beyond the scope of this model.
Copy file name to clipboardExpand all lines: 9.design_principles.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# 9. Design Principles
2
2
3
-
The Open Application Model follows a set of design principles that ensure the clarity, richness, and extensibility of the specification.
3
+
The Open Application Model follows a set of design principles that ensure the clarity, richness, and extensibility of the model.
4
4
5
5
## Separation of Concerns
6
6
@@ -20,7 +20,7 @@ OAM offers multiple abstraction layers so that operational concerns can be captu
20
20
21
21
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.
22
22
23
-
The specification 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:
23
+
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:
24
24
25
25
- Transferring an application from a developer workstation to a production cluster or service
26
26
- Migrating from one implementation to another with no code changes
0 commit comments