From a62652bba16ba159da24387144440ff4d9653074 Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Mon, 30 Sep 2019 15:12:26 -0700 Subject: [PATCH 1/7] Initial model changes. --- 2.overview_and_terminology.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/2.overview_and_terminology.md b/2.overview_and_terminology.md index 4c8911a..f2e9f00 100644 --- a/2.overview_and_terminology.md +++ b/2.overview_and_terminology.md @@ -18,15 +18,16 @@ In many organizations, some individuals may fulfill more than one of the above r This specification proposes a model that defines cloud native applications as follows: -> 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. +> A cloud native application is a collection of interrelated, but discrete _components_ (services, tasks, workers) that are grouped as an _application_. This _application_ is combined with a configuration and instantiated in a suitable runtime to accomplish a unified functional purpose. The application model defines the following: - - _Components_ represents a runnable unit, together with a description (schematic). + - _Components_ represent runnable units, together with a description (schematic). - _Workload types_ identify the different workloads that a component can execute. + - An _application_ is a group of _Components_ that represents a deployable unit of functionality. - _Traits_ are overlays that augment a component with additional operations-specific features. Traits represent operator concerns, not developer concerns. - _Application scopes_ represent application boundaries by grouping components with common properties or dependencies. - - An _application configuration_ describes a set of component instances, their traits, and the application scopes in which they are placed, combined with configuration parameters and metadata. + - An _application configuration_ describes an application's traits, and the application scopes in which they are placed, combined with configuration parameters and metadata. Thus, an _application_ is a collection of _components_ with a set of operational traits and scoped together into one or more application boundaries. From 6f61f2b8cd5856784ce08f049ad496dbac222fa1 Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Tue, 1 Oct 2019 07:45:22 -0700 Subject: [PATCH 2/7] Added Applications and made some small adjustments to account for the addition of applications. --- 1.purpose_and_goals.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/1.purpose_and_goals.md b/1.purpose_and_goals.md index e462821..84d86de 100644 --- a/1.purpose_and_goals.md +++ b/1.purpose_and_goals.md @@ -9,9 +9,10 @@ This specification provides a description of such applications, where the descri This open specification defines: - __Component schematics__, where developers declare the operational characteristics of the code they deliver _in infrastructure neutral terms_. -- __Application scopes__, a way to group components into loosely coupled applications with common characteristics. +- __Scopes__, a way to loosely couple components into groups with common characteristics. +- __Applications__, where developers group all of the components together into a single, deployable unit and specifies cross-component info, such as health scopes. - __Traits__ for assigning operational features to instances of components. -- __Application configuration__, defines a deployment of components, their traits, and application scopes. +- __Application configuration__, defines a configuration of an application, its traits, and additional scopes, such as network scopes. - __Workload types and configurations__, which describe the underlying runtime for a particular workload, as well as exposing per-application configuration. Additional goals of the specification are to: From f1af1b0928ec64c82ba55038f8b821f620b2f819 Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Tue, 1 Oct 2019 08:38:41 -0700 Subject: [PATCH 3/7] First cut at a conceptual model diagram. --- assets/conceptual-model-diagram.png | Bin 0 -> 21605 bytes assets/conceptual-model-diagram.pptx | Bin 0 -> 39467 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/conceptual-model-diagram.png create mode 100644 assets/conceptual-model-diagram.pptx diff --git a/assets/conceptual-model-diagram.png b/assets/conceptual-model-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..583e1bc17e2b3dca2b97b386f462c51cabce90b7 GIT binary patch literal 21605 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 literal 0 HcmV?d00001 diff --git a/assets/conceptual-model-diagram.pptx b/assets/conceptual-model-diagram.pptx new file mode 100644 index 0000000000000000000000000000000000000000..1b444d4bfa2436d4247d7c285f190de8c9df395f GIT binary patch literal 39467 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 literal 0 HcmV?d00001 From f6d1c6f41fb7d54b5ed11f49a2043abee36b95e4 Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Tue, 1 Oct 2019 09:35:51 -0700 Subject: [PATCH 4/7] Small updates to the conceptual model and incorporated it into Section 1 --- 1.purpose_and_goals.md | 6 ++++-- assets/conceptual-model-diagram.png | Bin 21605 -> 29616 bytes assets/conceptual-model-diagram.pptx | Bin 39467 -> 39702 bytes 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/1.purpose_and_goals.md b/1.purpose_and_goals.md index 84d86de..4532421 100644 --- a/1.purpose_and_goals.md +++ b/1.purpose_and_goals.md @@ -6,9 +6,11 @@ For example, a contemporary cloud application may be composed of dozens of micro This specification provides a description of such applications, where the description is aimed at separating the concerns of developers from the concerns of operators. Furthermore, it suggests patterns and processes for managing such applications. The specification describes a model for cloud native (i.e. highly distributed) cloud applications, encompassing public cloud technologies, on-prem solutions, and IoT/edge technologies. By specifying a common model, this specification provides a foundation for multiple implementations of a shared description of cloud native applications. -This open specification defines: +This open specification defines the following model: -- __Component schematics__, where developers declare the operational characteristics of the code they deliver _in infrastructure neutral terms_. +![Conceptual Model Diagram](./assets/conceptual-model-diagram.png) + +- __Component__, where developers declare the operational characteristics of the code they deliver _in infrastructure neutral terms_. - __Scopes__, a way to loosely couple components into groups with common characteristics. - __Applications__, where developers group all of the components together into a single, deployable unit and specifies cross-component info, such as health scopes. - __Traits__ for assigning operational features to instances of components. diff --git a/assets/conceptual-model-diagram.png b/assets/conceptual-model-diagram.png index 583e1bc17e2b3dca2b97b386f462c51cabce90b7..5ef7e0d98b27de35217636f111250203b22b6b86 100644 GIT binary patch literal 29616 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 diff --git a/assets/conceptual-model-diagram.pptx b/assets/conceptual-model-diagram.pptx index 1b444d4bfa2436d4247d7c285f190de8c9df395f..88d1b5eec5abbd8f1f801dc9d665d1ee91b6228a 100644 GIT binary patch delta 6280 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 delta 6033 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 From 290c01d31daafe03fcc0a4fbe285426d1a6b2ecf Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Tue, 1 Oct 2019 10:54:33 -0700 Subject: [PATCH 5/7] Small phrase update. Checking in so it isn't lost. --- 1.purpose_and_goals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.purpose_and_goals.md b/1.purpose_and_goals.md index 4532421..5e1686d 100644 --- a/1.purpose_and_goals.md +++ b/1.purpose_and_goals.md @@ -12,7 +12,7 @@ This open specification defines the following model: - __Component__, where developers declare the operational characteristics of the code they deliver _in infrastructure neutral terms_. - __Scopes__, a way to loosely couple components into groups with common characteristics. -- __Applications__, where developers group all of the components together into a single, deployable unit and specifies cross-component info, such as health scopes. +- __Applications__, where developers group components together into a single, deployable unit and specifies cross-component info, such as health scopes. - __Traits__ for assigning operational features to instances of components. - __Application configuration__, defines a configuration of an application, its traits, and additional scopes, such as network scopes. - __Workload types and configurations__, which describe the underlying runtime for a particular workload, as well as exposing per-application configuration. From c0c8c89ead110a0b830933d359ef121ef5b3d8f2 Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Tue, 1 Oct 2019 18:26:57 -0700 Subject: [PATCH 6/7] More terminology updates, including changing 'Container' to 'Workload' to fit with the rest of the model. --- 2.overview_and_terminology.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/2.overview_and_terminology.md b/2.overview_and_terminology.md index dbcb186..93f184b 100644 --- a/2.overview_and_terminology.md +++ b/2.overview_and_terminology.md @@ -6,9 +6,9 @@ This section provides an overview of the specification and the terminology. It b As a foundation for the specification, the following roles are defined. These are extracted from a combination of user stories, research, and user input. While this is not an exhaustive list of possible roles, these are the roles identified as the primary targets for this specification. -- __Developers__ deliver business value in the form of code. While they should understand the operational characteristics of the code they deliver, they are unconcerned with _how_ operational requirements are fulfilled. For instance, a developer may be aware that their code writes data to a specific path on a file system, but need not concern themselves with what kind of volume (disk) is mounted to that path or how that dependency is fulfilled. +- __Developers__ deliver business value in the form of code. While they should understand the operational characteristics of the code they deliver, they are unconcerned with _how_ operational requirements are fulfilled. For instance, a developer may be aware that their code writes data to a specific path on a file system, but need not concern themselves with what kind of volume (disk) is mounted to that path or how that dependency is fulfilled. This role includes the responsibilities of application architect. -- __Application operators__ deliver business value by configuring, installing, and managing components and/or applications such as updating, scaling, auto recovery, etc. Unlike developers and application composers, operators are concerned with _how_ a component or application's operational requirements are fulfilled. For instance, if a developer has declared that a component writes data to a specific path on a file system, an operator may concern themselves with mounting an appropriate volume to that path. +- __Application operators__ deliver business value by configuring, installing, and managing components and/or applications such as updating, scaling, auto recovery, etc. Unlike developers, operators are concerned with _how_ a component or application's operational requirements are fulfilled. For instance, if a developer has declared that a component writes data to a specific path on a file system, an operator may concern themselves with mounting an appropriate volume to that path. - __Infrastructure operators__ deliver value by managing low-level infrastructural components. This may range from managing the physical hardware in an on-premises network to directly managing cloud service offerings in a public cloud. Infrastructure operators are less concerned with the particular configuration needs of _an application_, focusing instead on the big picture of how an enterprise's overall infrastructure is managed. For example, an infrastructure operator may manage the underlying storage offerings that are used for provisioning persistent storage. @@ -22,11 +22,13 @@ This specification proposes a model that defines cloud native applications as fo The application model defines the following: +![Conceptual Model Diagram](./assets/conceptual-model-diagram.png) + - _Components_ represent runnable units, together with a description (schematic). - _Workload types_ identify the different workloads that a component can execute. - An _application_ is a group of _Components_ that represents a deployable unit of functionality. - _Traits_ are overlays that augment a component with additional operations-specific features. Traits represent operator concerns, not developer concerns. - - _Application scopes_ represent application boundaries by grouping components with common properties or dependencies. + - _Scopes_ represent application boundaries by grouping components with common properties or dependencies. - An _application configuration_ describes an application's traits, and the application scopes in which they are placed, combined with configuration parameters and metadata. Thus, an _application_ is a collection of _components_ with a set of operational traits and scoped together into one or more application boundaries. @@ -123,7 +125,7 @@ A component schematic is composed of the following pieces of information: - Metadata: Information _about_ the component, primarily directed toward the user - Resource requirements: The additional minimum needs that must be satisfied in order for the component to be executed. For example, minimum memory, CPU, and filesystem mounts - Parameters: The parameters that can be adjusted for specific runtime configuration -- Containers: A list of the runnable pieces (OCI images, functions, etc.) used by this component. All built-in component workload types have at least one associated container +- Workload: A list of the runnable pieces (OCI images, functions, etc.) used by this component. All built-in component workload types have at least one associated container ### Workloads and Workload Types From 39b14d30bbbbc1fb36e9f1d11e83a084bb0b76bb Mon Sep 17 00:00:00 2001 From: John Sheehan Date: Fri, 4 Oct 2019 11:33:37 -0700 Subject: [PATCH 7/7] Small change from Container to Workload --- 2.overview_and_terminology.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/2.overview_and_terminology.md b/2.overview_and_terminology.md index 93f184b..0891974 100644 --- a/2.overview_and_terminology.md +++ b/2.overview_and_terminology.md @@ -125,7 +125,7 @@ A component schematic is composed of the following pieces of information: - Metadata: Information _about_ the component, primarily directed toward the user - Resource requirements: The additional minimum needs that must be satisfied in order for the component to be executed. For example, minimum memory, CPU, and filesystem mounts - Parameters: The parameters that can be adjusted for specific runtime configuration -- Workload: A list of the runnable pieces (OCI images, functions, etc.) used by this component. All built-in component workload types have at least one associated container +- Workload: A list of the runnable pieces (OCI images, functions, etc.) used by this component. The initial version will only support container workloads. ### Workloads and Workload Types @@ -146,7 +146,7 @@ A trait is described as: ### Application Configuration -An application configuration is a resource that declares how an application (described as an application schematic and component schematics) can be instantiated and configured, including which parameter overrides and add-on traits. +An application configuration is a resource that declares how an application can be instantiated and configured, including which parameter overrides and add-on traits. An application configuration has the following parts: @@ -157,7 +157,7 @@ An application configuration has the following parts: ## Representing Hydra Objects as Schematics -The Hydra specification represents Hydra schematics (components, trait definitions, application configurations, etc.) as _schematics_. A schematic is a structured document that provides a declaration of an object or an object's desired state. Throughout this specification, schematics are represented in [YAML]() formatting. However, nothing in this specification forecloses the possibility of representing schematics as JSON documents or other similarly structured textual or binary representations. +The Hydra specification represents Hydra schematics (components, applications, trait definitions, application configurations, etc.) as _schematics_. A schematic is a structured document that provides a declaration of an object or an object's desired state. Throughout this specification, schematics are represented in [YAML]() formatting. However, nothing in this specification forecloses the possibility of representing schematics as JSON documents or other similarly structured textual or binary representations. ### The Structure of a Schematic