Cloudflare Flagship

(developers.cloudflare.com)

73 points | by tjek 2 hours ago

13 comments

  • btown 5 minutes ago
    Never underestimate the power of a zero-network-hop abstraction over f(feature_name, context).

    And context can be extremely tailored to your niche: specific inventory, from a specific supplier, for a specific user of a specific B2B client of a specific business model subtype, who should or shouldn’t see certain features on that specific inventory at certain times.

    When you can write your own logic, and just run this in a tight loop as easily and performantly as you can use a constant, it makes your business incredibly agile. Think some text might change for some customers? Just write the code to make it configurable, and you get tests and flags for free.

    Sadly, that zero-hop setup requires a sophisticated client execution engine, which it doesn’t appear Cloudflare has implemented here. Makes sense for their memory constrained workers, less sense for traditional infrastructure.

    Statsig has an approach here that I quite like:

    > To be able to do this, Server SDKs hold the entire ruleset of your project in memory - a representation of each gate or experiment in JSON. On client SDKs, we evaluate all of the gates/experiments when you call initialize - on our servers.

    https://docs.statsig.com/sdks/how-evaluation-works

    You can also roll your own - just sync your rulesets to a few data structures every few seconds in a background thread and atomically swap the reference to them. Then you just need a CRUD interface over the applicability ruleset dimensions.

    Just be careful to have governance on who can play with which would-be constants. Great power and great responsibility and all that!

  • crabmusket 1 hour ago
    Looking at the docs for their JS SDK, they have this warning:

    > The client provider requires an API token to fetch flag values. This token is not scoped to a single app, so anyone with the token can evaluate flags across all apps in your account. Use the client provider with caution in public-facing applications.

    https://developers.cloudflare.com/flagship/sdk/client-provid...

    Can anyone clarify... why the client SDK, designed to be deployed to browsers, requires caution? Does this mean that any client could send requests with a new targetingKey and observe other users' flags?

    While flags probably shouldn't be critical information, this seems like an interesting design choice.

    • OptionOfT 1 hour ago
      Let's think about it. This is probably something used internally at CloudFlare and someone thought I'd be interesting to make it public.

      There is no way 6 months ago someone at CloudFlare thought it was a good idea to build a competitor to say LaunchDarkly.

      • jasonjmcghee 23 minutes ago
        Hmm not sure I necessarily agree. Cloudflare's strategy has been looking like "the only platform you need" for a while now.

        Their recent features / announcements have been equivalent to:

        (LaunchDarkly)

        Resend, Firecrawl, CrewAI, Helicone, Replicate, Pinecone

        -

        Which like… many companies have a painful procurement process. If all you need is Cloudflare, and prices are within reason- why not use them

      • bg24 17 minutes ago
        Both Cloudflare and Vercel have feature parity. Flags is a feature already in Vercel. While customer-first is a thing, it is also a no-brainer to start with: we use it, Vercel has it, let us build it.
      • wahnfrieden 55 minutes ago
        Care to share why
  • tiffanyh 1 hour ago
    This is nice, but I’m still waiting for this to be delivered (which ironically is probably using Flagship):

    https://blog.cloudflare.com/enterprise-grade-features-for-al...

    —-

    I don’t believe a single enterprise only feature has made its way to lower tier (paid) account yet.

    I’m most interested in:

    https://developers.cloudflare.com/speed/optimization/content...

  • aetherspawn 2 hours ago
    Cloudflare are winning these days, they’re just lacking good fine grained permissions. You still have to make an entirely separate account for prod, which messes up SSO since one domain can only be bound to one account.
    • corvad 1 hour ago
      Their products are cool and I've been happy with them over the years, but their blog right now has had some blunders recently. Also their reliability seems to have been having trouble but does seem better recently.
    • atsaloli 1 hour ago
      Yes! I just opened a support case today asking for more fine grained permissions.
    • wilj 1 hour ago
      This is exactly what stops me from using them for real work. I love their free tier for my hobby stuff.
    • pupppet 1 hour ago
      After years of AWS I gave Cloudflare a whirl and loved the UX but ultimately retreated back due to the same concern. They are so close though..
    • wahnfrieden 54 minutes ago
      Will never use them without prepayment or spending limit options. Insane to be a bug, attack, or misclick away from 6-7 digit invoice
    • teaearlgraycold 1 hour ago
      Just let everyone have access to prod?
      • corvad 1 hour ago
        One account gets compromised and your doomed. A lot of companies even have prod access be a request based system. Most modern security models with zero trust don't let everyone have access to everything, quite the opposite.
      • toomuchtodo 1 hour ago
        Poor access and change management governance.
      • greenchair 1 hour ago
        hooboy that was a good one!
  • glasshug 1 hour ago
    OpenFeature was new to me, neat! Anyone have experience integrating this? https://openfeature.dev
    • Atotalnoob 1 hour ago
      It’s pretty useful. We used it at a previous company. We built a custom backend, but used the spec and SDKs.

      It took like 2 weeks to build a full custom backend. SDKs across languages worked flawlessly (okay, we did find one bug, reported it, and it was fixed within the day)

  • zuzululu 23 minutes ago
    A bit tangent but related: These things I'm never sure if I should be shipping on day one with mobile apps (Flutter in particular): Flagships, bug gathering, A/B testing ?

    I feel strong inclination too but its also way too early before any real users can prove PMF. I've been using Google stuff but wonder if Flagship and perhaps other Cloudflare offerings can help.

    The other side is that again it feels too early for this stuff and I just want to ship something quickly.

    The work ivnvolved

  • ec109685 26 minutes ago
    Missing gradual rollout of feature flag changes themselves. Yes, you can do percentage based rollouts for individual features but still should have ability to canary all changes before they cause an insta-sev.
  • pm90 1 hour ago
    More of this please: essential tools for building modern software must be oss; Im fine with paying for a hosted version but just the benefit of learning one tool and being able to use it everywhere (linux, k8s, python etc) is amazing.
    • isodev 55 minutes ago
      Cloudflare oss?
  • EFLKumo 2 hours ago
    Worth noticing a Vercel equivalent: https://github.com/vercel/flags
  • OsrsNeedsf2P 1 hour ago
    Has anyone struggled to run their own feature flagging service? After root causing slow app starts to be caused by the equivalent offering from Firebase, I've been cautious to use any off the shelf solutions
    • dboreham 1 hour ago
      It's literally a field in your database. I could never fathom why this needs to be an outsourced service never mind an entire company.
      • youngprogrammer 1 hour ago
        It can get complicated quickly if you're actually using it in a production system. At my prev enterprise saas company we had feature flags that could be turned on per customer / per environment (dev, staging, prod) with permission + logging model such that our support team could also toggle flags with history of who turned on what. We also had "per user" feature flags for certain test users at companies and had DSL rules to evaluate the features
  • maxdo 22 minutes ago
    a flagship with no pirates, all fired due to ai.
  • EGreg 2 hours ago
    If anyone is interested, you can implement something like that with a few lines of code on the front end. We expose a function that generates a uniformly-distributed hash that you can use for A/B testing and other uses:

      Q.Data.variant()
    
    https://github.com/Qbix/Q.js/blob/main/src/js/Q.minimal.js#L...

    And on the back end, you'd use it like this:

    https://github.com/Qbix/Platform/blob/main/platform/classes/...

    Essentially, this can support a huge number of "variants" and within each variant you can have N equal segments. That will help you do A/B testing and flipping features on or off.

  • throwaway613746 1 hour ago
    [dead]