~/talk

Configuration Management Patterns

Talkat RailsConf 2013 · 2013-04-29..05-02· [devops-and-delivery]
speakerdeck:bohford
slides:none on file

A concrete system emerges: a game’s 25,000 configuration integers move out of source into a build pipeline that emits a config artifact with build number and checksum stored on an asset server, promoted through environments, and deep-merged per region host and tag. Hot updates use a Celluloid polling refresh thread to reload YAML artifacts without restart; polling is preferred over push for recoverability. Experiments, A/B tests, translations and memcache reconfigurations all work and audits + checksums prevent silent edits.

AI-written summary · about

  1. 0:00Intro
  2. 0:17Configuration Management Patterns
  3. 1:17This is a conversation about ideas, it is not a prescription for how you have to do it
  4. 6:09Getting serious • Technical QA • Playtesting QA • Deploying new configurations just as rigorously as new code • Bad config can be just as damaging as bad code
  5. 7:04Agenda • Configuration context • Baking configurations • Deploying configurations • Applications . Further exploration
  6. 9:06#3: respect Rails.env development
  7. 13:53Reset • Our settings are aware of their context and environment! • But still in the source repo Still tied to a commit and deploy Still inaccessible to other apps Still inaccessible to non-engineers
  8. 14:38Requirements Decouple generation process entirely from app/repo • Use code deployment principles • Build an artifact (like we used to) • Version and store
  9. 15:26The power of the internet A webapp!!! Single, enforceable process • Access controls, individual auditing • Bounds/sanity checking • Incorporate your particular corporate rules/insanity
  10. 17:12Build process • transform config values into a single Yaml doc- building an artifact • take note of: builder, build #, timestamp, changelog • include checksum to prevent alteration, well-intentioned or otherwise
  11. 18:29Promotion • Map a revision to an environment or other dimension
  12. 19:35Release process run test/Cl suites against config run QA against config • run playtest against config deploy to production
  13. 20:17But I don't want to restart Spawn a thread to poll for updates in the background • Celluloid timer is perfect for this • Doesn't work with GIL (MRI) • Pretty gross multi-process (Unicorn) Don't forget to be threadsafe
  14. 21:41Timer class ConfigFetcher include Celluloid def initialize (sources)
  15. 24:54Reset .config is out of source non-engineers can build and deploy .config can be shared across apps update config live without restarts • test configs before production deploy recorded change control
  16. 27:03Bonus non-Ruby content • Archaius: Netflix's Java composite configuration library Zookeeper: cluster synchronization service (strongly consistent) jones: Python ZK-based config app
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.