Cloudflare Flagship
(developers.cloudflare.com)- Cloudflare Flagship ist Cloudflares Feature-Flag-Service zur Steuerung der Funktionsfreigabe von Anwendungen ohne erneute Code-Bereitstellung
- Flags werden über Targeting-Regeln und prozentbasierte Rollouts definiert und können direkt in nativen Workers-Bindings ausgewertet werden
- Kompatibel mit OpenFeature; mit dem SDK @cloudflare/flagship lassen sich Flags in Workers, Node.js und Browsern auswerten
- Das Targeting unterstützt Benutzereigenschaften, 11 Vergleichsoperatoren, AND/OR-Gruppierung, sequenzielle Auswertung und behält Werte per konsistentem Hashing bei
- Varianten unterstützen Boolesche Werte, Strings, Zahlen und JSON-Objekte und werden pro App im Cloudflare-Dashboard erstellt, geändert und gelöscht
Hauptfunktionen
-
Workers-Binding
- Binding reference
- Wertet Flags über das native Binding von Workers aus
- Bietet typsichere Methoden und automatischen Fallback auf Standardwerte
-
OpenFeature SDK
- View SDK docs
- Mit dem OpenFeature-Provider @cloudflare/flagship lassen sich Flags in Workers, Node.js und Browsern auswerten
- Beim Wechsel von einem anderen Flag-Anbieter muss nur eine Konfigurationszeile geändert werden
-
Targeting-Regeln
- Learn about targeting
- Liefert unterschiedliche Flag-Werte abhängig von Benutzereigenschaften
- Regeln unterstützen 11 Vergleichsoperatoren, logische AND/OR-Gruppierung und sequenzielle Auswertung
-
Prozentbasierte Rollouts
- Learn about rollouts
- Funktionen können schrittweise für einen bestimmten Benutzeranteil eingeführt werden
- Konsistentes Hashing stellt sicher, dass derselbe Benutzer immer denselben Flag-Wert erhält
-
Varianten mit mehreren Typen
- Use Multi-type variations
- Flag-Varianten können Boolesche Werte, Strings, Zahlen oder strukturierte JSON-Objekte sein
- Mit Objektvarianten kann ein ganzer Konfigurationsblock über ein einzelnes Flag übergeben werden
-
Flag-Verwaltung
- Use Flag management
- Flags können im Cloudflare-Dashboard erstellt, aktualisiert und gelöscht werden
- Flags werden als Apps organisiert, die Projekten oder Services zugeordnet sind
- Das erste Feature-Flag kann im Get started guide erstellt werden
1 Kommentare
Hacker-News-Kommentare
Abstraktionen mit 0 Netzwerk-Roundtrips sollte man nicht unterschätzen. Auf
f(feature_name, context)kann der Kontext sehr fein abgestimmt werden, bis hin zur Sichtbarkeit für einen bestimmten Lagerbestand, einen bestimmten Lieferanten, einen bestimmten Nutzer eines bestimmten B2B-Kunden, einen bestimmten Untertyp des Geschäftsmodells und eine bestimmte TageszeitWenn man die Logik direkt schreiben und in einer tight loop so schnell wie Konstanten ausführen kann, steigt die geschäftliche Agilität enorm. Wenn man denkt, dass sich Formulierungen für einige Kunden ändern könnten, kann man es als konfigurierbaren Code anlegen, und Tests sowie Flags folgen dann ganz natürlich
Allerdings braucht so eine 0-Hop-Konfiguration eine ausgefeilte Client-Ausführungs-Engine, und es wirkt nicht so, als hätte Cloudflare das hier implementiert. Bei speicherbeschränkten Workers ist das nachvollziehbar, in traditioneller Infrastruktur aber weniger
Der Ansatz von Statsig gefällt mir ziemlich gut: „Server SDKs hold the entire ruleset of your project in memory...“
https://docs.statsig.com/sdks/how-evaluation-works
Man kann das auch selbst bauen. Ein Hintergrund-Thread synchronisiert alle paar Sekunden das Regelwerk in einige Datenstrukturen und tauscht Referenzen atomar aus. Danach braucht man nur noch eine CRUD-Schnittstelle für die Dimensionen der anwendbaren Regeln
Allerdings braucht man unbedingt Governance dafür, wer welche Kandidaten für Konstanten anfassen darf. Mit großer Macht kommt große Verantwortung
Ich sehe Feature Flags eher im Zusammenspiel mit trunk-basierter Entwicklung: Features in QA-Umgebungen aktivieren, aber noch nicht in Produktion ausrollen, und so Tests durch PO/PM ermöglichen. Trunk-basierte Entwicklung erlaubt schnelles und einfaches DevOps ohne komplexe Branching-Strategien
Anwendungskonfiguration dagegen ist Teil der Anwendung und der Bereich, in dem die App an den geschäftlichen Kontext angepasst wird. Ich weiß nicht, ob es dafür relevante Frameworks oder Tools gibt, aber beides sollte klar getrennt werden
Wegen dieser Modulo+Zufalls-Kombination mussten Tools wie LaunchDarkly SDKs für viele Sprachen bereitstellen, und die SDKs, mit denen ich arbeiten musste, passten überhaupt nicht gut zur jeweiligen Sprache. Dadurch, dass die Auswertung an den Edge verlagert wurde, ist das Gesamtsystem meiner Meinung nach unnötig komplex geworden
In der Praxis reicht es völlig, gelegentlich die aktuelle Flag-Tabelle „für diesen Kunden“ erneut abzurufen, und das ist viel weniger lästig. Gut, dass es Flipper gibt, sodass man sich darum nicht mehr selbst kümmern muss
https://www.stigg.io/blog-posts/entitlements-untangled-the-m...
Vertraglich ist die Abrechnung pro Sitz etwas happig, aber noch tragbar
Wirkt wie vergoldetes Boolean-as-a-service
Wenn man es so vereinfacht, lässt sich am Ende jeder Dienst der Welt auf bits-as-a-service reduzieren. In Wirklichkeit steckt darin legitimer geschäftlicher Wert, und auch die Bereitstellung ist komplex
Jedes SaaS-Tool könnte man als „excel-as-a-service“ bezeichnen, und das ist ungefähr genauso aussagekräftig
In den JS-SDK-Dokumenten steht folgende Warnung: „Der Client-Provider benötigt ein API-Token, um Flag-Werte abzurufen. Dieses Token ist nicht auf eine einzelne App beschränkt, daher kann jeder mit dem Token die Flags aller Apps im Konto auswerten. In öffentlichen Anwendungen mit Vorsicht verwenden.“
https://developers.cloudflare.com/flagship/sdk/client-provid...
Ich frage mich, warum ein Client SDK, das für den Einsatz im Browser gedacht ist, so eine Warnung braucht. Bedeutet das, dass irgendein Client Anfragen mit einem neuen
targetingKeysenden und so die Flags anderer Nutzer beobachten kann?Flags sollten natürlich keine sensiblen Informationen enthalten, aber es wirkt wie eine interessante Designentscheidung
Es wirkt nicht so, als hätte Cloudflare vor sechs Monaten ernsthaft entschieden, einen LaunchDarkly-Konkurrenten zu bauen
Das ist gut, aber ironischerweise warte ich gerade noch darauf, dass genau diese Funktion erscheint, die vermutlich über Flagship angeboten wird
https://blog.cloudflare.com/enterprise-grade-features-for-al...
Es scheint noch keinen einzigen Fall zu geben, in dem eine reine Enterprise-Funktion in niedrigere Bezahlkonten heruntergereicht wurde
Besonders interessiert mich das hier:
https://developers.cloudflare.com/speed/optimization/content...
Cloudflare macht im Moment vieles richtig, aber es fehlt an feingranularer Rechteverwaltung. Man muss immer noch komplett getrennte Konten für Produktionsumgebungen anlegen, und weil eine Domain nur an ein einziges Konto gebunden sein kann, gerät SSO durcheinander
Für den E-Mail-Versand nutze ich noch AWS, daher wäre es schön, wenn es dafür etwas von Cloudflare gäbe
Von OpenFeature höre ich zum ersten Mal, sieht cool aus. Hat jemand Erfahrung mit der Integration? https://openfeature.dev
Der Transparenz halber: Ich bin CTO von Flagsmith. In den letzten Jahren habe ich bei der Einführung von OpenFeature eine klar steigende Kurve gesehen. Früher haben wir unseren Kunden empfohlen, es auszuprobieren, inzwischen kommen Kunden mit OpenFeature als Anforderung zu uns
Der Vendor-Support ist inzwischen ziemlich ausgereift und deckt fast alle Sprachen ab. Wenn du Feature Flags in einen neuen Service integrieren oder von einer Eigenimplementierung auf eine Drittanbieterlösung umsteigen willst, würde ich OpenFeature empfehlen
Ein vollständig eigenes Backend hat ungefähr zwei Wochen gedauert. Die SDKs für mehrere Sprachen haben problemlos funktioniert. Ich habe zwar einen Bug gefunden, aber nachdem ich ihn gemeldet hatte, wurde er noch am selben Tag behoben
Ich verstehe Feature Flags nicht wirklich. Was unterscheidet sie grundsätzlich von einem Boolean in der Datenbank?
Teams mit Eigenbau-Lösungen erleben meist, dass das Problem schnell wächst, sobald Produktmanagement, Marketing oder Vertrieb komplexeres Targeting wollen
Insgesamt ist es kein besonders schwieriges Problem, aber ein großes. Man braucht am Anfang viele unsichtbare Funktionen
Feature Flags sind im Kern eher mit einem Berechtigungssystem verwandt. Bestimmte Nutzer bekommen Zugriff auf bestimmte Funktionen, und jeder, der schon einmal mit Berechtigungssystemen zu tun hatte, weiß, wie schnell Gruppenmitgliedschaften, hierarchische Gruppen, Rollen, ACLs usw. komplex werden. Diese Elemente ähneln den verschiedenen Targeting-Regeln in Feature-Flag-Systemen
Cloudflare nutzt sie intern auch, um neue Funktionen oder Builds zuerst an kostenlose Kunden auszurollen und sie nach einer Stabilisierungsphase schrittweise auf größere Kunden auszuweiten
Feature Flags können auch quasi wie eine Form von Fuzz-Testing zufällig aktiviert werden. Denk also nicht nur an etwas „Neues“, sondern auch an eine „Verhaltensänderung“
Man kann es sich zwar als Boolean über allen Clients vorstellen, aber so wird es normalerweise nicht implementiert
Der Hauptvorteil von Feature Flags ist, dass man auch an großen Funktionen, die Monate und viele Commits brauchen, direkt im Main-Branch arbeiten kann. Für mich führt das zu einem leichteren, iterativeren Entwicklungsprozess
Im Gegensatz dazu steht die Pflege separater Branches und eigener Deployment-Ziele für Funktionen, die noch in größerer Entwicklung sind
Feature Flags sind oft übermäßig overengineert
Man prüft einen Konfigurationswert, einen Datenbankwert oder eine Umgebungsvariable und geht dann dynamisch den einen oder den anderen Pfad
Mehr ist es nicht. Man sollte Funktionen klein halten oder den Code so refaktorieren, dass sie sich auf höherer Ebene leicht umschalten lassen
Wenn das nicht so einfach geht, kann eine komplexe Feature-Flag-Implementierung helfen, um die Aktivierung von Funktionen zwischen Microservices zu koordinieren
Wenn es viele Funktionen gibt, kann auch ein Dashboard nützlich sein
Beides ist für mich aber ein starkes Signal, dass man Feature Flags eher vermeiden sollte. Sie eignen sich besser für lokale und temporäre Änderungen; sonst sammelt sich Komplexität an, die Verwaltung und Wartung erschwert
Natürlich möchte man nicht, dass Nutzer die Funktion wieder verlieren, nur weil sie eine Umsatzschwelle überschreiten oder eine Grenze überqueren, also braucht man irgendeine Form von Tracking-Implementierung. Auch Analyse- und Fehlerverfolgungssysteme müssen mit dem Feature-Flag-Service kommunizieren
Es ist keine Raketenwissenschaft, aber definitiv komplexer als eine Umgebungsvariable
Es ist immer spannend, wenn Cloudflare anfängt, etwas anzubieten, wofür man bisher andere Anbieter brauchte. Man vertraut darauf, dass es solide sein wird
Bei Function haben wir Statsig genutzt. Anfangs wurde es in einem Produkt von zwei Personen verwendet, aber innerhalb von 12 Monaten lief ein großer Teil der Produkttexte und Rollouts über Statsig
Statsig bietet clientseitige Auswertung, sodass man Regeln und Rollouts auf Basis interner Konzepte schreiben kann, ohne dass die Statsig-Server Nutzerdaten verarbeiten müssen
Hoffentlich baut Cloudflare hier ein ausgereiftes Produkt, sodass man künftig keine anderen Produkte mehr verwenden muss
Ich bin ein ganz normaler Nutzer und kenne mich mit den technischen Details nicht besonders aus, aber Cloudflare wirkt auf mich vergleichsweise einfach zu benutzen. Hoffentlich machen sie weiter so