Skip to content
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

Rework Documentation Structure - Introduce ADRs #131

Merged
merged 48 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
86c1300
initial idea dump
tobru Dec 31, 2024
322a5bf
initial try at templating with cookiecutter
tobru Jan 3, 2025
0b42d26
addr is now adr and cookiecutter templates
tobru Jan 3, 2025
c893420
wip including index creation tool
tobru Jan 3, 2025
c33e479
add pre-commit hook to generate adr index
tobru Jan 6, 2025
f429753
add status validation
tobru Jan 6, 2025
a6b6c0e
slugify adr filename
tobru Jan 6, 2025
c02a8e6
document adr
tobru Jan 6, 2025
3c8c991
continuation
tobru Jan 6, 2025
01c9854
Update docs/modules/ROOT/partials/service-meta.adoc
tobru Jan 6, 2025
01f55bd
add convenience symlink
tobru Jan 6, 2025
bac2b17
output adr path at the end
tobru Jan 6, 2025
4c75dbf
auto-increment ADR number in cookiecutter config
tobru Jan 7, 2025
fd03913
document adr tooling
tobru Jan 7, 2025
15c6c47
cleanup service metadata
tobru Jan 7, 2025
9fabbb5
move postgresql docs to the new place
tobru Jan 7, 2025
e21e484
remove very old and outdated billing docs
tobru Jan 7, 2025
5587682
improve service template
tobru Jan 7, 2025
49c68e7
move redis docs to the new place
tobru Jan 7, 2025
eebb452
include tags in adr index
tobru Jan 7, 2025
0d672b0
move mariadb docs to the new place
tobru Jan 7, 2025
08f1369
move minio docs to the new place
tobru Jan 7, 2025
38f8441
remove pointless crossplane decision
tobru Jan 10, 2025
59823f2
adr service location
tobru Jan 10, 2025
7dd5266
adr service logging
tobru Jan 10, 2025
d5bdf8c
adr composition and xrd deployment
tobru Jan 10, 2025
79f7f2a
adr metrics
tobru Jan 10, 2025
fcc80bb
adr service api design
tobru Jan 10, 2025
f0a3a0d
adr capacity alerting
tobru Jan 10, 2025
57db7f2
adr deletion protection
tobru Jan 10, 2025
87b00ab
adr user management
tobru Jan 10, 2025
6aaadc9
adr comp function error handling
tobru Jan 10, 2025
0163b7d
adr api server
tobru Jan 10, 2025
71655ef
adr release process
tobru Jan 10, 2025
dd753c8
adr secret management tool
tobru Jan 10, 2025
5b941f0
adr nextcloud helm
tobru Jan 10, 2025
00ce4bc
adr mongodb operator
tobru Jan 10, 2025
30f94ec
adr keycloak
tobru Jan 10, 2025
6e7b3fd
adr sli prober object storage
tobru Jan 10, 2025
14de31f
adr obsolete converged service
tobru Jan 10, 2025
089c955
move exoscale stuff around
tobru Jan 13, 2025
ca21fac
move spks stuff around
tobru Jan 13, 2025
62e3a06
i want to move it move it
tobru Jan 13, 2025
395bfa2
script to check navigation
tobru Jan 13, 2025
436d44d
move forgejo codey around
tobru Jan 13, 2025
787f1fc
add vale config
tobru Jan 13, 2025
15ed6d3
Revert "add vale config"
tobru Jan 13, 2025
dc33b95
ignore Microsoft.RangeFormat in vale
tobru Jan 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
repos:
- repo: local
hooks:
- id: adr-status-valid
name: Validate ADR status
entry: hack/adr-tool.py
args:
- validate
language: python
files: ^docs/modules/ROOT/pages/adr/
- id: adr-index
name: Generate ADR Index
entry: hack/adr-tool.py
args:
- generate
language: python
files: ^docs/modules/ROOT/pages/adr/
- id: navigation
name: Validate Navigation
entry: hack/check-nav.py
language: python
files: ^docs/modules/ROOT/pages/
1 change: 1 addition & 0 deletions docs/modules/ROOT/pages/.vale.ini
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ Microsoft.GenderBias = warning
Microsoft.Contractions = warning
Microsoft.Quotes = warning
Microsoft.Avoid = warning
Microsoft.RangeFormat = ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
= ADR 0001 - Architecture Decision Records
:adr_author: Tobias Brunner
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2025-01-01
:adr_upd_date: 2025-01-06
:adr_status: draft
:adr_tags: processes

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
Architecture Decision Records (ADR) are our way to document decisions, ideas, architecture, processes, tools and other important aspects of the engineering process. It helps us to understand the "why".
====

