Kullanıcı: freeman
freeman
30.06.2021 15:39
Feature toggle (ayrıca feature switch, feature flag, feature gate, feature flipper, conditional feature adıyla anıldığı da olur) bir yazılım geliştirme tekniğidir. Özellik geçişi anlamına gelir. Bu yöntem, kaynak koda ekleyeceğiniz yazılımsal özelliklerin (*: feature branches) geliştirmesi, testleri (*: software testing) , bakımı, ve onarımı sırasında kullanılabilecek alternatif bir yol önerir (*: software release life cycle) . Böylece henüz yayınlamak için hazır olmayan özellikler bile test amacıyla gerçek koda eklenebilir. Bir özellik geçişi, ilgili olduğu özelliği, çalışma anında (*: runtime) gizlemek, aktive etmek veya devre dışı bırakmak için kullanılabilir. Örneğin bir yazılım geliştirici, geliştirdiği bir özelliği sadece test için etkin kıldığında kendisi hariç diğer kişilerin bu özelliği görmesini engelleyebilir.

Sık sık yeni sürüm ve dağıtımlar yayınlamak (*: continuous deployment) geliştiricilerin yazdıkları kod ile ilgili hızlıca geribildirim almalarını sağlar. Bu nedenle mümkün olduğunca çabuk ve sık bir şekilde yeni özellikler eklenmelidir. Özellik geçişleri bu sürecin içine alternatifler ilave edebilmenizi sağlar. Bu nedenle kullanıcı ilgisinin sıcak tutulması gereken (*: continuous delivery) yazılımlarda özellik geçişleri, kullanması neredeyse elzem bir tekniktir.

Bu teknik, yazılım geliştiricilerin, ürünlerinin henüz tamamlamadıkları özelliklerini içeren sürümlerini (*: version) yayınlayabilmesini sağlar. Henüz bitmemiş durumdaki özellikler gizli olacağı için kullanıcı ara yüzünde (*: user interface) görünmezler. Böylece onlarca ufak özellik yükseltmesi, herhangi bir kalıcı sürüme geçmeye ve sürüm birleştirme külfetlerine gerek kalmadan yayınlanabilir. Özellik geçişleri daha kısa yazılım entegrasyon aşamalarına izin verebilir. Proje üzerinde çalışan bir ekip henüz tamamlamadığı özelliklere ait kodları da projeye dahil ederek geliştirme sürecini hızlandırmak için bu tekniği kullanabilir.

Uygulama


Özellik geçişleri aslında koddaki şartlı ifadelerde kullanılacak basit değişkenlerdir. Böylece bu koşullu kod bloğu özellik geçiş değişkenindeki değere göre aktif veya pasif hale geçebilir. Pasif hale getirilmiş bir kod bloğu ise, o bloğu yorum satırı haline dönüştürmek gibidir. Böylece geliştirici, henüz yayınlamak için hazır olmayan özellikleri bypass ederek yazılımın akışının normal devam edebilmesini sağlayabilir.

Özellik geçişlerinin ana kullanımı, sürüm derlemesinden önceki son anda yazılımdaki değişiklikleri birleştirirken ortaya çıkabilecek çakışmayı önlemektir. Ancak bu sefer de toggle debt (geçiş borcu) olayına yol açabilir. Geçiş borcu, bir özellik kalıcı olarak açıldıktan ve ek yük ürettikten sonra yazılımda bulunan ölü kod nedeniyle ortaya çıkar. Kodun bu kısmı, diğer kısımları rahatsız etmemek için dikkatlice çıkarılmalıdır.

İki ana özellik geçişi türü vardır. Biri, geliştiricinin çalışmasına bağlı olarak bir ürün sürümünden önce tutmayı veya kaldırmayı belirlediği bir sürüm geçişidir. Diğeri, eski koda kıyasla farklı bir kullanımı karşıladığı için tutulan bir geçiştir.

