Bullet Train: Open-source feature flagging

Author: kaishiro

Score: 107

Comments: 29

Date: 2020-10-28 08:34:41

Web Link

________________________________________________________________________________

hbcondo714 wrote at 2020-10-29 02:28:44:

Not to be confused with the Ruby on Rails SaaS template Bullet Train:

https://bullettrain.co/

ta1234567890 wrote at 2020-10-29 02:39:00:

Thank you, thought it was about that one and was going to say it's really good, has a great community and amazing support, would definitely recommend for anyone who has experience with rails and wants to start a new project but not completely from scratch - definitely worth the money ($1.5k IIRC).

michaelbuckbee wrote at 2020-10-29 10:25:30:

Yeah, I feel like the name doesn't really fit for feature flags as a service either.

nullsense wrote at 2020-10-29 02:37:57:

When I read the headline this is the product I was thinking of.

Almost exact same domain name even. Yikes.

davidtranjs wrote at 2020-10-29 09:52:57:

Thanks, I found this template yesterday and almost getting a wow because I see it on HN today.

1kevgriff wrote at 2020-10-29 13:49:18:

Brand confusion... yay.

Game_Ender wrote at 2020-10-29 13:07:49:

If you are interested in this space and don't want to purchase a commercial product, check out Flagr [0] which you can deploy and run yourself. It has clients for Go, Python, Ruby and JavaScript. I have only used the basic flagging, but it also supports A/B testing as well.

No affiliation, just a happy customer.

0 -

https://checkr.github.io/flagr

rwmj wrote at 2020-10-29 08:20:10:

I couldn't work out what this does. A library for mapping booleans to and from strings?

brunoluiz wrote at 2020-10-29 09:27:50:

Is a service for feature flags, where feature flags are a software pattern in a way. If you want to learn more about it, have a look into this:

https://martinfowler.com/articles/feature-toggles.html

In a nutshell, it allows developers to deploy new features but hide them based on a flag. Once it is ready to be released (example: product gave an ok, big announcement happened etc), then this feature just needs to be enabled through this flag. Now, this flag can be an environment variable, but for apps you will probably need a service, which the app always fetch the latest feature configs.

We use it here (although using Flaggio

https://github.com/victorkt/flaggio

) and it is super useful for continuous delivery. And you can as well control features based on groups (example: show just for beta users) or hide features if some bug was discovered.

marcus_holmes wrote at 2020-10-29 14:14:38:

I'm always curious about Feature Flags - I'd love to use them.

But they only seem to work if the interface doesn't change. From the example you gave:

    function reticulateSplines(){
      if( featureIsEnabled("use-new-SR-algorithm") ){
        return enhancedSplineReticulation();
      }else{
        return oldFashionedSplineReticulation();
      }
    }

All well and good as long as the enhancedSplineReticulation returns the exact same structure that the old one did. If it doesn't, then a bunch of code that handles the new reticulated splines also needs to be behind a flag (because the structure changed). And that could mean a chunk of UI needs to be duplicated behind a flag because it changed, and so on.

How do you use feature flags when the features aren't just trivial changes to methodology, but affect multiple parts of the system?

markn951 wrote at 2020-10-29 14:22:28:

Check the flags in multiple parts of the system, or duplicate some logic and have two completely self-contained components, one with the new pieces and one untouched.

marcus_holmes wrote at 2020-10-29 15:19:10:

Yeah, I suppose so.

But how do you deal with multiple feature flags implemented on the same piece of the system?

How do you create discrete components when you have three or more features intersecting on that component?

And presumably there's a proliferation of test cases, too (because you'd need to test that everything works with all combinations of features A,B,C,D implemented)?

How much of this gets cleaned up afterwards? When the feature is fully rolled out, how do you resist the pressure to move on to another feature and leave the flags implemented rather than clean it all up and remove the old code?

dabeeeenster wrote at 2020-10-29 08:23:26:

Hi - we're a feature flagging platform. You can put new features that you are working on behind boolean flags and then manage those features from our dashboard.

rwmj wrote at 2020-10-29 08:32:07:

Still unclear! "Feature" means a software feature? For example _"I've implemented the feature of sorting customer records by date of birth"_? I don't really understand why anyone would need a service to manage software features, so maybe feature means something else.

dabeeeenster wrote at 2020-10-29 08:58:41:

We have an overview of why you might like to use a feature flagging platform here:

https://docs.bullet-train.io/overview

Hopefully that helps!

kristopolous wrote at 2020-10-29 11:22:40:

This sounds like it could easily and quickly lead to really poor bug reproducibility, documentation, and discovery especially if the issue is in action-at-a-distance anti-patterns. Am I just being a curmudgeon or is this a reality?

I'll happily accept a "no you're crazy".

camnora wrote at 2020-10-29 13:02:14:

