Tangram: A Self‑Developed Configuration Center Based on etcd for Microservice Configuration Management

Tangram is a home‑grown configuration center that replaces Spring Config Server by leveraging etcd’s high‑availability KV store, watch‑based dynamic updates, and multi‑language support to provide reliable, secure, and real‑time configuration management for microservice architectures.

Liulishuo Tech Team
Liulishuo Tech Team
Liulishuo Tech Team
Tangram: A Self‑Developed Configuration Center Based on etcd for Microservice Configuration Management

Tangram is the in‑house configuration center used by the FluentTalk IT R&D team, fully replacing the previous Spring Config Server in late 2019 to improve configuration management efficiency, availability, and usability for microservices.

The legacy Spring Config Server suffered from several pain points: Git‑based storage caused single‑point failures and lacked project‑level permission control; dynamic configuration required RabbitMQ, adding operational cost and architectural complexity; it was tightly coupled to Spring Cloud, preventing cross‑language usage; and without a messaging component, manual refresh of each instance was required.

To address these issues, Tangram adopts etcd V3 as the core configuration store, eliminating Git/MySQL single‑point failures, providing built‑in ACLs, SSL encryption, MVCC for optimistic concurrency, and a watch mechanism based on HTTP/2 multiplexing for real‑time push of configuration changes.

The system’s architecture includes an etcd gateway for transparent client access, ElasticSearch for edge‑ngram based auto‑complete search, MySQL for user accounts and RBAC permissions (with JWT authentication), and Redis for secondary caching. Clients interact directly with the etcd gateway, improving availability and allowing seamless language‑agnostic integration.

Server‑side features cover search (Edge‑NGram indexing), user login and permission handling via Spring Security, application configuration storage using hierarchical keys like "|apps| | | |", support for YAML/properties conversion, versioned history with MVCC, snapshot/compact operations, and encrypted storage of sensitive values using AES.

Base configurations enable reusable common settings across applications, stored under keys like "|base| | |" and referenced by applications to avoid duplication.

The Java client is built on Spring Boot/Spring Cloud, providing:

Configuration pull from etcd via jetcd KVClient.

Dynamic runtime updates using jetcd WatchClient, translating watch events into Spring RefreshEvent to refresh beans and logger levels.

Redundant local file storage for fail‑over when etcd is unavailable.

Management endpoints via Spring Actuator for reading, writing, and gray‑release of configuration.

Spring Boot integration hooks into the ApplicationEnvironmentPreparedEvent (stage A) and context refresh (stage C) to load remote configuration before logging initialization and to apply updates without full context restart.

Overall, Tangram has been adopted by more than 30 services, managing over 2,000 configuration items, enabling "modify‑and‑take‑effect" without service restarts, thereby improving SLA and developer productivity.

Future plans include a Go client for broader language support and enhanced multi‑team permission management.

JavamicroservicesConfiguration ManagementSpring Bootetcd
Liulishuo Tech Team
Written by

Liulishuo Tech Team

Help everyone become a global citizen!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.