4

I'm building an application with 2 week sprint cycles. We currently test feature rollouts all at once and then hot patch if something messes up. Our stack is node with angular and mongo.

Anyone worked with any SAAS solutions for feature flagging or anything else to help with continuous delivery?

Edit: Trialing LaunchDarkly - will post updates

Edit2: Update from Trial - Ok, it seemed to work smoothly in my stack - will still need to test for a few more weeks. Launchdarkly feature flags setup was pretty easy so I'll outline it here.

Installing the SDK

ld_client = LaunchDarkly.init("YOUR_API_KEY");

Passing Custom Parameters

var config = {"connect_timeout": 3, "socket_timeout": 3};
ld_client = LaunchDarkly.init("YOUR_API_KEY", config);

Pass User Attributes as JSON Objects

var user = {
  "key": "aa0ceb",
  "firstName": "Ernestina",
  "lastName": "Evans",
  "email": "ernestina@example.com",
  "custom": {
    "groups": ["Google", "Microsoft"]
  }
};

All quite straightforward documentation.

Edit3: Been using for a 3 weeks now and have some initial thoughts. Feature flagging driving development has been useful, though it's difficult to retroactively integrate some of our more robust functions. Was able to use launchdarkly api for A/B testing metrics using our optimizely goals.

{
   "items":[
      {
         "name":"Staging sandbox - Engagement",
         "kind":"click",
         "isDeleteable":false,
         "_attachedFeatureCount":0,
         "_links":{
            "parent":{
               "href":"/api/goals",
               "type":"application/json"
            },
            "self":{
               "href":"/api/goals/54f7538f643d2ef1c6426443",
               "type":"application/json"
            }
         },
         "_site":{
            "href":"/goals/54f7538f643d2ef1c6426443",
            "type":"text/html"
         },
         "_source":{
            "name":"optimizely",
            "identifier":"2353921003"
         }
      },
      {
         "name":"Sandbox - Hover",
         "kind":"custom",
         "isDeleteable":false,
         "_attachedFeatureCount":1,
         "_links":{
            "parent":{
               "href":"/api/goals",
               "type":"application/json"
            },
            "self":{
               "href":"/api/goals/54f75390643d2ef1c6426447",
               "type":"application/json"
            }
         },
         "_site":{
            "href":"/goals/54f75390643d2ef1c6426447",
            "type":"text/html"
         },
         "_source":{
            "name":"optimizely",
            "identifier":"2222571744"
         }
      }
   ],
   "_links":{
      "self":{
         "href":"/api/goals",
         "type":"application/json"
      }
   }
}
Hbitspark
  • 73
  • 8
  • Looks like launchdarkly added [link](http://blog.launchdarkly.com/feature-flags-as-a-service-for-ios-sdk-mobile) mobile ios support for feature flags. Seems to work well in web environment but I'm still skeptical for mobile. Will have to see. – Hbitspark Nov 03 '15 at 18:14
  • Also can look at split.io and ratelim.it http://blog.ratelim.it/blog/launchdarkly-vs-split.io-vs-ratelim.it – jdwyah Feb 21 '17 at 01:50

2 Answers2

4

angular-feature-flags works pretty well for Angular v1.2 and up.

The basic premise is you write your feature and wrap it up in a directive, then where you implement that directive in your markup you add the feature-flag directive to the same element. You can then pass the key of the flag to this directive to resolve whether of not this feature should be enabled.

If you're looking for a SAAS solution, I know launchdarkly is a feature flags / continuous delivery platform.

Shakeeb Ahmad
  • 2,010
  • 1
  • 25
  • 30
  • Have you used launchdarkly at all for feature flags? Just worried about performance issues and making external calls for my flags. – Hbitspark Oct 20 '15 at 22:06
  • 1
    LaunchDarkly uses a streaming model, which means that the feature rule set is maintained in memory in your application, so there is no network connection made at the time you need to evaluate a feature flag. (nb: I work at LaunchDarkly) – pkaeding Oct 20 '15 at 22:37
  • Thanks - so if my app is unable to connect to launchdarkly, what would happen? What would my users actually see? I'm not sure how the feature flag would work in that scenario. – Hbitspark Oct 22 '15 at 07:57
2

At my company we've used Launch Darkly and Rollout.io for enterprise level clients.

We also used Firebase Remote config which is free, but not really suitable for Feature Flagging.

We ended up developing an open source version which combined the two concepts of Feature Flags and Remote config, called Bullet Train.

TStu
  • 244
  • 3
  • 15
  • the good thing about Bullet Train is that we can host it locally, which is needed for some of our closed production environments. Do you have any tutorial or documentation on how to implement that? Thanks! – CMLee Sep 20 '19 at 17:43
  • 1
    Why is Firebase Remote Config not suitable for feature flags? – Steven Shaw Dec 20 '21 at 01:54