Cloudflare Flagship
(developers.cloudflare.com)- Cloudflare Flagship, kodu yeniden dağıtmadan uygulamadaki özelliklerin görünürlüğünü kontrol eden Cloudflare özellik bayrağı hizmetidir
- Bayraklar, hedefleme kuralları ve oran tabanlı rollout ile tanımlanır; Workers yerel binding’i içinden doğrudan değerlendirilebilir
- OpenFeature ile uyumludur ve
@cloudflare/flagshipSDK’sı ile Workers, Node.js ve tarayıcıda bayraklar değerlendirilebilir - Hedefleme; kullanıcı özellikleri, 11 karşılaştırma operatörü, AND/OR gruplama ve sıralı değerlendirmeyi destekler; tutarlı hashing ile değerleri sabit tutar
- Varyasyonlar boolean, string, sayı ve JSON nesnesi destekler; Cloudflare Dashboard’da uygulama bazında oluşturulur, düzenlenir ve silinir
Başlıca özellikler
-
Workers binding
- Binding reference
- Bayraklar, Workers’ın yerel binding’i ile değerlendirilir
- Tip güvenli metotlar ve varsayılan değere otomatik fallback sunar
-
OpenFeature SDK
- View SDK docs
- @cloudflare/flagship OpenFeature provider’ı ile Workers, Node.js ve tarayıcıda bayraklar değerlendirilebilir
- Başka bir bayrak sağlayıcısından geçerken yalnızca tek satırlık yapılandırma değişikliği yeterlidir
-
Hedefleme kuralları
- Learn about targeting
- Kullanıcı özelliklerine göre farklı bayrak değerleri sunar
- Kurallar, 11 karşılaştırma operatörü, mantıksal AND/OR gruplama ve sıralı değerlendirmeyi destekler
-
Oran tabanlı rollout
- Learn about rollouts
- Özellikleri kullanıcı oranına göre kademeli olarak yayına alabilirsiniz
- Tutarlı hashing, aynı kullanıcının her zaman aynı bayrak değerini almasını garanti eder
-
Çok tipli varyasyonlar
- Use Multi-type variations
- Bayrak varyasyonları boolean, string, sayı veya yapılandırılmış JSON nesnesi olabilir
- Nesne varyasyonları kullanıldığında tüm ayar bloğu tek bir bayrak üzerinden aktarılabilir
-
Bayrak yönetimi
- Use Flag management
- Bayraklar Cloudflare Dashboard üzerinden oluşturulabilir, güncellenebilir ve silinebilir
- Bayraklar, projelere veya servislere eşlenen uygulamalar olarak düzenlenir
- İlk özellik bayrağı Get started guide üzerinden oluşturulabilir
1 yorum
Hacker News görüşleri
0 ağ gidiş-dönüşlü bir soyutlamayı küçümsememek gerekir.
f(feature_name, context)üzerinde bağlam; belirli bir envantere, belirli bir tedarikçiye, belirli bir B2B müşterisinin belirli bir kullanıcısına, belirli bir iş modeli alt türüne, hatta belirli bir zaman diliminde gösterilip gösterilmeyeceğine kadar çok ince ayarlanabilirMantığı doğrudan yazıp bunu sıkı döngüler içinde sabitmiş gibi hızlı çalıştırabilirseniz, iş çevikliği ciddi biçimde artar. Bazı müşteriler için metnin değişebileceğini düşünüyorsanız, bunu yapılandırılabilir olacak şekilde kodlayabilirsiniz; testler ve bayraklar da doğal olarak beraberinde gelir
Ancak bu tür 0-hop yapılarda gelişmiş bir istemci yürütme motoru gerekir; Cloudflare'ın burada bunu uygulamış gibi görünmediğini düşünüyorum. Bellek kısıtlı Workers için anlaşılır, ama geleneksel altyapıda daha az ikna edici
Statsig yaklaşımını epey beğeniyorum: “Server SDKs hold the entire ruleset of your project in memory...” yaklaşımını benimsiyor
https://docs.statsig.com/sdks/how-evaluation-works
Bunu kendiniz de yapabilirsiniz. Arka plan iş parçacığında her birkaç saniyede bir kural kümesini birkaç veri yapısına senkronize edip referansı atomik olarak değiştirmek yeterli. Sonrasında sadece uygulanan kural boyutu için bir CRUD arayüzüne ihtiyaç var
Ancak kimlerin hangi sabit adaylarına dokunabileceğine dair yönetişim mutlaka gerekli. Büyük güç büyük sorumluluk getirir
Bana göre özellik bayrakları daha çok trunk tabanlı geliştirmeyle birlikte, QA ortamında özellikleri açmak, üretime henüz çıkarmamak ve PO/PM testini mümkün kılmak içindir. Trunk tabanlı geliştirme, karmaşık dal stratejileri olmadan hızlı ve kolay DevOps sağlar
Buna karşılık uygulama yapılandırması, uygulamanın bir parçasıdır ve iş bağlamına göre uygulamayı özelleştirme alanıdır. Bununla ilgili çerçeveler ya da araçlar var mı bilmiyorum, ama ikisini net biçimde ayırmak gerekir
İşte bu modüler aritmetik + rastgelelik kombinasyonu yüzünden LaunchDarkly gibi araçların birçok dil için SDK sunması gerekti ve benim uğraştığım SDK'ler ilgili dillere hiç iyi uymuyordu. Değerlendirmeyi edge'e itmenin tüm sistemi gereğinden fazla karmaşıklaştırdığını düşünüyorum
Gerçekte arada sırada “bu müşteri için” geçerli olan mevcut bayrak tablosunu yeniden çekmek yeterli oluyor ve çok daha az can sıkıcı. Flipper olduğu için artık bunlarla elle uğraşmak zorunda olmamak güzel
https://www.stigg.io/blog-posts/entitlements-untangled-the-m...
Sözleşmeye bağlı koltuk başı ücretlendirme biraz sert ama yönetilebilir düzeyde
yaldızlı bir Boolean-as-a-service gibi duruyor
Böyle basitleştirirseniz dünyadaki tüm servisleri bits-as-a-service'e indirgemek mümkün. Gerçekte bunların meşru bir iş değeri var ve sunulmaları da karmaşık
Herhangi bir SaaS aracına “excel-as-a-service” diyebilirsiniz; etkisi ancak o kadar olur
JS SDK belgelerinde şu uyarı var: “İstemci provider'ı, bayrak değerlerini almak için bir API token'ına ihtiyaç duyar. Bu token tek bir uygulamayla sınırlı değildir, dolayısıyla token'a sahip olan herkes hesaptaki tüm uygulamaların bayraklarını değerlendirebilir. Herkese açık uygulamalarda dikkatli kullanın”
https://developers.cloudflare.com/flagship/sdk/client-provid...
Tarayıcıya dağıtılmak üzere tasarlanmış bir istemci SDK'sının neden dikkat gerektirdiğini merak ediyorum. Bu, herhangi bir istemcinin yeni bir
targetingKeyile istek gönderip başka kullanıcıların bayraklarını gözlemleyebileceği anlamına mı geliyor?Bayraklar önemli bilgi taşımamalı elbette, ama ilginç bir tasarım tercihi gibi görünüyor
6 ay önce Cloudflare'ın LaunchDarkly rakibi yapmaya ciddi ciddi karar vermiş olması bana pek olası gelmiyor
Bu iyi, ama ironik bir şekilde muhtemelen Flagship kullanılarak sunulacak bu özelliğin çıkmasını hâlâ bekliyorum
https://blog.cloudflare.com/enterprise-grade-features-for-al...
Kurumsala özel özelliklerin alt ücretli hesaplara indiği tek bir örnek bile henüz yok gibi görünüyor
Özellikle ilgilendiğim şey şu:
https://developers.cloudflare.com/speed/optimization/content...
Cloudflare son zamanlarda iyi işler çıkarıyor, ama ayrıntılı yetki yönetimi eksik. Hâlâ üretim ortamı için tamamen ayrı bir hesap oluşturmak gerekiyor ve bir alan adı yalnızca tek bir hesaba bağlı olabildiği için SSO karışıyor
E-posta gönderimi için hâlâ AWS kullanıyorum; Cloudflare tarafında da gelirse güzel olur
OpenFeature’ı ilk kez görüyorum, harika görünüyor. Bunu entegre etme deneyimi olan var mı? https://openfeature.dev
Şeffaf olmak gerekirse Flagsmith’in CTO’suyum. Son birkaç yılda OpenFeature benimsenmesinde net bir artış eğrisi gördüm. Eskiden müşterilere denemelerini biz önerirdik, şimdi ise müşteriler OpenFeature’ı gereksinim olarak getiriyor
Artık üretici desteği de oldukça olgun ve neredeyse tüm dilleri kapsıyor. Yeni bir servise özellik bayrakları entegre ediyorsanız ya da kendi çözümünüzden üçüncü taraf bir çözüme geçmeyi düşünüyorsanız OpenFeature’ı tavsiye ederim
Tamamen özel bir backend oluşturmak yaklaşık 2 hafta sürdü. Farklı diller için SDK’lar da sorunsuz çalıştı. Bir hata buldum ama bildirince aynı gün düzeltildi
Özellik bayraklarını pek anlayamıyorum. Veritabanındaki bir Boolean’dan temelde farkı ne?
Kendi sistemini yapan ekipler genelde ürün yönetimi, pazarlama ve satışın daha karmaşık kurallarla hedefleme yapmak istemesiyle işlerin hızla büyüdüğünü görüyor
Genel zorluk seviyesi açısından özellikle zor bir problem değil, ama kapsamı büyük. Başta görünmeyen çok sayıda özellik gerekiyor
Özellik bayrakları özünde bir yetkilendirme sistemine daha yakın sayılabilir. Belirli kullanıcıların belirli özelliklere erişmesine izin verirsiniz ve yetkilendirme sistemiyle uğraşmış olan herkes grup üyeliği, hiyerarşik gruplar, roller, ACL’ler gibi şeylerin ne kadar karmaşıklaşabildiğini bilir. Bunlar, özellik bayrağı sistemindeki çeşitli hedefleme kurallarına benzer
Cloudflare da içeride yeni özellikleri ya da build’leri önce ücretsiz müşterilere verip, bir stabilizasyon döneminden sonra daha büyük müşterilere kademeli olarak genişletmek için kullanıyor
Özellik bayrakları bir tür fuzz testi gibi rastgele de açılabilir. Bunu yalnızca “yeni bir şey” olarak değil, “davranış değişikliği” olarak da düşünebilirsiniz
Bunu tüm istemcilerin üstünde duran bir Boolean gibi düşünebilirsiniz, ama genelde uygulama böyle olmaz
Özellik bayraklarının asıl çekiciliği, aylar ve çok sayıda commit gerektiren büyük bir özelliğin bile ana branch üzerinde geliştirilebilmesini sağlamasıdır. Benim için daha hafif ve yinelemeli bir geliştirme süreci yaratıyor
Bu, ayrı branch’ler sürdürmeye ve büyük geliştirmeler sırasındaki özellikler için ayrı dağıtım hedefleri bulundurmaya kıyasla daha iyi
Özellik bayrakları çoğu zaman gereğinden fazla mühendislik ürünü hâline getiriliyor
Bir yapılandırma değerine, veritabanı değerine ya da ortam değişkenine bakıp dinamik olarak bir yola ya da diğerine gitmeniz yeterli
Hepsi bu. Özellikleri küçük yapmalı ya da kodu üst seviyede kolayca açılıp kapatılabilecek şekilde refactor etmelisiniz
Bunu kolayca yapamıyorsanız, mikroservisler arasında özellik etkinleştirmesini koordine etmek için karmaşık özellik bayrağı uygulamaları yardımcı olabilir
Çok sayıda özelliğiniz varsa bir dashboard da faydalı olabilir
Ama bence bunların ikisi de özellik bayraklarından kaçınmanız gerektiğine dair güçlü işaretlerdir. Özellik bayrakları yerel ve geçici değişiklikler için daha uygundur; aksi hâlde karmaşıklık birikir ve yönetimiyle bakımı zorlaşır
Tabii kullanıcı gelir eşiğini geçti diye ya da sınırı aştı diye özelliği kaybetmesini istemezsiniz; dolayısıyla bir tür izleme uygulaması gerekir. Analitik ve hata takibi de özellik bayrağı servisiyle iletişim kurmak zorundadır
Bu roket bilimi değil, ama ortam değişkenlerinden kesinlikle daha karmaşık
Cloudflare daha önce mevcutta başka sağlayıcıların kullanılması gereken bir şeyi sunmaya başladığında her zaman heyecan verici oluyor. Sağlam olacağına dair bir güven var
Function tarafında Statsig kullandık. Başta tek bir üründe iki kişi kullanmaya başlamıştı, ancak 12 ay içinde ürün metninin ve rollout’ların önemli bir kısmı Statsig tarafından çalışır hale geldi
Statsig’de istemci tarafı değerlendirme var; bu sayede Statsig sunucuları kullanıcı verilerini işlemeden de dahili kavramlara dayalı olarak kurallar ve rollout’lar yazılabiliyor
Umarım Cloudflare burada sofistike bir ürün ortaya koyar da bundan sonra başka bir ürün kullanmak zorunda kalmayız
Teknik ayrıntıları çok bilmeyen sıradan bir kullanıcıyım ama Cloudflare bana görece kullanımı kolay geliyor. Umarım böyle devam eder