iluwatar / iluwatar/java-design-patterns

External Configuration Store Pattern

Open
#199 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

epic: pattern info: help wanted type: feature
Dominant language
Java
Stars
94.7k
Forks
27.4k
Avg merge
3d 4h
Merged PRs (30d)
10

Description

Description:
The External Configuration Store design pattern involves storing configuration settings outside of the application, which allows for the modification of these settings without the need to redeploy the application. This pattern is particularly useful for cloud-based applications where environments can change dynamically, and configurations need to be updated frequently.

Main elements of External Configuration Store pattern:

  1. Configuration Source: A centralized external source where configurations are stored. This can be a database, a cloud-based service, or a configuration server.
  2. Configuration Retrieval: Mechanism to fetch the configuration from the external store. This can be done at application startup and periodically at runtime to ensure the latest configuration is always applied.
  3. Configuration Management: Tools and interfaces to manage, update, and monitor the configurations in the external store.
  4. Fallback Mechanism: In case the external configuration source is unavailable, the application should have a fallback mechanism, such as default settings or cached configurations.

References:

Acceptance Criteria:

  1. Implement a mechanism to retrieve configurations from an external store (e.g., AWS SSM, Consul, etc.) and apply them to the application at startup and during runtime.
  2. Create a configuration management interface to allow for easy updates and monitoring of configuration settings.
  3. Ensure a fallback mechanism is in place to handle scenarios where the external configuration store is unreachable. This should include default settings or cached configurations.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points; first inspect the repository's existing pattern structure and configuration-related examples. Decide which external store and management interface fit the project before implementation. Done means startup and runtime retrieval, configuration updates and monitoring, and fallback to defaults or cached settings are covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, java
Domain
backend-api-design, cloud
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.