-
Notifications
You must be signed in to change notification settings - Fork 3
ADR specifying the Servala framework requirements #165
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 10 commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
eee3674
initialize ADR document
tobru 0b7128b
initial content for requirements
tobru 4820608
Apply suggestion from @lieneluksika
tobru 40032a2
continuation
tobru 79bb837
typos
tobru 35b28f3
make vale happy
tobru 0258d4c
rename service engineer into maintainer to be consistent
tobru 0186b91
add some missing parts
tobru e52536b
enhance with inputs
tobru 0a283db
instance recovery
tobru c0a39eb
Update docs/modules/ROOT/pages/adr/0039-servala-framework-requirement…
tobru c128f0b
rename title
tobru 8a0559d
rephrase for better understanding and add manipulation requirement
tobru af7b516
Merge branch 'master' into adr-framework-requirements
tobru 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
147 changes: 147 additions & 0 deletions
147
docs/modules/ROOT/pages/adr/0039-servala-framework-requirements.adoc
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,147 @@ | ||
| = ADR 0039 - Servala Framework Requirements | ||
| :adr_author: Tobias Brunner | ||
| :adr_owner: Schedar | ||
| :adr_reviewers: Schedar | ||
| :adr_date: 2025-09-30 | ||
| :adr_upd_date: 2025-10-17 | ||
| :adr_status: draft | ||
| :adr_tags: framework | ||
|
|
||
| include::partial$adr-meta.adoc[] | ||
|
|
||
| [NOTE] | ||
| .Summary | ||
| ==== | ||
| This ADR specifies the requirements for the Servala Framework. | ||
| ==== | ||
|
|
||
| == Vision | ||
|
|
||
| > Transform a Kubernetes workload into a standardized managed service - “Helm Chart in - Managed Service out” | ||
|
|
||
| (Substitute Helm Chart with “any Kubernetes artifact.”) | ||
|
|
||
| The Servala framework (also called the AppCat framework) allows to easily add standardized day-2 operations facilities to any cloud-native application, making it a managed service, and to offer it through Servala as a self-service SaaS application. | ||
|
|
||
| Day-2 operations mean: | ||
|
|
||
| * Regular Maintenance and security fixes | ||
| * Version Upgrades | ||
| * Backup and Restore | ||
| * Monitoring and Alert handling | ||
| * Metrics and Logging | ||
|
|
||
| In adherence to the xref:framework/service-maturity.adoc[Service Maturity levels]. | ||
|
|
||
| == Scope | ||
|
|
||
| The framework targets already built OCI compliant container images. | ||
| Building of these container images is outside of the scope of the Servala framework. | ||
|
|
||
| == Personas and User Stories | ||
|
|
||
| This section outlines the personas who are the stakeholders of the framework and their use cases. | ||
|
|
||
| === Service User | ||
|
|
||
| NOTE: The service user is the end-user of a manged service provided by this framework. | ||
|
|
||
| _As a service user, I want to_: | ||
|
|
||
| * consume a stable, secured and compliant managed service in self-service | ||
| * configure the service to my requirements | ||
| * get meaningful documentation about the service and its parameters | ||
| * know about the status of my service instance and its health (metrics, logs) | ||
| * stay informed about running costs | ||
| * be aware of the service capabilities | ||
tobru marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| * be able to recover a service instance even after user erros (for example deleting the instance) during a certain amount of time | ||
|
|
||
| === Service Maintainer | ||
|
|
||
| NOTE: The service maintainer creates a managed service by using the Servala framework and makes the service available in the self-service portal. | ||
| They are experts in the services which are being SaaSified. | ||
|
|
||
| _As a service maintainer, I want to_: | ||
|
|
||
| * easily add day-2 operations to the service I'm expert in | ||
| * make the service available in the self-service portal | ||
| * give the end-user of the service parameters to customize the service behaviour | ||
| * have the freedom to choose where the code of the service lives and be independent of a single code repository | ||
| * be able to easily develop and test a service locally | ||
|
|
||
| _As a service maintainer having a Helm Chart at hand, I want to_: | ||
|
|
||
| * be able to easily make a managed service out of it and make it available in self-service | ||
| * be able to map the Helm Chart values to the API values for | ||
| ** backend variables, for example backup, maintenance. | ||
| ** user-facing variables, for example instances, settings. | ||
| * be able to manipulate API for user-facing variables. | ||
tobru marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| === Service Operator | ||
|
|
||
| NOTE: The service operator takes care of the individual service instances. | ||
|
|
||
| _As a service operator, I want to_: | ||
|
|
||
| * get informed when a service instance behaves different than its defined and agreed good state | ||
| * know what to do when a service acts outside its defined good state | ||
| * rely on tooling which helps to troubleshoot potentially misbehaving service instances | ||
| * be able to handle support requests by having useful information about service instance at hand | ||
|
|
||
tobru marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| === Framework Engineer | ||
|
|
||
| NOTE: The framework engineer develops the framework tooling and the tools required to make day-2 operations possible. | ||
|
|
||
| _As a framework engineer, I want to_: | ||
|
|
||
| * provide the <<Service Maintainer>> with an easy to use framework for them to build managed services | ||
| * build a rock-solid base which others can rely on | ||
| * be able to easily develop the framework | ||
| * have an extensive testing infrastructure in place | ||
| * ensure backward compatibility when updating framework | ||
| * provide migration guides for breaking changes | ||
| * deprecate old features gracefully | ||
|
|
||
| === Platform Operator | ||
|
|
||
| NOTE: The platform operator takes care of the underlying platform where the services are running on. | ||
|
|
||
| _As a platform operator, I want to_: | ||
|
|
||
| * have clear separation of concerns between the services and the platform | ||
| * have strong multi-tenancy to protect different tenants using the platform (for example explicit SA/RBAC per tenant) | ||
| * protect service instances from each other (noisy neighbours) | ||
tobru marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| === Self-Service Portal | ||
|
|
||
| NOTE: The self-service portal consumes the catalog of managed services built by using this framework. | ||
|
|
||
| _As a self-service portal, I want to_: | ||
|
|
||
| * query a well-defined API to get a list of available services and their metadata | ||
| * retrieve the available parameters of a service to provide the user a configuration form | ||
| * be sure that the API is standardized so that I can rely on it | ||
tobru marked this conversation as resolved.
Show resolved
Hide resolved
tobru marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| * get information about the setup flow and parameter prioritization | ||
| * report actionable and easy to understand error (and status) messages to the user | ||
|
|
||
| == Core Requirements | ||
|
|
||
| Kubernetes API:: | ||
| The framework and the control-plane is based on the Kubernetes API and its tooling. | ||
| This is the core technology used at VSHN and has the most experience around. | ||
| Moving away from the Kubernetes API as the core architecture would be a significant change with plenty of risks involved. | ||
|
|
||
| Core Tooling:: | ||
| The framework relies on many tools, assuming these tools are available and ready to use. | ||
| This core tooling must be industry standard whenever possible, so that compatibility is given. | ||
| Examples: Prometheus for metrics collection. | ||
|
|
||
| Independence:: | ||
| The framework must be independent of VSHN Managed Kubernetes and VSHN Managed OpenShift. | ||
| This mainly means it must not depend on Project Syn to allow deploying the service catalog to non-VSHN managed Kubernetes environments. | ||
bastjan marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| Open Source:: | ||
| All tooling developed and used must be open source. | ||
|
|
||
| Automation:: | ||
| The focus lies on automation, including keeping software up-to-date. | ||
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
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
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.
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'm wondering if we're mixing framework vs. portal stuff here...
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.
We discussed this, and we'll make sure to have this requirements met in the Portal
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 needs to be a single source of truth of cost somewhere. And optimally it would be close to the parametes, otherwise we risk drift.