Skip to content

Commit

Permalink
documentation update
Browse files Browse the repository at this point in the history
  • Loading branch information
rbroggi committed Jul 21, 2024
1 parent d5e618a commit aabb043
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -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 changesthis 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

Expand Down

0 comments on commit aabb043

Please sign in to comment.