From aabb0433006e8601898db66b1e3fe446943c29a2 Mon Sep 17 00:00:00 2001 From: Rodrigo Broggi Date: Sun, 21 Jul 2024 15:15:55 +0200 Subject: [PATCH] documentation update --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c205436..8aa8149 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,27 @@ -# Dynamic configuration +# Streaming configuration ![](doc/img.png) -This library implements a hot-reloadable configuration repository. It leverages [mongodb change-streams](https://www.mongodb.com/docs/manual/changeStreams/) -to stream changes that happen in a configuration collection into the local configuration repository. +A [mongodb change-streams](https://www.mongodb.com/docs/manual/changeStreams/) powered hot-reloadable configuration Go library. -This pattern can be used in distributed systems for feature-flag activations/deactivations and for distributed - eventually-consistent hot-reloadable configuration changes. +Can be used in your Go distributed services for: -A typical usecase is a kubernetes replicaset with multiple pods - upon configuration changes all pods local configurations will be updated. +* feature flag activation/deactivation; +* dynamic configuration change without need for container/service restarts; -* default values are not persisted, they are local-only. This allows you to change default values -when rolling out new configuration versions. +A typical usecase is a kubernetes replicaset/deployment with multiple pods - upon configuration changes all pods local configurations will be updated. The user-provided configuration must support `json` field tags for serialization/deserialization. ## Design -* Auditable: the lib aims at keeping historical information about configuration changes - this is achieved at the price of -a higher storage usage as each configuration change translates to a new document in the collection containing all configuration +* Auditable: the library aims at keeping historical information about configuration changes—this is achieved at the price of + higher storage consumption as each configuration change translates to a new document in the collection containing all configuration fields. * Immutable: the configurations are versioned and immutable - every update is reflected as a new document. * Eventually-consistent: a configuration change will be replicated to the other local repositories eventually. +* Default values are not persisted, they are local-only. This allows you to change default values + when rolling out new configuration versions. ## Usage