For smaller projects and teams, something like feature flagging can probably be avoided unless A/B testing is required.

For a company that has hundreds of engineers, with daily continuous deployment, it helps to have certain in-development features gated behind flags. When it comes time to deploy these new features, they can gradually be rolled out to users. If the feature starts triggering exceptions, it's very easy to scale back.

Once the beta feature becomes stable, often the feature is removed (along with all logic in the source code guarding this feature).

Similarly, for A/B testing, the feature flagging and logic is removed once a test is deemed to have either passed or failed the A/B experiment.

Like anything else in software, feature flagging can incur technical debt if not properly maintained.

tashoecraft wrote at 2020-10-29 12:02:53:

This is used extensively. X customer wants to test y feature, but z customer is the middle of a large test and refuses to see c feature.

Roll out feature to test client, slowly roll out feature to each client.

Something to wrong? It’s incredibly fast to update the flags.

dmitriid wrote at 2020-10-29 09:44:14:

Feature flags are used for gradual rollout and testing of features. Including, but not limited by, A/B tests, region-locking features, rolling to features to internal users only and so on.

For example, you're developing a new version of the checkout page for your company from scratch (it can be a store selling physical goods, or a subscription service, or anything that requires payment). It means that for a while it will not have feature parity with your existing checkout page.

So first you implement feature parity with, say, German payment options (credit cards and Sofort). Then you set up a feature flag saying "for 5% of German customers display the new checkout", and monitor it. Then you bump it up to 10%, then to 50%.

