HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Application configuration of a complex enterprise system

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
applicationsystementerpriseconfigurationcomplex

Problem

For a complex, distributed Enterprise system running on premise, I'll be driving an initiative to harness application configuration management. Today we have software delivered by almost 20 various scrum teams with only some coordination, having central and embedded software in Java, .NET, C++ and SQL worlds (MSSQL+Oracle). Creating a consistent system configuration addressing project specific functional requirements every time becomes a painful project.

What I would like to introduce is a type of configuration meta model starting from the business layer (domain of customers, product managers, etc) going down to individual parameters (domain of developers an system engineers). I imagine something like a web car configurator which in the end generates a consistent configuration. The whole complexity of relations between functionalities (hundreds) and parameters (tens of thousands) would become explicitly maintained in such a tool.

Now, are there any off the shelve tools/frameworks supporting something like this? Gut feeling tells me that adapting any existing solution to a very specific needs of a large enterprise system might actually be more complex than building it by ourselves.

Solution

I highly recommend Consul for configuration management as it is a high reliability, distributed system that provides quite a few and easy to use features with a simple Rest API. Also the community edition is free :), although for a large enterprises there is an enterprise offering.

I am a particular fan of the Key Value store, because it allows me to have separate configurations for my micro-services and back-end services (written in C#/.Net Core and Java respectively) in all three environments (Dev, Beta, Prod).

Whenever I add a new service or application, the configuration for each environment is added to the Key Value store and a simple config client downloads the configuration during the application's bootstrap/loading routines.

You can read a bit more here but in a nutshell:


Consul has multiple components, but as a whole, it is a tool for
discovering and configuring services in your infrastructure. It
provides several key features:


Service Discovery: Clients of Consul can provide a service, such as
api or mysql, and other clients can use Consul to discover providers
of a given service. Using either DNS or HTTP, applications can easily
find the services they depend upon.


Health Checking: Consul clients can provide any number of health
checks, either associated with a given service ("is the webserver
returning 200 OK"), or with the local node ("is memory utilization
below 90%"). This information can be used by an operator to monitor
cluster health, and it is used by the service discovery components to
route traffic away from unhealthy hosts.


KV Store: Applications can make use of Consul's hierarchical key/value
store for any number of purposes, including dynamic configuration,
feature flagging, coordination, leader election, and more. The simple
HTTP API makes it easy to use.


Multi Datacenter: Consul supports multiple datacenters out of the box.
This means users of Consul do not have to worry about building
additional layers of abstraction to grow to multiple regions.


Consul is designed to be friendly to both the DevOps community and
application developers, making it perfect for modern, elastic
infrastructures.

Context

StackExchange DevOps Q#1865, answer score: 2

Revisions (0)

No revisions yet.