This article is a continuation of the part 1 article on Configuration Automations, part 2 that
describes the syntax of the configuration templates, and part 3 describes the process of finding and
loading configurations. This article describes some of the common routines in
configuration automation about existing products
Take Ubuntu for example, and you will find the following list
of software: Apache, MySQL, ZooKeeper, Storm, Kafka, Spark, Cassandra, Nginx,
Marathon and Docker usually. And take windows and we have the following list of
software: .NET, Visual Studio, Team Foundation Server, Octopus etc. While Docker has made applications portable,
we want to view the solution for continuous deployment that involves configuration
management.
CloudFoundry is a tool for automated software deployment and
hosting with the following benefits decreases the time to production, iterates
faster develop->build->test->deploy transitions, increases
productivity of developers, improves the quality of the products, improves the
efficiency of IT operations and increases the utilization of hardware. Octopus
is a tool that does massive deployments over several different virtual machines
with the same configuration and software of choice. It can maintain
simultaneous dev, test and production environments and tear them down at
will. Octopus can prepare a VM with any
kind of installer. This is an advantage over CloudFoundry because different VMs
or a pool of VMs can be chosen for configuration management.
Any configuration service or solution for configuration
management must contend with two primary responsibilities. First, it must allow
transactional read-write of configuration key values including bulk mode
insertion, update and delete. Second it must allow publisher subscriber changes
associated with various scopes of configurations.
The first is easily achieved when the store is externalized
such that read-write paths are fast and any analysis can be done in the form of
read-only paths that are separate from the transactional nature.
The second is easily performed when there is a queue
available for allowing subscriber notifications via fan-out. The configuration
store does not have any exposure to the subscribers directly other than the queue.
This enables the store to be the source of truth for the configurations. The
queue can have internal and external subscribers and the update to the state is
bidirectional. When the subscribers request, they can get their notifications.
This perfects the write update because the data does not need to be sent out.
If the queue sends messages back to the subscribers, it is a fan-out process.
The subscribers can choose to check-in at selective times and the server can be
selective about which subscribers to update. Both methods work well in certain
situations. The fan-out happens in both writing as well as loading. It can be
made selective as well. The fan-out can be limited during both pull and push.
Disabling the writes to all subscribers can significantly reduce the cost.
Other subscribers can load these updates only when reading. It is also helpful
to keep track of which subscribers are active over a period so that only those
subscribers get preference.
Both first and second can be written in any programming
language or technology stack but implementing it in C# as a cloud service works
very well from elasticity, performance and scalability requirements.
No comments:
Post a Comment