-
Notifications
You must be signed in to change notification settings - Fork 6
docs(developers): platform service design #124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
8d1755b
docs(developers): platform service design
christophrj 616ce76
docs(developers): platform service domain
christophrj 90458e5
docs(developers): typos
christophrj 16f5055
docs(developers): fix deployment link
christophrj 56f2a6a
docs(developers): platform persona reference talk
christophrj ae58639
Update docs/developers/platformservice/01-design.mdx
christophrj d2bbdac
docs(developers): platform provider to service renaming
christophrj File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| --- | ||
| sidebar_position: 1 | ||
| id: design | ||
| --- | ||
|
|
||
| # Design | ||
|
|
||
| This document defines the terminology for Platform Services within the OpenControlPlane project and clarifies their scope, responsibilities and boundaries. In particular, it distinguishes Platform Services and Service Providers. | ||
|
|
||
| ## Domain | ||
|
|
||
| Platform services deliver platform capabilities within the OpenControlPlane ecosystem. They follow similar architectural patterns to [Service Providers](../serviceprovider/01-design.mdx) and [Cluster Providers](../clusterprovider/04-design.mdx). | ||
|
|
||
| When mapped to a layered architecture using the personas of **Platform Owner**, **Service Provider** and **User**, Platform Services operate in the **Platform Owner** layer. Together with [Cluster Providers](../clusterprovider/04-design.mdx) they build the foundation of OpenControlPlane: | ||
|
|
||
| | Persona | OpenControlPlane Concept | Responsibility | | ||
| | :------ | :--------------- | :------------------- | | ||
| | Platform Owner | Platform Service and [Cluster Provider](../clusterprovider/04-design.mdx) | Provide platform capabilities consumed by the layers below | | ||
| | Service Provider | [Service Providers](../serviceprovider/01-design.mdx) | Provide managed services consumed by the layer below | | ||
| | User | Not an OpenControlPlane concept but a human end user | Generate value from the services provided by Platform Owners and Service Providers | | ||
|
|
||
| Some Platform Services are required to operate OpenControlPlane, such as those included in the [openmcp-operator](https://github.com/openmcp-project/openmcp-operator). Others are optional and extend the platform's capabilities to support specific use cases. | ||
|
|
||
| :::info | ||
| For more details on platform personas, see [Why Kubernetes Is Inappropriate for Platforms, and How to Make It Better](https://www.youtube.com/watch?v=7op_r9R0fCo). | ||
| ::: | ||
|
|
||
| ### API | ||
|
|
||
| A Platform Service defines one or more `APIs` that consumers use to interact with its functionality. | ||
|
|
||
| ```mermaid | ||
| graph LR | ||
| CON[Consumer] | ||
| API[API] | ||
| CON -->|manages instances|API | ||
| ``` | ||
|
|
||
| A consumer may be a human or another system. | ||
|
|
||
| :::info | ||
| A Platform Service may introduce a user-facing `API` but is not required to do so. Most Platform Services operate without exposing user-facing APIs and provide their capabilities internally to the Platform Owner and Service Provider layers (see [Domain](#domain) and [Service Provider Comparison](#comparison-to-service-providers)). | ||
| ::: | ||
|
|
||
| ### Config | ||
|
|
||
| A Platform Service defines a `Config` resource that contains service-specific settings. This allows platform owners to configure the service for different deployment scenarios and to enable or disable features. | ||
|
|
||
| ```mermaid | ||
| graph LR | ||
| %% Platform Owner | ||
| OP[Platform Owner] | ||
| PS[PlatformService] | ||
| PSC[Config] | ||
| OP -->|manages instances|PS | ||
| OP -->|manages instances|PSC | ||
| ``` | ||
|
|
||
| ### Deployment Model | ||
|
|
||
| A Platform Service runs on the platform cluster and reconciles its platform cluster `API` and/or onboarding cluster `EndUserAPI`. It creates and manages resources on the platform cluster. | ||
|
|
||
| ```mermaid | ||
| graph TD | ||
| %% Onboarding Cluster | ||
| subgraph OnboardingCluster | ||
| USRAPI[EndUserAPI] | ||
| end | ||
|
|
||
| %% Platform Cluster | ||
| subgraph PlatformCluster | ||
| OP[openmcp-operator] | ||
| PS[PlatformService] | ||
| PSC[Config] | ||
| API[API] | ||
| end | ||
|
|
||
| %% edges | ||
| PS -->|reconciles|API | ||
| PS -->|reconciles|USRAPI | ||
| PS -->|uses|PSC | ||
| OP-->|reconciles|PS | ||
| ``` | ||
|
|
||
| For more details on cluster types, see [Clusters and Namespaces](../clusters-and-namespaces.md). | ||
|
|
||
| ## Comparison to Service Providers | ||
|
|
||
| The following table distinguishes Platform Services and Service Providers based on where they introduce new APIs. | ||
|
|
||
| | Cluster | Platform Service | Service Provider | | ||
| | :------ | :--------------- | :--------------- | | ||
| | Platform cluster | ✳️ | ❌ | | ||
| | Onboarding cluster | ✳️ | ✅ | | ||
| | Control Plane | ❌ | ✅ | | ||
|
|
||
| ✅ MUST introduce API on that cluster type. | ||
| ✳️ MAY introduce API on that cluster type. | ||
| ❌ MUST NOT introduce API on that cluster type. | ||
|
|
||
| :::info | ||
| Note that the Service Provider [Config](../serviceprovider/01-design.mdx#config) is not considered a service. | ||
| ::: | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| --- | ||
| sidebar_position: 2 | ||
| id: develop | ||
| --- | ||
|
|
||
| # Develop | ||
|
|
||
| :::info Coming Soon | ||
| A comprehensive guide for developing Platform Services from scratch is coming soon. | ||
| ::: | ||
|
|
||
| Platform Services deliver complete platform capabilities and services within the OpenControlPlane ecosystem. They follow the same general patterns as Service Providers and Cluster Providers. | ||
|
|
||
| For now, you can: | ||
| - Refer to the [Deploy Guide](./03-deployment.mdx) for the common deployment contract | ||
| - Check the [Service Provider Develop Guide](../serviceprovider/02-develop.mdx) for general patterns that apply to all provider types |
4 changes: 2 additions & 2 deletions
4
...lopers/platformprovider/01-deployment.mdx → ...elopers/platformservice/03-deployment.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,12 @@ | ||
| --- | ||
| sidebar_position: 1 | ||
| sidebar_position: 3 | ||
| id: deploy | ||
| --- | ||
|
|
||
| # Deploy | ||
|
|
||
| :::info Coming Soon | ||
| Documentation for deploying Platform Providers is coming soon. Platform Providers follow the same deployment contract as Service Providers and Cluster Providers. | ||
| Documentation for deploying Platform Services is coming soon. Platform Services follow the same deployment contract as Service Providers and Cluster Providers. | ||
| ::: | ||
|
|
||
| For now, please refer to the [Service Provider Deploy Guide](../serviceprovider/05-deployment.mdx) for the common deployment contract that applies to all provider types. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| --- | ||
| sidebar_position: 4 | ||
| id: examples | ||
| --- | ||
|
|
||
| # Examples | ||
|
|
||
| :::info Coming Soon | ||
| Platform Services examples and templates are coming soon. | ||
| ::: | ||
|
|
||
| Platform Services deliver complete platform capabilities within OpenControlPlane. Stay tuned for official examples and reference implementations. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| { | ||
| "label": "Platform Services", | ||
| "position": 4 | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like that you are describing the personas here once again 💯 But we are now somehow inconsistent with
developers/serviceprovider/design#terminologywhere we say "Platform Operator" instead of "Platform Owner" (we do should call them "Platform Owner" throughout the documentation).Do we want to refactor this as part of this PR or make a follow-up PR? :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There might be more occurrences of the wrong persona name throughout the documentation as well 😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree that same terminology should be applied to all of our docs. I just had a look at the service provider doc and I feel that it is not just a simple replacement but requires some additional work so I would want to address this in a separate PR.