Meanwhile you're working on accepting payments via Swish in the new checkout in Sweden. Once it's ready, you add a feature flag saying "for 5% Swedish customers display the new checkout" (and in parallel, you're probably already displaying the new checkout to 50% German customers).

And so on.

In their core feature flags are not really more than a glorified if statement, but:

- you want to view them, and handle them in a single place so that you can adjust the various parameters or quickly shut down a feature if it misbehaves

- this single place has to be scalable enough that it survives an influx of customers potentially triggering dozens of feature flags across your software

funkaster wrote at 2020-10-29 14:21:46:

feature flagging allows you to separate code deployment from feature releases. It’s a change in dev methodology/mentally and usually goes hand-in-hand with “trunk-based development” (trunk/master is always stable and you should avoid long lived branches).

a good feature flag service should also allow you to do % rollout to try to de-risk the release of a new feature, some times even auto-closing the feature if some specific metric passes a certain threshold (e.g. dau dropped 10%, number of errors increased x%, etc)

wdb wrote at 2020-10-29 09:44:06:

I wish there were more examples how to use feature flags. How would you test a feature flag e.g. Halloween discount. As this probably involves both front-end and back-end code. The only way I can think off how this can be tested is by making a special new user with this feature flag.

But do you now need to test all possible permutations of the flags combinations? If so, how to determine these permutations? Can imagine you test all possibilities every time??

mynegation wrote at 2020-10-29 12:17:50:

I have an example from a different area. We are developing a batch process that runs multiple stages over multiple hours on a huge cluster producing some kind of numerical results. We also can not deploy to production on a whim, due to regulation. It is impossible to test all developer changes on a full process.

So we put highest risk changes under feature flags/configuration values. If certain things do not work as expected in testing - we disable them with configuration without creating a new build artifact. It is also a common occurrence that another team has to validate numerical results Coming from a certain feature for a while before it is enabled in production.

johnsonk1989 wrote at 2020-10-29 09:13:52:

Had to upvote, been using it for around 6 months, I couldn't imagine starting a project without it now.

_hao wrote at 2020-10-29 10:46:48:

Why would I use this instead of the feature flagging capabilities provided by Azure for example?

dabeeeenster wrote at 2020-10-29 11:09:50:

Hi - thanks for the question! I'm one of the founders.

There are a few options for people when it comes to feature flags. Some options, like Azure, are features of larger platforms, others come at feature flagging from more of an A/B testing angle.

In terms of Bullet Train:

- We focus on feature flags. We're not going to build out features that are not core to that offering. We're not going to build an analytics platform for running AB tests as we think using a dedicated analytics solution makes a lot more sense.

- Our flags can be booleans, strings, ints or floats and can be overridden on a per environment basis.

- We offer flags based on dynamic user segments, percentage splits/rollouts and are about to release multivariate flags with ABN testing capability.

- We have lightweight, low dependency SDKs for the majority of languages and frameworks that don't get in your way.

- You can run our platform yourself, with us, or we can help you run it on-premise. Our architecture is straightforward and can be up and running in a couple of minutes via docker-compose.

- All our dashboard and API code, as well as our SDKs, is open source and BSD-3 licensed.

At the end of the day it depends on what you are looking for, and what tooling you are currently using.

funkaster wrote at 2020-10-29 14:24:10:

I’m curious, what everyone wants to see in a feature flagging service? privacy? (gdpr, caap) %rollout? flexibility on rules?

from my perspective the most important thing would be privacy and ideally no sdk, but I acknowledge that I might be bias...

branding123 wrote at 2020-10-29 07:11:56:

http://www.webdesigntools.us/category/web-design

http://www.webdesignsskills.us/category/blogging

http://www.webdesignskills.us/category/software

http://www.webdesignsskills.us/category/blogging

http://www.webdesignlab.us/category/databases

http://www.webdesigncourses.us/category/ppc-advertising

http://www.viewrealestate.us/category/property-tax

http://www.vehicleenginerring.net/category/luxury-cars

http://www.valleyhome.us/category/appliances

https://www.vacationsplan.us/category/budget-travel

http://www.upperhome.us/category/fencing

http://www.uniquefashion.us/category/indian-fashion

http://www.typesofservice.com/category/coaching

http://www.typesoflaw.org/category/traffic-law

http://www.tripandtouradvice.net/category/camping

http://www.travelvacations.us/category/travel

https://www.travelup.us/category/luxury-cruising

http://www.traveltourism.us/category/ski-resorts

http://www.travelspecial.us/category/adventure-travel

http://www.travelroutes.org/category/vacation-rentals

http://travelroutes.ca/category/boating

https://www.travelpolicies.info/category/luxury-cruising

http://www.travelmark.us/category/hotel-booking

http://www.travelmaps.us/category/budget-travel

http://www.travellingservices.info/category/travel-tips

http://www.travellingpolicy.com/category/vacations

http://www.travellingpolicies.com/category/camping

http://www.travellingpoints.us/category/travel-and-leisure

http://www.travellingedges.com/category/hotel-accommodation

http://www.travellingchoice.org/category/adventure-travel

http://www.travelleisuretips.com/category/budget-travel

http://www.travellabel.net/category/travel-tips

http://www.travelingsafety.org/category/hotel-booking

http://www.travelingsafety.org/category/ski-resorts

http://www.travelingguide.co/category/travel

http://www.travelhabits.org/category/outdoors

http://www.travelguides.us/category/travel

http://www.travelcruise.us/category/adventure-travel

http://www.travelcircle.us/category/budget-travel

http://www.travelbenefits.ca/luxury-cruising/blue-lagoon-tou...

http://www.travelarchives.us/travel-and-leisure/5-should-do-...

http://www.travelandtours.us/adventure-travel/know-sydney-li...

http://www.travelandtour.ca/adventure-travel/some-of-the-bes...

http://www.traveladvice.us/hotels-and-lodging/duffel-bag-a-b...

http://www.toursandtravelideas.com/budget-travel/money-savin...

http://www.topsportsnews.us/cycling/describing-the-sorts-opt...

http://www.toprealestatepoints.com/category/land

http://www.topnewsalert.us/category/crime

https://www.topeducations.us/category/kids-education

http://www.topbusinessanalysis.com/category/business-ideas

branding123 wrote at 2020-10-29 07:13:29:

http://www.todaysbusinessdemand.com/category/e-business

http://www.tipsforhome.org/category/appliances

http://www.thelawandpractice.com/category/attorney

https://www.thefashionstyles.us/category/men-fashion

http://www.termofservices.com/category/coaching

http://www.technologyyouneed.net/category/hardware

http://www.technologyvision.us/category/gadgets

http://www.technologystory.org/category/databases

http://www.technologysolution.us/category/data-recovery

http://www.technologysection.org/category/gaming

http://www.technologyresearch.ca/category/gadgets

http://www.technologypolicy.us/category/graphic-design

http://www.technologypolicy.net/category/networks

http://www.technologyplant.us/category/malware

http://www.technologynetwork.us/category/tech-updates

http://www.technologymagazine.us/category/gadgets-and-gizmos

http://www.technologyimpact.us/data-recovery/money-transfer-...

http://www.technologygrowth.us/category/artificial-intellige...

http://www.technologygadgets.us/category/support-services

http://www.technologygadget.us/category/graphic-design

http://www.technologyflow.us/category/gadgets

http://www.technologydiscover.us/general/hero-ignitor-vs-baj...

http://www.technologycores.org/category/hardware

http://www.technologycodes.us/category/malware

http://www.technologychanging.com/support-services/bandwidth...

http://www.technologycenter.co/security/the-perks-of-gps-tra...

http://www.technologiesclusters.com/category/web-hosting

http://www.technologiescenter.net/category/tech-updates

http://www.technetworks.ca/artificial-intelligence/the-advan...

http://www.techifluence.net/category/software

http://www.techinfluence.net/computers-and-technology/the-fu...

http://www.techanalysis.ca/category/networks

http://www.techalerts.us/category/general

http://www.techadvantages.us/technology/enforcing-standard-o...

http://www.surfshopping.net/category/jewelry

``

http://www.superhometrend.com/category/house-plans

http://www.stylishhomeimprovement.net/category/gardening

http://www.stylishhome.us/category/gardening

http://www.sportsupdate.us/category/baseball

http://www.sportsunion.us/category/boating

http://www.sportstimemagazine.com/category/football

http://www.sportstime.us

http://www.sportspro.us/category/swimming

http://www.sportsninja.net/category/cycling

http://www.sportsgamings.us/category/horse-racing

https://www.sportsfusion.us/category/sports-news

http://www.sportsevents.us/category/fishing

http://www.sportsclubsfitness.com/category/bodybuilding

http://www.sportsatlanta.org/category/badminton

http://www.societyofautomotive.com/category/trucks

http://www.smartpet.us/category/dog

http://www.smartparentingadvices.com/category/parenting

http://www.smarthomevalley.us/category/roofing

http://www.smarthomevalley.us/category

http://www.smartfinancechoice.com/category/debt-consolidatio...

http://www.smartautomotive.org/category

http://www.smartautomotive.org/category/repairs

http://www.homedecorstyle.org/category/kitchen

http://www.smalltripadvisor.com/category/travel

http://www.smallbusinessanalysis.us/category/branding

http://www.simplelaw.us/category/cyber-law

http://www.shoppingtrend.us/category/clothing

http://www.shoppingstyle.us/category/cloth-shopping

http://www.shoppingspecialty.org/category/gifts

http://www.shoppingspecialty.com/category/shopping-experienc...

http://www.shoppingsections.com/category/cosmetics

http://www.shoppingsavings.us/category/toys

http://www.shoppingsales.us/category/shopping

http://www.shoppingproducts.org/category/shopping

http://www.shoppingproduct.us/category/general

http://www.shoppingplan.us/category/shoes-and-footwear

http://www.shoppingplan.info/category/shopping

http://www.shoppingpackers.com/category/shopping

http://www.shoppingoffer.us/category/shopping

http://www.shoppingideas.us/category/online-shopping

http://www.shoppinghabit.us/category/cloth-shopping

http://www.shoppingexperience.us/category/clothing

http://www.shoppingdeal.us/category/appliances

http://www.shoppingdeal.info/category/electronics

http://www.shoppingbrand.us/category/shopping

http://www.shoppingbox.org/category/electronics

http://www.shoppinganywhere.org/category/shopping-cards

http://www.shoppingandstyles.com/category/shopping

http://www.shoppingandstyle.net/category/shopping-experience

http://www.servicesprovider.us/category/counseling-services

http://www.servicespolicy.org/category/general

http://www.servicesplan.us/category/medical-services

http://www.serviceslevel.us/category/emergency-services

http://www.servicesforautomotive.com/category/cars

http://www.servicesfacts.net/category/professional-services

http://www.servicesfactor.us/category/storage-services

http://www.servicesdrive4u.com/category/coaching

http://www.servicescircle.us/category/online-services

http://www.servicesbusinessplans.com/category/career-advice

http://www.servicesalerts.us/category/storage-services

http://www.serviceproviders.us/category/support-and-services

http://www.serviceexperienced.com/category/professional-serv...

http://www.seoservicesland.net/category/software

http://www.seomagazine.us/category/seo

http://www.selfshopping.us/category/shopping

branding123 wrote at 2020-10-29 07:08:13:

The benefits of new technologies are always welcomed with open arms, and VoIP is no exception. This internet-based method of conducting phone calls has a wide range of benefits in terms of quality and reliability whilst also offering.

https://www.business401k.us/category/business-ideas

branding123 wrote at 2020-10-29 07:08:59:

When you are building your custom home, there are so many different features and options to consider that it can simply get overwhelming. Whether you are thinking about expanding your kitchen, creating a his and hers master closet.

http://www.yourhomestyles.net/category/home-improvement

<a title="Home Improvement" href="

http://www.yourhomestyles.net/category/home-improvement">Hom...

Improvement</a>

[url=

http://www.yourhomestyles.net/category/home-improvement]Home

Improvement[/url]

branding123 wrote at 2020-10-29 07:10:53:

One of the best pastimes of summer vacation is spending time on the water with your family. Be it on a lake, the ocean, or even a local river, water-based …

http://www.worldtraveltour.us/category/adventure-travel

http://www.wellhealth.us/category/women-health

http://www.weddingtrend.us/category/weddinghttp://www.weddin...

amelius wrote at 2020-10-29 11:44:14:

The example showing "high_spenders" and conditions like "money_spent >= 100", feels unsettling, and reeks of user-tracking and discrimination.

Can we please stop these patterns?

bengale wrote at 2020-10-29 11:46:55:

This seems like a really odd take. Why would any business not want to identify high value customers?

amelius wrote at 2020-10-29 11:59:40:

Ah, but you're looking from the perspective of the business, not the customer.