== Context

Throughout the lifetime of any given engineering task, lots of decisions have to be made.
Some of them are quick and easy with a neglectable impact on the whole system, some of them have a broader impact.
Most of the time, "future us" doesn't know anymore _why_ something is done in a particular way.
Also, it might not be clear by just reading the code, other influences of a decision are not available in the code.

== Decision

We will write ADRs to document our decisions on the architecture, processes, ideas and tools.

An ADR is a AsciiDoc file in the folder `docs/modules/ROOT/pages/adr/NNNN-slugified-title.adoc`.

ADRs will be numbered sequentially and monotonically. Numbers will not be reused.

If a decision is reversed, we will keep the old one around, but mark it as superseded. It's still relevant to know that it was the decision, but is no longer the decision.

An existing ADR can be updated with new knowledge which has to be marked appropriately, for example with an annotation `Update: 2025-01-06`.
A new ADR must be created for significant changes.

We will use a format with just a few parts, so each document is easy to digest.
If, for any reason, the format can be adjusted for a particular ADR.

Status::
* Draft: ADR still being worked on - no decision has been taken yet.
* Accepted: The decision is accepted.
* Implemented: ADRs which were accepted and are implemented.
* Rejected: The ADR has been rejected. It's still here for history reasons and to understand why it has been rejected.
* Obsolete: ADRs kept for historical reasons, but don't reflect the current or impending state of the codebase or project.

Title::
ADRs have names that are short noun phrases. For example, "ADR 0001: Architecture Decision Records" or "ADR 0042: StackGres for Managed PostgreSQL service"

Context::
This section describes the forces at play, including technological, political, social, and project local. These forces are probably in tension, and should be called out as such. The language in this section is value-neutral. It is simply describing facts.

Decision::
This section describes our response to these forces. It is stated in full sentences, with active voice. "We will ..."

Consequences::
This section describes the resulting context, after applying the decision. All consequences should be listed here, not just the "positive" ones. A particular decision may have positive, negative, and neutral consequences, but all of them affect the team and project in the future.

The whole document should short and concise.
We will write each ADR as if it is a conversation with a future VSHNeer.
This requires good writing style, with full sentences organized into paragraphs. Bullets are acceptable only for visual style, not as an excuse for writing sentence fragments.

Further usage documentation is in xref:adr/working-with.adoc[].

== Consequences

ADRs will help current and future VSHNeers understand the "why".

Initially, writing ADRs will feel like additional work or a burden. Over time, it will prove its value.

Keeping ADRs up-to-date (status, updated date) is a manual effort which might lead into outdated information.

The motivation behind previous decisions is visible for every VSHNeer, present and future.
Nobody is left scratching their heads to understand, "What were they thinking?" and the time to change old decisions will be clear from changes in the project's context.
27 changes: 27 additions & 0 deletions docs/modules/ROOT/pages/adr/0002-service-documentation.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
= ADR 0002 - Service Documentation
:adr_author: Tobias Brunner
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2025-01-06
:adr_upd_date: 2025-01-06
:adr_status: draft
:adr_tags: processes

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
TODO
====


== Context



== Decision



== Consequences
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
= VSHN Managed PostgreSQL
= ADR 0003 - StackGres Operator for PostgreSQL
:adr_author: Simon Beck
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2022-11-15
:adr_upd_date: 2023-11-01
:adr_status: implemented
:adr_tags: postgresql,service
:page-aliases: explanations/decisions/postgresql.adoc


