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)
Features
Authentication support (using OAuth)
Authentication via ACL's
Auditing
Configurable session/logging
- Passport.js (could support many other auth mechanisms
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
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