Production Architecture
The production architecture of protoconf involves several components working together to provide dynamic, event-driven configuration management. This architecture is designed to support high availability, scalability, and real-time updates.
Architecture Overview
-
Source Code Management (SCM): This is where your configuration files and your application code reside. Whenever there is an event (such as a commit or a merge), it triggers the next step in the process.
-
protoconf insert: This is a command that is run in response to events from the SCM. It takes the configuration files and inserts them into the key-value store. This command can be triggered manually, or automatically via webhooks or CI/CD pipelines.
-
Key-Value Store (Consul/Etcd/Zookeeper): This is the centralized store where all the configurations are stored. The key-value store ensures high availability and distributed access to the configurations.
-
protoconf agent: This is a service that listens for changes in the key-value store. When a configuration is inserted or updated, the protoconf agent picks up the change and prepares to distribute it.
-
Applications: These are your actual applications that need the configurations. They connect to the protoconf agent and receive real-time configuration updates via gRPC.
This architecture allows for rapid response to configuration changes, ensuring that your applications always have the most up-to-date configurations. This is particularly useful in a microservices architecture where multiple services need to stay in sync with their configurations.