ADR 0039 - Servala Framework Requirements

Author

Tobias Brunner

Owner

Schedar

Reviewers

Schedar

Date Created

2025-09-30

Date Updated

2025-10-17

Status

accepted

Tags

framework

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 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

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

  • be able to recover a service instance even after user erros (for example deleting the instance) during a certain amount of time

Service Maintainer

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

  • have the possibility to manipulate user input before passing it on

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 API values to Helm Chart values for:

    • standardized day-2 operations settings. For example backup configuration or maintenance settings.

    • service specific settings. For example number or instances or service configuration.

Service Operator

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

Framework Engineer

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

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)

  • protect the platform from misbehaving service instances

Self-Service Portal

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

  • get information about the setup flow and parameter prioritization

  • report actionable and easy to understand error (and status) messages to the user

Constraints

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.

Open Source

All tooling developed and used must be open source.

Automation

The focus lies on automation, including keeping software up-to-date.