
Show HN: Canarybase – Remove feature flag code from your apps - andriosr
https://canarybase.com
======
stevekemp
No clear idea of how it works; how do I use this in my PHP-site? My golang
server?

You mention routes does that mean it only works with /api/v2/xxx-style
services?

Finally requiring an email for a demo is a hard-pass, especially with so few
details.

~~~
andriosr
First version is going to be for your Golang server.

The routes are anything doable in Envoy, I currently use HTTP headers, but can
be URI as well, for instance:

You have a container running version 1.0.0 of you app. You deploy a second
container with version 1.0.1. We create a rule in Envoy saying that any
request with the HTTP header ‘X-version: 1.0.1’ should go to the second
container. Anything else continues to work normally.

Envoy supports a lot of http attributes, also works with GRPC, and support for
other TCP protocols are coming.

Also, there is Envoy mobile, which is going to enable these rules to be create
at customer’s mobile apps. No plans for web tough :/

Lastly, it means you have to be running Envoy as a sidecar for your apps,
which I believe most people will do in the conning years.

(Sorry abou the e-mail, I can demo you what I have as of now, that is why I
ask for it)

~~~
lonelappde
So I need m^n spearate deployments for n m-valued flags? Wow.

What _problem_ does this solve? What's so wrong with 'if' statements that
makes and external routing engine and a zoo of deployments (and the attendant
load-balancing hassle) better?

~~~
andriosr
Yes, that's a lot of deployments, but you can't release software in a safer
way.

Let's say you have 500 containers running version A of your app. Now you start
to rollout version B, by doing a gradual rollout, you wait for containers with
version B to get up before shutting down version A. After 100% of traffic is
going to version B, you now start to toggle the new feature using code flags.

Now: what happens if you find a bug after rolling out 300 containers? How fast
can you go back to version A? That is the point, you can't assure no bugs are
introduced by using code flags, and the rollback process is pretty slow.

------
andriosr
Hi!

I never liked adding toggle code to the apps I write, and after some time
using Istio at work, I realized that we can accomplish the same effect by
using routing rules in sidecar proxies.

Istio is pretty early and there are no good tools to leverage its full
potential, let alone using its routing rules for feature flagging.

I built a visualization for the routes in the service mesh in a couple of days
and the people who saw it were pretty happy. I am now working on the creation
of flags, where routes are going to be created in the sidecar of each service
involved in the feature.

Let me know what you thing, any feedback will be much appreciated!

~~~
qzx_pierri
When you scroll down the site, “Intelligent” is misspelled as “Inteligent”

~~~
milankragujevic
Database _fileds_ , too.

~~~
andriosr
Thanks! Fixing it.

------
codegladiator
Hate these Show HNs without a show.

And its not "Request Demo".... its just submit your email. How do i fall for
it every time.

~~~
andriosr
Sorry about the e-mail, I can demo you what I have as of now, that is why I
ask for it.

It’s pretty early, I’m going to improve the copy from the feedback received,
thanks!

------
vortico
This doesn't make any sense. What's so hard about

    
    
        if (CONFIG.registerEnabled) {
            ...
        }
    

Surely there are harder things when programming a web app... like appending to
a list or generating a random number.

~~~
andriosr
That’s great that it doesn’t bother you. Curious to know more about how your
team organize around managing the flags.

There are a couple of things that bugs me about this:

1\. Having a process in place to remove features already validated. It can be
fast, but it’s time that could be invested in other things, like improving
design, refactoring, etc.

2\. Where is the ‘CONGIG’ stored? How do you change/swap them? The code piece
might be easy, but changing an environment variable in production at scale?
You better have gradual rollout of such config and a rollback strategy. Same
things applies if you are relying on an external config server.

Any further data on how you do it will be great!

~~~
vortico
Great! Now take what you've told me, and put it in some form on your website.
That will help people in the future know the details of the service you're
offering. Perhaps even elaborate more on 1) who will find your service useful
and 2) the solution you propose and how much you charge for it.

~~~
andriosr
Definitely! Thank you.

------
lonelappde
This seems like satire. Whizzy animation page with multiple email signup
requests, with no example or explanation except for buzzword soup.

~~~
andriosr
Sorry about the lack of data, this is a pretty early version of the landing
page I wanted to share and get feedback.

Let me know if you are interested in the demo, I can show you the product.

As I mentioned, its early, so I didn't put the time to build self-service
signups and other things that would allow you to jump into the app.

------
creshal
What? How? Why?

~~~
andriosr
> What?

Feature Flags without writing it in your code.

> How?

Pushing flags to the network layer, leveraging modern networking services.

> Why?

Let you focus on writing business code instead of spend time writing and
removing feature flag code.

