4 ms·
Show HN: Canarybase – Remove feature flag code from your apps
- andriosr 7y agoHi! 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 7y agoWhen you scroll down the site, “Intelligent” is misspelled as “Inteligent”
- milankragujevic 7y agoDatabase fileds, too.
- andriosr 7y agoThanks! Fixing it.
- andriosr 7y agoThanks! Fixing it.
- stevekemp 7y agoNo 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 7y agoFirst 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)
- stevekemp 7y agoMandating the use of Envoy is a pretty big limitation, definitely something you should document. (Right now stuff I touch tends to use haproxy, varnish, nginx, or Amazon ELB for load-balancing / proxying /routing. No envoy at all.)
- andriosr 7y agowow, a ton of good stuff, lets dive in: Im going to make it clearer about the envoy dependency. I briefly mention mesh network at the bottom, I thought people using service meshes would understand. Definitely adding your feedback. The core belief of this idea is that many people are going to start using sidecars in their apps, and with solutions like Kubernetes, running 30 versions from the same app should not be a problem (I do it at work). Im pretty sure the sidecar pattern (service mesh in the buzz word language) is going to be bigger than Docker and Kubernetes, as it allows for even very old code to interact with modern services by using the sidecar.
- lonelappde 7y agoSo 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?
- codegladiator 7y agoHate 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 7y agoSorry 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 7y agoThis 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 7y agoThat’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 7y agoGreat! 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 7y agoDefinitely! Thank you.
- creshal 7y agoWhat? How? Why?
- andriosr 7y ago> 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.
- lonelappde 7y agoThis seems like satire. Whizzy animation page with multiple email signup requests, with no example or explanation except for buzzword soup.
- andriosr 7y agoSorry 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.