Özellik geçişleri aşağıdaki senaryolarda kullanılabilir:
  • Bir uygulamaya yeni bir özellik ekleme.
  • Bir uygulamadaki mevcut bir özelliği geliştirme.
  • Bir özelliği gizleme veya devre dışı bırakma.
  • Bir arayüzü genişletme.


Özellik geçişleri şu şekilde saklanabilir:
  • Bir veritabanında satırlar halinde
  • Bir yapılandırma dosyasındaki girdiler şeklinde
  • Harici bir özellik bayrakları (feature flags) hizmetinde


Özellik Grupları


Özellik grupları, birlikte çalışan özellik geçişlerinden oluşur. Böylece geliştirici, tek tek uğraşmadan bir grup özelliği tek seferde kolayca düzenleyebilir.

Kanarya Sürümü


Özellik bayraklarının bir başka yararı da kanarya lansmanları yapabilmenizdir. Bir kanarya sürümü, geliştiricilere ürünlerinin önce küçük bir kullanıcı grubu tarafından aşamalı olarak test edilebilmesini sağlar. Bir özelliğin performansı tatmin edici değilse, herhangi bir olumsuz etki olmadan veya potansiyel müşterilerin tamamını aynı anda mutsuz etmeksizin geri alınabilir.

Büyük bir yeniliği ürüne pat diye yerleştirip bunu da özellik geçişi tekniği ile kontrol altında tutmaya çalışmak en son çareniz olsun. Özellikleri bölebildiğiniz kadar ufak parçalara ayırıp bunları yayınladığınız ürüne yerleştirirseniz başka problemlere neden olmadan güvenli sürümler üretebilirsiniz. Martin Fowler


Özellik geçişleri, Flickr, Disqus, Etsy, reddit, Gmail ve Netflix, gibi birçok büyük web sitesinin yanı sıra Google Chrome Canary gibi yazılımlar tarafından kullanılmaktadır.

#yazılım #programlama

Rastgele Başlıklar

soğan keserken gözlerin yanması

Soğan keserken neden gözlerimiz yaşarır?Soğan kesmek aynı zamanda acı çekerek işkence haline dönüşebiliyor. Bıçak ile soğanı doğrarken daha tamamını bile kesmeden gözlerimizden yaş akmaya başlıyor. Bunun sorumlusu iki kimyasal bileşenin . . .

göreceli konum

ÖSYM'nin bazen özel konum da diyebildiği coğrafi konumlardan biridir.Mesela aynı anda iki farklı coğrafi konumun durumu söz konusu ediliyorsa orada göreceli (özel) konumdan söz edilebilir.#coğrafya

come up with

ing. Bir fiildir. Ayrıca phrasal verbtüründe bir sözcük bileşimidir. Ortaya atmak, ileri sürmek, öne sürmek, ulaşmak ve yetişmek gibi anlamlara gelir.#ingilizce

javascript promise

Javascript'te oldukça sık kullanılan callbackolgusuna alternatif olarak geliştirilmiş bir kodlamatekniği sağlayan mekanizma, sınıftır.callback güzeldir, hoştur ama girift bir stili vardır. Genellikle pek çok callback'i peş peşe kullanmak zorunda kalırız. Bu . . .

makine kodu

İşlemciveya mikro denetleyicigibi içinde komut setibarındıran ve bu komutları işleme yeteneği olan entegrelerin çalıştırabileceği kodlardır. Bu kodlar da genellikle 8 bituzunlukta olurlar.Hangi programlama dilini kullanırsanız kullanın (assembly, c++, javavs.) hepsi . . .

takip edilesi youtube kanalları

İlginç bilgiler veren, ilginç uğraşlar sergileyen kanallar bütünüdür. Kendi takip listemi paylaşarak youtube'a dadanan vatandaşlarımız için bir amme hizmetinde bulunmak isterim. İşte o liste:F1DentsBu İngiliz abimiz her tür aracın göçüğünü . . .