include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use StackGres as the underlying operator to provide the product PostgreSQL by VSHN.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= PostgreSQL by VSHN Availability check
= ADR 0004 - PostgreSQL Metrics Exporter
:adr_author: Łukasz Widera
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-02-21
:adr_upd_date: 2023-03-07
:adr_status: implemented
:adr_tags: postgresql,service,monitoring,metrics
:page-aliases: explanations/decisions/postgres-monitoring.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We're using a custom exporter to export metrics about PostgreSQL.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= VSHN Managed PostgreSQL
= ADR 0005 - Automated PostgreSQL Service Upgrades
:adr_author: Simon Beck
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-05-23
:adr_upd_date: 2023-05-04
:adr_status: implemented
:adr_tags: postgresql,service,maintenance
:page-aliases: explanations/decisions/postgres-upgrades.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We will do automatic minor upgrade and manual major upgrades and inform 3 months after EOL and then force upgrade the instance.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= VSHN Managed Redis
= ADR 0006 - Bitnami Helm Chart for Redis
:adr_author: Simon Beck
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2022-12-27
:adr_upd_date: 2023-01-04
:adr_status: implemented
:adr_tags: redis,service
:page-aliases: explanations/decisions/redis.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use the Redis Bitnami Helm Chart and deploy it with the Crossplane Provider Kubernetes.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= VSHN Managed Redis Upgrade Policy
= ADR 0007 - Automated Redis Service Upgrades
:adr_author: Fabian Fischer
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-07-11
:adr_upd_date: 2023-07-11
:adr_status: implemented
:adr_tags: redis,upgrades,maintenance
:page-aliases: explanations/decisions/redis-upgrades.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
Both minor and major updates are done manually by the service user.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
= VSHN Managed MariaDB
= ADR 0008 - Bitnami Helm Chart for MariaDB
:adr_author: Simon Beck
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2022-12-27
:adr_upd_date: 2023-10-31
:adr_status: implemented
:adr_tags: service,mariadb,helm

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use the Redis Bitnami Helm Chart.
====

== Problem

Expand Down Expand Up @@ -137,4 +152,4 @@ We also agreed to the fact that we should prefer Helm Charts over operators for
* Helm Chart are readily available for most of our services.
* We have great experience with Helm Charts.
* We should stick with one solution as much as possible to reduce complexity.
* Operators may be very much prone to sudden bugs which may be difficult to fix on our own.
* Operators may be very much prone to sudden bugs which may be difficult to fix on our own.
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
= VSHN Managed MariaDB HA Proxy solutions
= ADR 0009 - ProxySQL for MariaDB Clustering
:adr_author: Nicolas Bigler
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2024-10-17
:adr_upd_date: 2024-10-17
:adr_status: implemented
:adr_tags: mariadb,ha,cluster

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use ProxySQL for MariaDB Clustering.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
= VSHN Managed Object Storage
= ADR 0010 - MinIO for Local Object Storage
:adr_author: Gabriel Saratura
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-10-23
:adr_upd_date: 2023-10-23
:adr_status: implemented
:adr_tags: minio,service,objectstorage

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use MinIO to provide local object storage.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
= SLI for VSHN Managed Object Storage
= ADR 0011 - Monitor Object Bucket with Probe
:adr_author: Gabriel Saratura
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-10-23
:adr_upd_date: 2023-10-23
:adr_status: implemented
:adr_tags: minio,monitoring,sli

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
Use Probe one ObjectBucket to monitor the service availability.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= Converged Service Provisioning Location
= ADR 0012 - Converged Service in Managed Namespace
:adr_author: Christian Cremer
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2022-03-24
:adr_upd_date: 2022-12-05
:adr_status: implemented
:adr_tags: framework,service
:page-aliases: explanations/decisions/converged-service-loc.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
Service instances are running in their own managed namespace.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= Handling Logs for Converged Services
= ADR 0013 - Use Logging Facilities of Platform
:adr_author: Fabian Fischer
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2023-03-14
:adr_upd_date: 2023-03-14
:adr_status: implemented
:adr_tags: framework,service,logging
:page-aliases: explanations/decisions/logging.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use the logging solution of the platform to give users access to service logs.
====

== Problem

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
= Decision How to Deploy Compositions and XRDs
= ADR 0014 - Commodore Component to Deploy Compositions and XRDs
:adr_author: Simon Beck
:adr_owner: Schedar
:adr_reviewers: Schedar
:adr_date: 2022-08-05
:adr_upd_date: 2022-12-09
:adr_status: implemented
:adr_tags: framework,commodore,crossplane
:page-aliases: explanations/decisions/composition-deployments.adoc

include::partial$adr-meta.adoc[]

[NOTE]
.Summary
====
We use Commodore Components without Packages to deploy Compositions and XRDs to clusters.
====

== Problem

Expand Down
Loading
Loading