Hobknob – The simple, distributed feature toggle framework



Hobknob – The simple, distributed feature toggle framework

0 0


hobknob-intro-presentation

Hobknob introduction presentation

On Github ryantomlinson / hobknob-intro-presentation

Hobknob

The simple, distributed feature toggle framework

Ryan Tomlinson / @ryantomlinson

History

  • Built in my 20% time
  • Made it easy to adopt
  • 23 teams adopted it. Hundreds of toggles. 0 downtime

Why feature toggling?

Branching Merging is painful

Graceful degradation (MTTR)

Decouple deployments (Phased rollout)

  • Particularly on a monolithic shared codebase
  • Mean time to recovery. When issues occur, how quickly can we resolve theme. Can we turn off pieces off functionality?
  • Etsy, flickr and google as examples. Turn off features that aren't core
  • Doesn't mean everything is released instantly. Means it's releasable.

"Architecture"

  • Notice no API. etcd solves that problem for us. That's why we chose it (amongst other reasons)

The Dashboard

Features

Authentication support (using OAuth)

Authentication via ACL's

Auditing

Configurable session/logging

  • Passport.js (could support many other auth mechanisms

DEMO: dashboard

The Clients

  • Clients for .NET, Java, Node.js, Go
  • Fault tolerant
  • Simple
  • Clients are fully OSS and on github
  • Maintain a cache. If server/db goes down they maintain state.
  • Won't deploy unless has initial state
  • Single method

Client installation/usage

$ npm install hobknob-client-nodejs --save
var Client = require('hobknob-client-nodejs');

var client = new Client("application-name", {
    etcdHost: "127.0.0.1",
    etcdPort: 4001,
    cacheIntervalMs: 60000
});
var isFeatureToggle1Enabled = client.getOrDefault('myFeatureToggle', false);

A bit about etcd

$ curl -L http://127.0.0.1:2379/v2/keys/mykey -XPUT -d value="this is awesome"
$ curl -L http://127.0.0.1:2379/v2/keys/mykey

Questions?

Hobknob The simple, distributed feature toggle framework Ryan Tomlinson / @ryantomlinson History Built in my 20% time Made it easy to adopt 23 teams adopted it. Hundreds of toggles. 0 downtime